<div dir="ltr"><div>HI,</div><div> </div><div>I am working on linux kernel MMC layer which is responsible for supporting SD/MMC cards on ARM platform. I am stuck with an issue related to TI OMAP driver in this layer.</div>
<div><br></div><div><b>Background of Problem</b> - OMAP is not SDHCI compliant</div><div>In the mmc linux kernel driver stack, most of the drivers are sdhci compilant.</div><div>All sdhci compliant drivers have a common code which is written in sdhci.c and a specific hardware dependent code which are present is files like tegra-sdhci.c for NVIDIA Tegra and sdhci-esdhc for Freescale iMX. </div>
<div><br></div><div><b>For NVIDIA Tegra</b> -</div><div><a href="http://lxr.free-electrons.com/source/drivers/mmc/host/sdhci-tegra.c">http://lxr.free-electrons.com/source/drivers/mmc/host/sdhci-tegra.c</a></div><div><br></div>
<div><b>For Freescale iMX</b> –</div><div><a href="http://lxr.free-electrons.com/source/drivers/mmc/host/sdhci-esdhc-imx.c">http://lxr.free-electrons.com/source/drivers/mmc/host/sdhci-esdhc-imx.c</a></div><div><br></div><div>
Since the present omap_hsmmc driver as of now is not sdhci complaint, it does all these tasks by itself as shown in the below link –</div><div><br></div><div><a href="http://lxr.free-electrons.com/source/drivers/mmc/host/omap_hsmmc.c">http://lxr.free-electrons.com/source/drivers/mmc/host/omap_hsmmc.c</a></div>
<div><br></div><div><b>MY OBJECTIVE - MAKE OMAP SDHCI COMPLIANT</b></div><div><br></div><div>I need to get memory mapping of registers right. What I found was that the memory mapping defined in the SDHCI was not same as that of omap.</div>
<div>So I wrote to TI but he said the registers are mapping, even the offsets are same.</div><div><br></div><div><br></div><div>He gave me the example of these two registers from am335x TRM here-</div><div><a href="http://www.ti.com/lit/ug/spruh73j/spruh73j.pdf">http://www.ti.com/lit/ug/spruh73j/spruh73j.pdf</a></div>
<div>From 18.5.1.10 in AM335x TRM:</div><div>SD_CMD[31:16] = the command register. <b>SD_CMD[15:0] = the transfer mode</b></div><div><br></div><div>From 18.5.1.17</div><div> <b>SD_HCTL[23:16] = Block gap control.</b></div>
<div><b><br></b></div><div>In the SDHCI spec given here -</div><div><a href="https://www.sdcard.org/downloads/pls/simplified_specs/archive/partA2_300.pdf">https://www.sdcard.org/downloads/pls/simplified_specs/archive/partA2_300.pdf</a><br>
</div><div><br></div><div> these registers are having these memory address/offsets -</div><div><b>Transfer Mode Register (Offset 00Ch)</b></div><div><b>Block Count Register (Offset 006h)</b></div><div> </div><div><br></div>
<div>I am not able to figure out how these offsets are same. Can someone help me regarding this.</div><div><br></div><div>Regards,</div><div>Saket Sinha</div><div><br></div><div><br></div></div>