2.1.2.5. SD/eMMC Host Controller Capabilities Register provides incorrect information with regard to 8-bit Embedded Device Support
Description
When booting from eMMC, U-Boot cannot configure the SD/eMMC host controller to use an 8-bit data width by changing the bus-width = <8> parameter in the device tree, even if the controller supports the 8-bit width in eMMC mode.
U-Boot reads the host controller capabilities from the SDMMC SRS16 register at 0x10808240, but bit 18 (EDS8) incorrectly indicates that this width is not supported. As a result, U-Boot falls back to a 4-bit operation instead of using 8-bit mode.
Workaround
Override the read capabilities from the SD/eMMC host controller by setting the sdhci-caps-mask and sdhci-caps parameters in the U-Boot device tree. These parameters allow you to override the values that the SD/eMMC driver reads from the SRS16 - Capabilities #1 and SRS17 - Capabilities #2 registers. To indicate that the controller supports the 8-bit data width, U-Boot uses the following configuration in the device tree, in which bit 18 (EDS8) originally read as '0' from the SRS16 register, is being ignored and replaced by a '1'.
&mmc {
status = "okay";
bus-width = <8>;
sdhci-caps = <0x00000000 0x00040000>;
sdhci-caps-mask = <0x00000000 0x00040000>;
sd-uhs-sdr50;
cap-mmc-highspeed;
bootph-all;
};
Status
| Devices Affected | Planned Fix |
|---|---|
A5Ex008xxxxxxxxCS A5Ex013xxxxxxxxCS |
No planned fix |