1.. SPDX-License-Identifier: GPL-2.0+: 2 3mmc command 4============ 5 6Synopsis 7-------- 8 9:: 10 11 mmc info 12 mmc read addr blk# cnt 13 mmc write addr blk# cnt 14 mmc erase blk# cnt 15 mmc rescan [mode] 16 mmc part 17 mmc dev [dev] [part] [mode] 18 mmc list 19 mmc wp 20 mmc bootbus <dev> <boot_bus_width> <reset_boot_bus_width> <boot_mode> 21 mmc bootpart-resize <dev> <dev part size MB> <RPMB part size MB> 22 mmc partconf <dev> [[varname] | [<boot_ack> <boot_partition> <partition_access>]] 23 mmc rst-function <dev> <value> 24 25Description 26----------- 27 28The mmc command is used to control MMC(eMMC/SD) device. 29 30The 'mmc info' command displays information (Manufacturer ID, OEM, Name, Bus Speed, Mode, ...) of MMC device. 31 32The 'mmc read' command reads raw data to memory address from MMC device with block offset and count. 33 34The 'mmc write' command writes raw data to MMC device from memory address with block offset and count. 35 36 addr 37 memory address 38 blk# 39 start block offset 40 cnt 41 block count 42 43The 'mmc erase' command erases *cnt* blocks on the MMC device starting at block *blk#*. 44 45 blk# 46 start block offset 47 cnt 48 block count 49 50The 'mmc rescan' command scans the available MMC device. 51 52 mode 53 speed mode to set. 54 CONFIG_MMC_SPEED_MODE_SET should be enabled. The requested speed mode is 55 passed as a decimal number according to the following table: 56 57 ========== ========================== 58 Speed mode Description 59 ========== ========================== 60 0 MMC legacy 61 1 MMC High Speed (26MHz) 62 2 SD High Speed (50MHz) 63 3 MMC High Speed (52MHz) 64 4 MMC DDR52 (52MHz) 65 5 UHS SDR12 (25MHz) 66 6 UHS SDR25 (50MHz) 67 7 UHS SDR50 (100MHz) 68 8 UHS DDR50 (50MHz) 69 9 UHS SDR104 (208MHz) 70 10 HS200 (200MHz) 71 11 HS400 (200MHz) 72 12 HS400ES (200MHz) 73 ========== ========================== 74 75 A speed mode can be set only if it has already been enabled in the device tree 76 77The 'mmc part' command displays the list available partition on current mmc device. 78 79The 'mmc dev' command shows or set current mmc device. 80 81 dev 82 device number to change 83 part 84 partition number to change 85 86 mode 87 speed mode to set. 88 CONFIG_MMC_SPEED_MODE_SET should be enabled. The requested speed mode is 89 passed as a decimal number according to the following table: 90 91 ========== ========================== 92 Speed mode Description 93 ========== ========================== 94 0 MMC legacy 95 1 MMC High Speed (26MHz) 96 2 SD High Speed (50MHz) 97 3 MMC High Speed (52MHz) 98 4 MMC DDR52 (52MHz) 99 5 UHS SDR12 (25MHz) 100 6 UHS SDR25 (50MHz) 101 7 UHS SDR50 (100MHz) 102 8 UHS DDR50 (50MHz) 103 9 UHS SDR104 (208MHz) 104 10 HS200 (200MHz) 105 11 HS400 (200MHz) 106 12 HS400ES (200MHz) 107 ========== ========================== 108 109 A speed mode can be set only if it has already been enabled in the device tree 110 111The 'mmc list' command displays the list available devices. 112 113The 'mmc wp' command enables "power on write protect" function for boot partitions. 114 115The 'mmc bootbus' command sets the BOOT_BUS_WIDTH field. (*Refer to eMMC specification*) 116 117 boot_bus_width 118 0x0 119 x1 (sdr) or x4(ddr) buswidth in boot operation mode (default) 120 0x1 121 x4 (sdr/ddr) buswidth in boot operation mode 122 0x2 123 x8 (sdr/ddr) buswidth in boot operation mode 124 0x3 125 Reserved 126 127 reset_boot_bus_width 128 0x0 129 Reset buswidth to x1, Single data reate and backward compatible timing after boot operation (default) 130 0x1 131 Retain BOOT_BUS_WIDTH and BOOT_MODE value after boot operation. This is relevant to Push-pull mode operation only 132 133 boot_mode 134 0x0 135 Use single data rate + backward compatible timing in boot operation (default) 136 0x1 137 Use single data rate + High Speed timing in boot operation mode 138 0x2 139 Use dual data rate in boot operation 140 0x3 141 Reserved 142 143The 'mmc partconf' command shows or changes PARTITION_CONFIG field. 144 145 varname 146 When showing the PARTITION_CONFIG, an optional environment variable to store the current boot_partition value into. 147 boot_ack 148 boot acknowledge value 149 boot_partition 150 boot partition to enable for boot 151 0x0 152 Device not boot enabled(default) 153 0x1 154 Boot partition1 enabled for boot 155 0x2 156 Boot partition2 enabled for boot 157 0x7 158 User area enabled for boot 159 others 160 Reserved 161 partition_access 162 partitions to access 163 164The 'mmc bootpart-resize' command changes sizes of boot and RPMB partitions. 165 166 dev 167 device number 168 boot part size MB 169 target size of boot partition 170 RPMB part size MB 171 target size of RPMB partition 172 173The 'mmc rst-function' command changes the RST_n_FUNCTION field. 174**WARNING** : This is a write-once field. (*Refer to eMMC specification*) 175 176 value 177 0x0 178 RST_n signal is temporarily disabled (default) 179 0x1 180 RST_n signal is permanently enabled 181 0x2 182 RST_n signal is permanently disabled 183 0x3 184 Reserved 185 186 187Examples 188-------- 189 190The 'mmc info' command displays device's capabilities: 191:: 192 193 => mmc info 194 Device: EXYNOS DWMMC 195 Manufacturer ID: 45 196 OEM: 100 197 Name: SDW16 198 Bus Speed: 52000000 199 Mode: MMC DDR52 (52MHz) 200 Rd Block Len: 512 201 MMC version 5.0 202 High Capacity: Yes 203 Capacity: 14.7 GiB 204 Bus Width: 8-bit DDR 205 Erase Group Size: 512 KiB 206 HC WP Group Size: 8 MiB 207 User Capacity: 14.7 GiB WRREL 208 Boot Capacity: 4 MiB ENH 209 RPMB Capacity: 4 MiB ENH 210 Boot area 0 is not write protected 211 Boot area 1 is not write protected 212 213The raw data can be read/written via 'mmc read/write' command: 214:: 215 216 => mmc read 40000000 5000 100 217 MMC read: dev # 0, block # 20480, count 256 ... 256 blocks read: OK 218 219 => mmc write 40000000 5000 100 220 MMC write: dev # 0, block # 20480, count 256 ... 256 blocks written: OK 221 222The partition list can be shown via 'mmc part' command: 223:: 224 225 => mmc part 226 Partition Map for MMC device 0 -- Partition Type: DOS 227 228 Part Start Sector Num Sectors UUID Type 229 1 8192 131072 dff8751a-01 0e Boot 230 2 139264 6291456 dff8751a-02 83 231 3 6430720 1048576 dff8751a-03 83 232 4 7479296 23298048 dff8751a-04 05 Extd 233 5 7481344 307200 dff8751a-05 83 234 6 7790592 65536 dff8751a-06 83 235 7 7858176 16384 dff8751a-07 83 236 8 7876608 22900736 dff8751a-08 83 237 238The current device can be shown or set via 'mmc dev' command: 239:: 240 241 => mmc dev 242 switch to partitions #0, OK 243 mmc0(part0) is current device 244 => mmc dev 2 0 245 switch to partitions #0, OK 246 mmc2 is current device 247 => mmc dev 0 1 4 248 switch to partitions #1, OK 249 mmc0(part 1) is current device 250 251The list of available devices can be shown via 'mmc list' command: 252:: 253 254 => mmc list 255 mmc list 256 EXYNOS DWMMC: 0 (eMMC) 257 EXYNOS DWMMC: 2 (SD) 258 259Configuration 260------------- 261 262The mmc command is only available if CONFIG_CMD_MMC=y. 263Some commands need to enable more configuration. 264 265write, erase 266 CONFIG_MMC_WRITE 267bootbus, bootpart-resize, partconf, rst-function 268 CONFIG_SUPPORT_EMMC_BOOT=y 269