mmc command

Synopsis

mmc info mmc read addr blk# cnt mmc write addr blk# cnt mmc erase blk# cnt mmc erase partname 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> mmc reg read <reg> <offset> [env] 

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# or the entire partition specified by partname.

blk#

start block offset

cnt

block count

partname

partition name

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 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 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

The ‘mmc reg read <reg> <offset> [env]’ reads eMMC card register and either print it to standard output, or store the value in environment variable.

<reg> with optional offset <offset> into the register array, and print it to standard output or store it into environment variable [env].

reg
cid

The Device IDentification (CID) register. Uses offset.

csd

The Device-Specific Data (CSD) register. Uses offset.

dsr

The driver stage register (DSR).

ocr

The operation conditions register (OCR).

rca

The relative Device address (RCA) register.

extcsd

The Extended CSD register. Uses offset.

offset

For ‘cid’/’csd’ 128 bit registers ‘[0..3]’ in 32-bit increments. For ‘extcsd’ 512 bit register ‘[0..512,all]’ in 8-bit increments, or ‘all’ to read the entire register.

env

Optional environment variable into which 32-bit value read from register should be stored.

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 40000000 5000 100 MMC read: dev # 0, block # 20480, count 256 ... 256 blocks read: OK => mmc write 40000000 5000 100 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