This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How to make mmc/sd1 driver work on DM368? .

Hi 

 

I am using DM368 SDK V2.0 for Appro

I have the problem to access the mmc/sd1.

I cannot access the mmc/sd1.

MMC/SD0 works well

 

I modified the source code as follows:

include/asm-arm/arch-davinci/edma.h

#define DM365_DMACH2EVENT_MAP0                0x0C00000Cu  =>  0xCC00000Cu

 

arch/arm/mach-davinci/board-dm368-ipnc.c 

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,

};

....

 

static struct platform_device *dm365_ipnc_devices[] __initdata = {

        &serial_device,

        &mmc0_device,

        &mmc1_device,

        &nand_device,

        &rtc_device,

};

arch/arm/mach-davinci/mux_cfg.c
const struct pin_config __initdata_or_module davinci_dm365_pinmux[] = {
...
MUX_CFG("I2C_SDA",               3,   23,    3,   2,     0)    < I checked.
...
}
=====================================================================
I can see the message for mmc/sd1
but mmc/sd1does not work.
the message is as follows:
davinci-mmc davinci-mmc.0: Supporting 4-bit mode
davinci-mmc davinci-mmc.0: Using DMA mode
MUX: initialized SD1_CLK
MUX: initialized SD1_CMD
MUX: initialized SD1_DATA3
MUX: initialized SD1_DATA2
MUX: initialized SD1_DATA1
MUX: initialized SD1_DATA0
davinci-mmc davinci-mmc.1: Supporting 4-bit mode
davinci-mmc davinci-mmc.1: Using DMA mode
mmcblk0: mmc0:0001 00000 7974912KiB
 mmcblk0: p1
mmcblk1: mmc1:b368 USD   7830528KiB
 mmcblk1:end_request: I/O error, dev mmcblk1, sector 0
Buffer I/O error on device mmcblk1, logical block 0
ls -l /dev/mmc*
brw-rw----    1 root     root      254,   0 Jan  1 00:09 /dev/mmcblk0
brw-rw----    1 root     root      254,   1 Jan  1 00:09 /dev/mmcblk0p1
I want access the mmc/sd1.

I need your help to resolve the problem.

thank you.