David Brownell <[email protected]> writes:
> From: David Brownell <[email protected]>
>
> A "cat /proc/iomem" showed why mmc0 is now broken on dm355:
>
> 01e00000-01e00fff : davinci_mmc.1
> 01e00000-01e00fff : davinci_mmc
> 01e10000-01e10fff : davinci_mmc.0
> 01e10000-01e10fff : davinci_nand
> 01e10000-01e10fff : davinci_mmc
> 02000000-03ffffff : davinci_nand
>
> What was the MMC0 controller address on dm6446 chips is the AEMIF
> control register bank on dm355 chips, used by the NAND driver.
>
> Use the right address, and now MMC0 works. (In PIO mode, and
> with that ASM-to-C conversion patch reverted.) And for that
> matter, the dm9000 starts working again. Win! Maybe the NAND
> driver will be happier too...
>
> Signed-off-by: David Brownell <[email protected]>
Thanks, pushing today.
Kevin
> ---
> arch/arm/mach-davinci/devices.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> --- a/arch/arm/mach-davinci/devices.c
> +++ b/arch/arm/mach-davinci/devices.c
> @@ -38,6 +38,7 @@
> #define DAVINCI_EMAC_CNTRL_RAM_BASE 0x01C82000
> #define DAVINCI_EMAC_MDIO_REGS_BASE 0x01C84000
> #define DAVINCI_MMCSD0_BASE 0x01E10000
> +#define DM355_MMCSD0_BASE 0x01E11000
> #define DM355_MMCSD1_BASE 0x01E00000
>
> static struct resource i2c_resources[] = {
> @@ -71,6 +72,7 @@ static u64 mmcsd0_dma_mask = DMA_32BIT_M
>
> static struct resource mmcsd0_resources[] = {
> {
> + /* different on dm355 */
> .start = DAVINCI_MMCSD0_BASE,
> .end = DAVINCI_MMCSD0_BASE + SZ_4K - 1,
> .flags = IORESOURCE_MEM,
> @@ -80,6 +82,7 @@ static struct resource mmcsd0_resources[
> .start = IRQ_MMCINT,
> .flags = IORESOURCE_IRQ,
> }, {
> + /* different on dm355 */
> .start = IRQ_SDIOINT,
> .flags = IORESOURCE_IRQ,
> },
> @@ -160,11 +163,15 @@ void __init davinci_setup_mmc(int module
> case 1:
> if (!cpu_is_davinci_dm355())
> break;
> - mmcsd0_resources[2].start = IRQ_DM355_SDIOINT0;
> pdev = &davinci_mmcsd1_device;
> clockname = "MMCSDCLK1";
> break;
> case 0:
> + if (cpu_is_davinci_dm355()) {
> + mmcsd0_resources[0].start = DM355_MMCSD0_BASE;
> + mmcsd0_resources[0].end = DM355_MMCSD0_BASE + SZ_4K - 1;
> + mmcsd0_resources[2].start = IRQ_DM355_SDIOINT0;
> + }
> pdev = &davinci_mmcsd0_device;
> clockname = cpu_is_davinci_dm355() ? "MMCSDCLK0" : "MMCSDCLK";
> break;
>
> _______________________________________________
> Davinci-linux-open-source mailing list
> [email protected]
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source