|
@@ -17,6 +17,8 @@
|
|
|
#include <linux/init.h>
|
|
|
|
|
|
#include <asm/mach-au1x00/au1xxx.h>
|
|
|
+#include <asm/mach-au1x00/au1xxx_dbdma.h>
|
|
|
+#include <asm/mach-au1x00/au1100_mmc.h>
|
|
|
|
|
|
#define PORT(_base, _irq) \
|
|
|
{ \
|
|
@@ -163,24 +165,6 @@ static struct resource au1xxx_usb_gdt_resources[] = {
|
|
|
},
|
|
|
};
|
|
|
|
|
|
-static struct resource au1xxx_mmc_resources[] = {
|
|
|
- [0] = {
|
|
|
- .start = SD0_PHYS_ADDR,
|
|
|
- .end = SD0_PHYS_ADDR + 0x7ffff,
|
|
|
- .flags = IORESOURCE_MEM,
|
|
|
- },
|
|
|
- [1] = {
|
|
|
- .start = SD1_PHYS_ADDR,
|
|
|
- .end = SD1_PHYS_ADDR + 0x7ffff,
|
|
|
- .flags = IORESOURCE_MEM,
|
|
|
- },
|
|
|
- [2] = {
|
|
|
- .start = AU1200_SD_INT,
|
|
|
- .end = AU1200_SD_INT,
|
|
|
- .flags = IORESOURCE_IRQ,
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
static u64 udc_dmamask = DMA_32BIT_MASK;
|
|
|
|
|
|
static struct platform_device au1xxx_usb_gdt_device = {
|
|
@@ -249,16 +233,79 @@ static struct platform_device au1200_lcd_device = {
|
|
|
|
|
|
static u64 au1xxx_mmc_dmamask = DMA_32BIT_MASK;
|
|
|
|
|
|
-static struct platform_device au1xxx_mmc_device = {
|
|
|
+extern struct au1xmmc_platform_data au1xmmc_platdata[2];
|
|
|
+
|
|
|
+static struct resource au1200_mmc0_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .start = SD0_PHYS_ADDR,
|
|
|
+ .end = SD0_PHYS_ADDR + 0x7ffff,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = {
|
|
|
+ .start = AU1200_SD_INT,
|
|
|
+ .end = AU1200_SD_INT,
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+ [2] = {
|
|
|
+ .start = DSCR_CMD0_SDMS_TX0,
|
|
|
+ .end = DSCR_CMD0_SDMS_TX0,
|
|
|
+ .flags = IORESOURCE_DMA,
|
|
|
+ },
|
|
|
+ [3] = {
|
|
|
+ .start = DSCR_CMD0_SDMS_RX0,
|
|
|
+ .end = DSCR_CMD0_SDMS_RX0,
|
|
|
+ .flags = IORESOURCE_DMA,
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device au1200_mmc0_device = {
|
|
|
.name = "au1xxx-mmc",
|
|
|
.id = 0,
|
|
|
.dev = {
|
|
|
- .dma_mask = &au1xxx_mmc_dmamask,
|
|
|
- .coherent_dma_mask = DMA_32BIT_MASK,
|
|
|
+ .dma_mask = &au1xxx_mmc_dmamask,
|
|
|
+ .coherent_dma_mask = DMA_32BIT_MASK,
|
|
|
+ .platform_data = &au1xmmc_platdata[0],
|
|
|
},
|
|
|
- .num_resources = ARRAY_SIZE(au1xxx_mmc_resources),
|
|
|
- .resource = au1xxx_mmc_resources,
|
|
|
+ .num_resources = ARRAY_SIZE(au1200_mmc0_resources),
|
|
|
+ .resource = au1200_mmc0_resources,
|
|
|
};
|
|
|
+
|
|
|
+#ifndef CONFIG_MIPS_DB1200
|
|
|
+static struct resource au1200_mmc1_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .start = SD1_PHYS_ADDR,
|
|
|
+ .end = SD1_PHYS_ADDR + 0x7ffff,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = {
|
|
|
+ .start = AU1200_SD_INT,
|
|
|
+ .end = AU1200_SD_INT,
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+ [2] = {
|
|
|
+ .start = DSCR_CMD0_SDMS_TX1,
|
|
|
+ .end = DSCR_CMD0_SDMS_TX1,
|
|
|
+ .flags = IORESOURCE_DMA,
|
|
|
+ },
|
|
|
+ [3] = {
|
|
|
+ .start = DSCR_CMD0_SDMS_RX1,
|
|
|
+ .end = DSCR_CMD0_SDMS_RX1,
|
|
|
+ .flags = IORESOURCE_DMA,
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device au1200_mmc1_device = {
|
|
|
+ .name = "au1xxx-mmc",
|
|
|
+ .id = 1,
|
|
|
+ .dev = {
|
|
|
+ .dma_mask = &au1xxx_mmc_dmamask,
|
|
|
+ .coherent_dma_mask = DMA_32BIT_MASK,
|
|
|
+ .platform_data = &au1xmmc_platdata[1],
|
|
|
+ },
|
|
|
+ .num_resources = ARRAY_SIZE(au1200_mmc1_resources),
|
|
|
+ .resource = au1200_mmc1_resources,
|
|
|
+};
|
|
|
+#endif /* #ifndef CONFIG_MIPS_DB1200 */
|
|
|
#endif /* #ifdef CONFIG_SOC_AU1200 */
|
|
|
|
|
|
static struct platform_device au1x00_pcmcia_device = {
|
|
@@ -296,7 +343,10 @@ static struct platform_device *au1xxx_platform_devices[] __initdata = {
|
|
|
&au1xxx_usb_gdt_device,
|
|
|
&au1xxx_usb_otg_device,
|
|
|
&au1200_lcd_device,
|
|
|
- &au1xxx_mmc_device,
|
|
|
+ &au1200_mmc0_device,
|
|
|
+#ifndef CONFIG_MIPS_DB1200
|
|
|
+ &au1200_mmc1_device,
|
|
|
+#endif
|
|
|
#endif
|
|
|
#ifdef SMBUS_PSC_BASE
|
|
|
&pbdb_smbus_device,
|