void __init omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, int nr_controllers) { int i; for (i = 0; i < nr_controllers; i++) { unsigned long base, size; unsigned int irq = 0; if (!mmc_data[i]) continue; omap1_mmc_mux(mmc_data[i], i); switch (i) { case 0: base = OMAP1_MMC1_BASE; irq = INT_MMC; break; case 1: if (!cpu_is_omap16xx()) return; base = OMAP1_MMC2_BASE; irq = INT_1610_MMC2; break; default: continue; } size = OMAP1_MMC_SIZE; omap_mmc_add("mmci-omap", i, base, size, irq, mmc_data[i]); }; }
void __init omap2_init_mmc(struct omap_mmc_platform_data **mmc_data, int nr_controllers) { int i; char *name; for (i = 1; i < nr_controllers; i++) { unsigned long base, size; unsigned int irq = 0; if (!mmc_data[i]) continue; omap2_mmc_mux(mmc_data[i], i); switch (i) { case 0: base = OMAP2_MMC1_BASE; irq = INT_24XX_MMC_IRQ; break; case 1: base = OMAP2_MMC2_BASE; irq = INT_24XX_MMC2_IRQ; break; case 2: if (!(cpu_is_omap34xx() || cpu_is_omap3630())) return; base = OMAP3_MMC3_BASE; irq = INT_34XX_MMC3_IRQ; break; default: continue; } if (cpu_is_omap2420()) { size = OMAP2420_MMC_SIZE; name = "mmci-omap"; } else { size = HSMMC_SIZE; if (mmc_data[i]->name) name = mmc_data[i]->name; else name = "mmci-omap-hs"; } omap_mmc_add(name, i, base, size, irq, mmc_data[i]); //#if 0 if(1==i) { printk(KERN_ERR "SD/MMC devices, enumerating first eMMC.\n"); i-=2; } else if(0==i){ printk(KERN_ERR "SD/MMC devices, checking for SD card devices attached.\n"); i++; } //#endif }; }
void __init omap2_init_mmc(struct omap_mmc_platform_data **mmc_data, int nr_controllers) { int i; char *name; for (i = 0; i < nr_controllers; i++) { unsigned long base, size; unsigned int irq = 0; if (!mmc_data[i]) continue; omap2_mmc_mux(mmc_data[i], i); switch (i) { case 0: base = OMAPW3G_MMC1_BASE; irq = INT_W3G_MMC_IRQ; break; case 1: base = OMAP2_MMC2_BASE; irq = INT_24XX_MMC2_IRQ; break; case 2: if (!cpu_is_omap34xx()) return; base = OMAP3_MMC3_BASE; irq = INT_34XX_MMC3_IRQ; break; default: continue; } if (cpu_is_omapw3g()){ size = OMAPW3G_MMC_SIZE; name = "mmci-omap-hs"; } else if (cpu_is_omap2420()) { size = OMAP2420_MMC_SIZE; name = "mmci-omap"; } else { size = HSMMC_SIZE; if (mmc_data[i]->name) name = mmc_data[i]->name; else name = "mmci-omap-hs"; } omap_mmc_add(name, i, base, size, irq, mmc_data[i]); } }
void __init omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data) { char *name = "mmci-omap"; if (!mmc_data[0]) { pr_err("%s fails: Incomplete platform data\n", __func__); return; } omap242x_mmc_mux(mmc_data[0]); omap_mmc_add(name, 0, OMAP2_MMC1_BASE, OMAP2420_MMC_SIZE, INT_24XX_MMC_IRQ, mmc_data[0]); }
void __init omap2_init_mmc(struct omap_mmc_platform_data **mmc_data, int nr_controllers) { int i; char *name; for (i = 0; i < nr_controllers; i++) { unsigned long base, size; unsigned int irq = 0; if (!mmc_data[i]) continue; omap2_mmc_mux(mmc_data[i], i); switch (i) { case 0: base = OMAP2_MMC1_BASE; irq = INT_24XX_MMC_IRQ; break; case 1: base = OMAP2_MMC2_BASE; irq = INT_24XX_MMC2_IRQ; break; case 2: if (!cpu_is_omap44xx() && !cpu_is_omap34xx()) return; base = OMAP3_MMC3_BASE; irq = INT_34XX_MMC3_IRQ; break; case 3: if (!cpu_is_omap44xx()) return; base = OMAP4_MMC4_BASE + OMAP4_MMC_REG_OFFSET; irq = INT_44XX_MMC4_IRQ; break; case 4: if (!cpu_is_omap44xx()) return; base = OMAP4_MMC5_BASE + OMAP4_MMC_REG_OFFSET; irq = INT_44XX_MMC5_IRQ; break; default: continue; } if (cpu_is_omap2420()) { size = OMAP2420_MMC_SIZE; name = "mmci-omap"; } else if (cpu_is_omap44xx()) { if (i < 3) { base += OMAP4_MMC_REG_OFFSET; irq += IRQ_GIC_START; } size = OMAP4_HSMMC_SIZE; name = "mmci-omap-hs"; } else { size = OMAP3_HSMMC_SIZE; if (mmc_data[i]->name) name = mmc_data[i]->name; else name = "mmci-omap-hs"; } omap_mmc_add(name, i, base, size, irq, mmc_data[i]); }; }