I am doing a BSP for our custom mpc8308 based board. u-boot is loaded from 1MB NOR, kernel and rootfs are on SD-Card.
Evaluation is done on mpc8308rdb.
I realised that sdhci is not supported in mpc8308rdb devicetree.
I added it myself, finding that it does not work in DMA mode but does work in PIO mode (which is way too slow for productive usage).
Is there something wrong with sdhci and DMA on mpc8308? I did not find any errata on that topic.
In order to get SDHC running with mainline kernel, only one thing is missing: enable cache snooping for the eSDHC controller in sdhccr register. This is done in Freescale u-boot, but not in mainline.
/* Enable cache snooping in eSDHC controller in system configuration registers */
out_be32(&sysconf->sdhccr, 0x02000000);
This fixes all issues for me.
Please download the latest Linux BSP with Linux 2.6.29.6 from MPC8308-RDB Reference Platform.
The node "sdhci" is supported in the device tree, please refer to the following.
sdhci@2e000 {
compatible = "fsl,esdhc", "fsl,mpc8308-esdhc";
reg = <0x2e000 0x1000>;
interrupts = <42 0x8>;
interrupt-parent = <&ipic>;
/* Filled in by U-Boot */
clock-frequency = <0>;
};
I am using mainline, where this stuff is not integrated yet.
Unfortunately this patch is against an acient kernel. Finding what is missing to get it running in mainline is a bit hairy, but I am trying it.
Maybe Freescale already has solution somewhere :smileyhappy: