code modification points:
1. board-dm368-ipnc.c,add mmc1:
static struct resource mmc1_resources[] = {
[0] = { /* registers */
.start = DM365_MMC_SD1_BASE,
.end = DM365_MMC_SD1_BASE + SZ_1K - 1,
.flags = IORESOURCE_MEM,
},
[1] = { /* interrupt */
.start = IRQ_DM3XX_MMCINT1,
.end = IRQ_DM3XX_MMCINT1,
.flags = IORESOURCE_IRQ,
},
[2] = { //dma rx
.start = DM365_DMA_MMC1RXEVT,
.end = DM365_DMA_MMC1RXEVT,
.flags = IORESOURCE_DMA | IORESOURCE_DMA_RX_CHAN,
},
[3] = { // dma tx
.start = DM365_DMA_MMC1TXEVT,
.end = DM365_DMA_MMC1TXEVT,
.flags = IORESOURCE_DMA | IORESOURCE_DMA_TX_CHAN,
},
[4] = { // event queue
.start = EVENTQ_3,
.end = EVENTQ_3,
.flags = IORESOURCE_DMA | IORESOURCE_DMA_EVENT_Q,
},
};
static struct davinci_mmc_platform_data mmc1_platform_data = {
.mmc_clk = "MMCSDCLK1",
.rw_threshold = 64,
.use_4bit_mode = 1,
.use_8bit_mode = 0,
.max_frq = 50000000,
.pio_set_dmatrig = 1,
};
static struct platform_device mmc1_device = {
.name = "davinci-mmc",
.id = 1,
.dev = {
.platform_data = &mmc1_platform_data,
},
.num_resources = ARRAY_SIZE(mmc1_resources),
.resource = mmc1_resources,
};
2.edma.h, modify :
#define DM365_DMACH2EVENT_MAP0 0xCC00000Cu
I add some debug informations to show that MMC/SD0 works fine, but MMC/SD1 can not work. How could I make MMC/SD1 work? MMC/SD1 is same with MMC/SD0, what's happened? I do not know . Is there anybody can help me?
B.R.
Rick