in the linux sd driver
#define SDHCI_HOST_VERSION | 0xFE |
#define SDHCI_SPEC_300 | 2 |
the linux will read the SDHCI_HOST_VERSION(offset 0xFE), and compare with the SDHCI_SPEC_300:
host->version = sdhci_readw(host, SDHCI_HOST_VERSION);
host->version = (host->version & SDHCI_SPEC_VER_MASK)
>> SDHCI_SPEC_VER_SHIFT;
if (host->version > SDHCI_SPEC_300) {
printk(KERN_ERR "%s: Unknown controller version (%d). "
"You may experience problems.\n", mmc_hostname(mmc),
host->version);
}
but in the imx6XXXrm.pdf , there isn't the SDHCI_HOST_VERSION register.
so, every boot time ,we'll see the "mmc0: Unknown controller version (3). You may experience problems.."
where is the SDHCI_HOST_VERSION register,what it means?
Solved! Go to Solution.
All i.MX6x possess the SDHCI_HOST_VERSION register but this is not documented in the reference manual.
For i.MX6x, the SDHCI_HOST_VERSION register is a 32-bit read only register at base offset 0xFC. Bits [31-16] are reserved. Bits [15-8] is the vendor version number and bits [7-0] is the Host Controller Specification Version.
The unknown SDHCI controller version issue was reported in ENGR00217936 and had been fixed in our recent BSP releases. The code to read the SDHCI_HOST_VERSION register can be found in the function esdhc_readw_le() at file drivers/mmc/host/sdhci-esdhc-imx.c.
All i.MX6x possess the SDHCI_HOST_VERSION register but this is not documented in the reference manual.
For i.MX6x, the SDHCI_HOST_VERSION register is a 32-bit read only register at base offset 0xFC. Bits [31-16] are reserved. Bits [15-8] is the vendor version number and bits [7-0] is the Host Controller Specification Version.
The unknown SDHCI controller version issue was reported in ENGR00217936 and had been fixed in our recent BSP releases. The code to read the SDHCI_HOST_VERSION register can be found in the function esdhc_readw_le() at file drivers/mmc/host/sdhci-esdhc-imx.c.
ok I see, thanks!