| .. SPDX-License-Identifier: GPL-2.0+: |
| |
| mmc command |
| ============ |
| |
| Synopsis |
| -------- |
| |
| :: |
| |
| mmc info |
| mmc read addr blk# cnt |
| mmc write addr blk# cnt |
| mmc erase blk# cnt |
| mmc rescan [mode] |
| mmc part |
| mmc dev [dev] [part] [mode] |
| mmc list |
| mmc wp |
| mmc bootbus <dev> <boot_bus_width> <reset_boot_bus_width> <boot_mode> |
| mmc bootpart-resize <dev> <dev part size MB> <RPMB part size MB> |
| mmc partconf <dev> [[varname] | [<boot_ack> <boot_partition> <partition_access>]] |
| mmc rst-function <dev> <value> |
| |
| Description |
| ----------- |
| |
| The mmc command is used to control MMC(eMMC/SD) device. |
| |
| The 'mmc info' command displays information (Manufacturer ID, OEM, Name, Bus Speed, Mode, ...) of MMC device. |
| |
| The 'mmc read' command reads raw data to memory address from MMC device with block offset and count. |
| |
| The 'mmc write' command writes raw data to MMC device from memory address with block offset and count. |
| |
| addr |
| memory address |
| blk# |
| start block offset |
| cnt |
| block count |
| |
| The 'mmc erase' command erases *cnt* blocks on the MMC device starting at block *blk#*. |
| |
| blk# |
| start block offset |
| cnt |
| block count |
| |
| The 'mmc rescan' command scans the available MMC device. |
| |
| mode |
| speed mode to set. |
| CONFIG_MMC_SPEED_MODE_SET should be enabled. The requested speed mode is |
| passed as a decimal number according to the following table: |
| |
| ========== ========================== |
| Speed mode Description |
| ========== ========================== |
| 0 MMC legacy |
| 1 MMC High Speed (26MHz) |
| 2 SD High Speed (50MHz) |
| 3 MMC High Speed (52MHz) |
| 4 MMC DDR52 (52MHz) |
| 5 UHS SDR12 (25MHz) |
| 6 UHS SDR25 (50MHz) |
| 7 UHS SDR50 (100MHz) |
| 8 UHS DDR50 (50MHz) |
| 9 UHS SDR104 (208MHz) |
| 10 HS200 (200MHz) |
| 11 HS400 (200MHz) |
| 12 HS400ES (200MHz) |
| ========== ========================== |
| |
| A speed mode can be set only if it has already been enabled in the device tree |
| |
| The 'mmc part' command displays the list available partition on current mmc device. |
| |
| The 'mmc dev' command shows or set current mmc device. |
| |
| dev |
| device number to change |
| part |
| partition number to change |
| |
| mode |
| speed mode to set. |
| CONFIG_MMC_SPEED_MODE_SET should be enabled. The required speed mode is |
| passed as the index from the following list. |
| |
| 0 - MMC_LEGACY |
| 1 - MMC_HS |
| 2 - SD_HS |
| 3 - MMC_HS_52 |
| 4 - MMC_DDR_52 |
| 5 - UHS_SDR12 |
| 6 - UHS_SDR25 |
| 7 - UHS_SDR50 |
| 8 - UHS_DDR50 |
| 9 - UHS_SDR104 |
| 10 - MMC_HS_200 |
| 11 - MMC_HS_400 |
| 12 - MMC_HS_400_ES |
| |
| A speed mode can be set only if it has already been enabled in the device tree |
| |
| The 'mmc list' command displays the list available devices. |
| |
| The 'mmc wp' command enables "power on write protect" function for boot partitions. |
| |
| The 'mmc bootbus' command sets the BOOT_BUS_WIDTH field. (*Refer to eMMC specification*) |
| |
| boot_bus_width |
| 0x0 |
| x1 (sdr) or x4(ddr) buswidth in boot operation mode (default) |
| 0x1 |
| x4 (sdr/ddr) buswidth in boot operation mode |
| 0x2 |
| x8 (sdr/ddr) buswidth in boot operation mode |
| 0x3 |
| Reserved |
| |
| reset_boot_bus_width |
| 0x0 |
| Reset buswidth to x1, Single data reate and backward compatible timing after boot operation (default) |
| 0x1 |
| Retain BOOT_BUS_WIDTH and BOOT_MODE value after boot operation. This is relevant to Push-pull mode operation only |
| |
| boot_mode |
| 0x0 |
| Use single data rate + backward compatible timing in boot operation (default) |
| 0x1 |
| Use single data rate + High Speed timing in boot operation mode |
| 0x2 |
| Use dual data rate in boot operation |
| 0x3 |
| Reserved |
| |
| The 'mmc partconf' command shows or changes PARTITION_CONFIG field. |
| |
| varname |
| When showing the PARTITION_CONFIG, an optional environment variable to store the current boot_partition value into. |
| boot_ack |
| boot acknowledge value |
| boot_partition |
| boot partition to enable for boot |
| 0x0 |
| Device not boot enabled(default) |
| 0x1 |
| Boot partition1 enabled for boot |
| 0x2 |
| Boot partition2 enabled for boot |
| 0x7 |
| User area enabled for boot |
| others |
| Reserved |
| partition_access |
| partitions to access |
| |
| The 'mmc bootpart-resize' command changes sizes of boot and RPMB partitions. |
| |
| dev |
| device number |
| boot part size MB |
| target size of boot partition |
| RPMB part size MB |
| target size of RPMB partition |
| |
| The 'mmc rst-function' command changes the RST_n_FUNCTION field. |
| **WARNING** : This is a write-once field. (*Refer to eMMC specification*) |
| |
| value |
| 0x0 |
| RST_n signal is temporarily disabled (default) |
| 0x1 |
| RST_n signal is permanently enabled |
| 0x2 |
| RST_n signal is permanently disabled |
| 0x3 |
| Reserved |
| |
| |
| Examples |
| -------- |
| |
| The 'mmc info' command displays device's capabilities: |
| :: |
| |
| => mmc info |
| Device: EXYNOS DWMMC |
| Manufacturer ID: 45 |
| OEM: 100 |
| Name: SDW16 |
| Bus Speed: 52000000 |
| Mode: MMC DDR52 (52MHz) |
| Rd Block Len: 512 |
| MMC version 5.0 |
| High Capacity: Yes |
| Capacity: 14.7 GiB |
| Bus Width: 8-bit DDR |
| Erase Group Size: 512 KiB |
| HC WP Group Size: 8 MiB |
| User Capacity: 14.7 GiB WRREL |
| Boot Capacity: 4 MiB ENH |
| RPMB Capacity: 4 MiB ENH |
| Boot area 0 is not write protected |
| Boot area 1 is not write protected |
| |
| The raw data can be read/written via 'mmc read/write' command: |
| :: |
| |
| => mmc read 0x40000000 0x5000 0x100 |
| MMC read: dev # 0, block # 20480, count 256 ... 256 blocks read: OK |
| |
| => mmc write 0x40000000 0x5000 0x10 |
| MMC write: dev # 0, block # 20480, count 256 ... 256 blocks written: OK |
| |
| The partition list can be shown via 'mmc part' command: |
| :: |
| |
| => mmc part |
| Partition Map for MMC device 0 -- Partition Type: DOS |
| |
| Part Start Sector Num Sectors UUID Type |
| 1 8192 131072 dff8751a-01 0e Boot |
| 2 139264 6291456 dff8751a-02 83 |
| 3 6430720 1048576 dff8751a-03 83 |
| 4 7479296 23298048 dff8751a-04 05 Extd |
| 5 7481344 307200 dff8751a-05 83 |
| 6 7790592 65536 dff8751a-06 83 |
| 7 7858176 16384 dff8751a-07 83 |
| 8 7876608 22900736 dff8751a-08 83 |
| |
| The current device can be shown or set via 'mmc dev' command: |
| :: |
| |
| => mmc dev |
| switch to partitions #0, OK |
| mmc0(part0) is current device |
| => mmc dev 2 0 |
| switch to partitions #0, OK |
| mmc2 is current device |
| => mmc dev 0 1 4 |
| switch to partitions #1, OK |
| mmc0(part 1) is current device |
| |
| The list of available devices can be shown via 'mmc list' command: |
| :: |
| |
| => mmc list |
| mmc list |
| EXYNOS DWMMC: 0 (eMMC) |
| EXYNOS DWMMC: 2 (SD) |
| |
| Configuration |
| ------------- |
| |
| The mmc command is only available if CONFIG_CMD_MMC=y. |
| Some commands need to enable more configuration. |
| |
| write, erase |
| CONFIG_MMC_WRITE |
| bootbus, bootpart-resize, partconf, rst-function |
| CONFIG_SUPPORT_EMMC_BOOT=y |