2021-04-02 00:15:32 +00:00
|
|
|
.. 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
|
2021-08-13 17:34:42 +00:00
|
|
|
mmc rescan [mode]
|
2021-04-02 00:15:32 +00:00
|
|
|
mmc part
|
2021-08-13 17:34:42 +00:00
|
|
|
mmc dev [dev] [part] [mode]
|
2021-04-02 00:15:32 +00:00
|
|
|
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>
|
2021-05-13 22:15:43 +00:00
|
|
|
mmc partconf <dev> [[varname] | [<boot_ack> <boot_partition> <partition_access>]]
|
2021-04-02 00:15:32 +00:00
|
|
|
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
|
|
|
|
|
2021-05-10 07:04:02 +00:00
|
|
|
The 'mmc erase' command erases *cnt* blocks on the MMC device starting at block *blk#*.
|
2021-04-02 00:15:32 +00:00
|
|
|
|
|
|
|
blk#
|
|
|
|
start block offset
|
|
|
|
cnt
|
|
|
|
block count
|
|
|
|
|
|
|
|
The 'mmc rescan' command scans the available MMC device.
|
|
|
|
|
2021-08-13 17:34:42 +00:00
|
|
|
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
|
|
|
|
|
2021-04-02 00:15:32 +00:00
|
|
|
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
|
|
|
|
|
2021-08-13 17:34:42 +00:00
|
|
|
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
|
|
|
|
|
2021-04-02 00:15:32 +00:00
|
|
|
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.
|
|
|
|
|
2021-05-13 22:15:43 +00:00
|
|
|
varname
|
|
|
|
When showing the PARTITION_CONFIG, an optional environment variable to store the current boot_partition value into.
|
2021-04-02 00:15:32 +00:00
|
|
|
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.
|
2021-05-10 07:04:02 +00:00
|
|
|
|
2021-04-02 00:15:32 +00:00
|
|
|
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
|
2021-08-13 17:34:42 +00:00
|
|
|
=> mmc dev 0 1 4
|
|
|
|
switch to partitions #1, OK
|
|
|
|
mmc0(part 1) is current device
|
2021-04-02 00:15:32 +00:00
|
|
|
|
|
|
|
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
|