mirror of
https://github.com/netbirdio/FreeBSD-ports.git
synced 2026-05-22 18:42:42 -07:00
sysutils/mmc-utils: Update to 20230209 version
This loops back some local fixes and enhancements but also brings initial support for writing EXT_CSD values and GEN_CMD (CMD56) read support, both for vendor-specific bits. Also: - Use more up-to-date location for WWW and pkg-descr. - Take back port. Approved by: netchild
This commit is contained in:
@@ -1,18 +1,18 @@
|
||||
PORTNAME= mmc-utils
|
||||
DISTVERSION= 20211202
|
||||
DISTVERSION= 20230209
|
||||
DISTVERSIONSUFFIX= -${MMC_GITSHASH}
|
||||
CATEGORIES= sysutils
|
||||
MASTER_SITES= https://git.kernel.org/pub/scm/utils/mmc/mmc-utils.git/snapshot/${MMC_GITHASH}${EXTRACT_SUFX}?dummy=/
|
||||
|
||||
MAINTAINER= ports@FreeBSD.org
|
||||
MAINTAINER= marius@FreeBSD.org
|
||||
COMMENT= Userspace tools for MMC/SD devices
|
||||
WWW= https://www.kernel.org/doc/Documentation/mmc/mmc-tools.txt
|
||||
WWW= https://www.kernel.org/doc/html/latest/driver-api/mmc/mmc-tools.html
|
||||
|
||||
LICENSE= BSD3CLAUSE GPLv2
|
||||
LICENSE_COMB= multi
|
||||
|
||||
IGNORE_DragonFly= only supported on FreeBSD
|
||||
MMC_GITHASH= a1b233c2a31baa5b77cb67c0c3be4767be86f727
|
||||
MMC_GITHASH= d4c2910981ff99b983734426dfa99632fb81ac6b
|
||||
MMC_GITSHASH= ${MMC_GITHASH:C/^(........).*/\1/}
|
||||
PLIST_FILES= man/man1/mmc.1.gz sbin/mmc
|
||||
USES= gmake
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
TIMESTAMP = 1639924509
|
||||
SHA256 (mmc-utils-20211202-a1b233c2.tar.gz) = fb275b57353bb53ff97d9ba4716928ed159341a1e1539f6face40bc63b39e674
|
||||
SIZE (mmc-utils-20211202-a1b233c2.tar.gz) = 47220
|
||||
TIMESTAMP = 1676241599
|
||||
SHA256 (mmc-utils-20230209-d4c29109.tar.gz) = ba1414aaa31d87f0c37b6a8ddf6da67af4776a2e6b05c165d4d6d53294c7a628
|
||||
SIZE (mmc-utils-20230209-d4c29109.tar.gz) = 50506
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
--- man/mmc.1.orig 2021-12-18 19:59:21 UTC
|
||||
+++ man/mmc.1
|
||||
@@ -30,21 +30,24 @@ This sets the eMMC to be write-protected until next bo
|
||||
Set the eMMC data sector size to 4KB by disabling emulation on
|
||||
<device>.
|
||||
.TP
|
||||
-.BR "gp create <-y|-n> <length KiB> <partition> <enh_attr> <ext_attr> <device>"
|
||||
+.BR "gp create <-y|-n|-c> <length KiB> <partition> <enh_attr> <ext_attr> <device>"
|
||||
create general purpose partition for the <device>.
|
||||
-Dry-run only unless -y is passed.
|
||||
+Dry-run only unless -y or -c is passed.
|
||||
+Use -c if more partitioning settings are still to come.
|
||||
To set enhanced attribute to general partition being created set <enh_attr> to 1 else set it to 0.
|
||||
To set extended attribute to general partition set <ext_attr> to 1,2 else set it to 0.
|
||||
NOTE! This is a one-time programmable (unreversible) change.
|
||||
.TP
|
||||
-.BR "enh_area set <-y|-n> <start KiB> <length KiB> <device>"
|
||||
+.BR "enh_area set <-y|-n|-c> <start KiB> <length KiB> <device>"
|
||||
Enable the enhanced user area for the <device>.
|
||||
-Dry-run only unless -y is passed.
|
||||
+Dry-run only unless -y or -c is passed.
|
||||
+Use -c if more partitioning settings are still to come.
|
||||
NOTE! This is a one-time programmable (unreversible) change.
|
||||
.TP
|
||||
-.BR "write_reliability set <-y|-n> <partition> <device>"
|
||||
+.BR "write_reliability set <-y|-n|-c> <partition> <device>"
|
||||
Enable write reliability per partition for the <device>.
|
||||
-Dry-run only unless -y is passed.
|
||||
+Dry-run only unless -y or -c is passed.
|
||||
+Use -c if more partitioning settings are still to come.
|
||||
NOTE! This is a one-time programmable (unreversible) change.
|
||||
.TP
|
||||
.BR "status get <device>"
|
||||
@@ -1,6 +1,6 @@
|
||||
--- mmc.c.orig 2021-12-18 19:59:21 UTC
|
||||
--- mmc.c.orig 2023-02-09 14:16:51 UTC
|
||||
+++ mmc.c
|
||||
@@ -229,6 +229,7 @@ static struct Command commands[] = {
|
||||
@@ -234,6 +234,7 @@ static struct Command commands[] = {
|
||||
"Run Field Firmware Update with <image name> on <device>.\n",
|
||||
NULL
|
||||
},
|
||||
@@ -8,10 +8,26 @@
|
||||
{ do_erase, -4,
|
||||
"erase", "<type> " "<start address> " "<end address> " "<device>\n"
|
||||
"Send Erase CMD38 with specific argument to the <device>\n\n"
|
||||
@@ -237,6 +238,7 @@ static struct Command commands[] = {
|
||||
@@ -242,6 +243,7 @@ static struct Command commands[] = {
|
||||
"secure-trim1 | secure-trim2 | trim \n",
|
||||
NULL
|
||||
},
|
||||
+#endif
|
||||
{ do_general_cmd_read, -1,
|
||||
"gen_cmd read", "<device> [arg]\n"
|
||||
"Send GEN_CMD (CMD56) to read vendor-specific format/meaning data from <device>\n\n"
|
||||
@@ -260,6 +262,7 @@ static struct Command commands[] = {
|
||||
"Issues a CMD0 GO_PRE_IDLE",
|
||||
NULL
|
||||
},
|
||||
+#if defined(__linux__)
|
||||
{ do_alt_boot_op, -1,
|
||||
"boot_operation", "<boot_data_file> <device>\n"
|
||||
"Does the alternative boot operation and writes the specified starting blocks of boot data into the requested file.\n\n"
|
||||
@@ -272,6 +275,7 @@ static struct Command commands[] = {
|
||||
"4. The MMC will perform a soft reset, if your system cannot handle that do not use the boot operation from mmc-utils.\n",
|
||||
NULL
|
||||
},
|
||||
+#endif
|
||||
{ 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
--- mmc.h.orig 2021-12-18 19:59:21 UTC
|
||||
--- mmc.h.orig 2023-02-09 14:16:51 UTC
|
||||
+++ mmc.h
|
||||
@@ -17,10 +17,26 @@
|
||||
@@ -17,8 +17,22 @@
|
||||
* those modifications are Copyright (c) 2016 SanDisk Corp.
|
||||
*/
|
||||
|
||||
+#if defined(__linux__)
|
||||
#include <linux/major.h>
|
||||
#include <linux/mmc/ioctl.h>
|
||||
+#elif defined(__FreeBSD__)
|
||||
+#include <dev/mmc/mmc_ioctl.h>
|
||||
@@ -20,10 +21,5 @@
|
||||
+typedef uint64_t __u64;
|
||||
+#endif
|
||||
|
||||
+#if 0
|
||||
/* From kernel linux/major.h */
|
||||
#define MMC_BLOCK_MAJOR 179
|
||||
+#endif
|
||||
|
||||
/* From kernel linux/mmc/mmc.h */
|
||||
#define MMC_SWITCH 6 /* ac [31:0] See below R1b */
|
||||
#define MMC_GO_IDLE_STATE 0 /* bc */
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
--- mmc_cmds.c.orig 2021-12-18 19:59:21 UTC
|
||||
--- mmc_cmds.c.orig 2023-02-09 14:16:51 UTC
|
||||
+++ mmc_cmds.c
|
||||
@@ -28,7 +28,12 @@
|
||||
#include <errno.h>
|
||||
@@ -13,7 +13,23 @@
|
||||
|
||||
#include "mmc.h"
|
||||
#include "mmc_cmds.h"
|
||||
@@ -120,8 +125,19 @@ static __u32 get_size_in_blks(int fd)
|
||||
@@ -88,8 +93,15 @@ int write_extcsd_value(int fd, __u8 index, __u8 value,
|
||||
(value << 8) |
|
||||
EXT_CSD_CMD_SET_NORMAL;
|
||||
idata.flags = MMC_RSP_SPI_R1B | MMC_RSP_R1B | MMC_CMD_AC;
|
||||
+#if defined(__FreeBSD__)
|
||||
+ if (timeout_ms != 0) {
|
||||
+ fprintf(stderr, "Command timeout not supported\n");
|
||||
+ return -EOPNOTSUPP;
|
||||
+ }
|
||||
+#else
|
||||
/* Kernel will set cmd_timeout_ms if 0 is set */
|
||||
idata.cmd_timeout_ms = timeout_ms;
|
||||
+#endif
|
||||
|
||||
ret = ioctl(fd, MMC_IOC_CMD, &idata);
|
||||
if (ret)
|
||||
@@ -121,8 +133,19 @@ static __u32 get_size_in_blks(int fd)
|
||||
{
|
||||
int res;
|
||||
int size;
|
||||
@@ -33,27 +49,7 @@
|
||||
if (res) {
|
||||
fprintf(stderr, "Error getting device size, errno: %d\n",
|
||||
errno);
|
||||
@@ -1605,13 +1621,18 @@ int do_read_extcsd(int nargs, char **argv)
|
||||
/* A441/A43: reserved [197] [195] [193] [190] [188]
|
||||
* [186] [184] [182] [180] [176] */
|
||||
|
||||
- if (ext_csd_rev >= 6)
|
||||
+ if (ext_csd_rev >= 6) {
|
||||
printf("I/O Driver Strength [DRIVER_STRENGTH: 0x%02x]\n",
|
||||
ext_csd[197]);
|
||||
+ printf("Enhanced Strobe mode [STROBE_SUPPORT: 0x%02x]\n",
|
||||
+ ext_csd[184]);
|
||||
+ }
|
||||
|
||||
/* DEVICE_TYPE in A45, CARD_TYPE in A441 */
|
||||
reg = ext_csd[196];
|
||||
printf("Card Type [CARD_TYPE: 0x%02x]\n", reg);
|
||||
+ if (reg & 0x80) printf(" HS400 Dual Data Rate eMMC @200MHz 1.2VI/O\n");
|
||||
+ if (reg & 0x40) printf(" HS400 Dual Data Rate eMMC @200MHz 1.8VI/O\n");
|
||||
if (reg & 0x20) printf(" HS200 Single Data Rate eMMC @200MHz 1.2VI/O\n");
|
||||
if (reg & 0x10) printf(" HS200 Single Data Rate eMMC @200MHz 1.8VI/O\n");
|
||||
if (reg & 0x08) printf(" HS Dual Data Rate eMMC @52MHz 1.2VI/O\n");
|
||||
@@ -1881,8 +1902,10 @@ int do_read_extcsd(int nargs, char **argv)
|
||||
@@ -1974,8 +1997,10 @@ int do_read_extcsd(int nargs, char **argv)
|
||||
(ext_csd[EXT_CSD_CMDQ_DEPTH] & 0x1f) + 1);
|
||||
printf("Command Enabled [CMDQ_MODE_EN]: 0x%02x\n",
|
||||
ext_csd[EXT_CSD_CMDQ_MODE_EN]);
|
||||
@@ -64,7 +60,7 @@
|
||||
}
|
||||
out_free:
|
||||
return ret;
|
||||
@@ -2515,6 +2538,7 @@ int do_cache_dis(int nargs, char **argv)
|
||||
@@ -2646,6 +2671,7 @@ int do_cache_dis(int nargs, char **argv)
|
||||
return do_cache_ctrl(0, nargs, argv);
|
||||
}
|
||||
|
||||
@@ -72,7 +68,7 @@
|
||||
static int erase(int dev_fd, __u32 argin, __u32 start, __u32 end)
|
||||
{
|
||||
int ret = 0;
|
||||
@@ -2657,6 +2681,7 @@ out:
|
||||
@@ -2800,6 +2826,7 @@ out:
|
||||
close(dev_fd);
|
||||
return ret;
|
||||
}
|
||||
@@ -80,3 +76,16 @@
|
||||
|
||||
|
||||
int do_ffu(int nargs, char **argv)
|
||||
@@ -3145,6 +3172,7 @@ int do_preidle(int nargs, char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+#if defined(__linux__)
|
||||
int do_alt_boot_op(int nargs, char **argv)
|
||||
{
|
||||
int fd, ret, boot_data_fd;
|
||||
@@ -3247,3 +3275,4 @@ dev_fd_close:
|
||||
exit(1);
|
||||
return 0;
|
||||
}
|
||||
+#endif
|
||||
|
||||
@@ -2,7 +2,7 @@ MMC tools introduction
|
||||
======================
|
||||
|
||||
There is one MMC test tools called mmc-utils, which is maintained by
|
||||
Chris Ball, you can find it at the below public git repository:
|
||||
Ulf Hansson, you can find it at the below public git repository:
|
||||
https://git.kernel.org/pub/scm/utils/mmc/mmc-utils.git
|
||||
|
||||
Functions
|
||||
|
||||
Reference in New Issue
Block a user