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.

Accessing MMC2 in PSP-SDK_02.01.01.08

Expert 1070 points

Hello,

Our board is utilizing the mmc2 interface.  I'm wanting to activate this device in Linux.  From what I can

tell, I only have mmcblk0p1 device available.  How do I go about getting mmcblk0p2?  Is there a better way

of accessing this device?

 

  • Acutally, MMC1 is mmcblk0 and each partitions would be mmcblk0p1, mmcblk0p2, etc.  MMC2 then becomes mmcblk1 with the partitions being mmcblk1p1, mmcblk1p2, etc.

    I would start with u-boot. Modify the pin muxing in there to support MMC2.  Then in your Linux kernel, look at your arch/arm/mach-omap2/board- file.  For example, the OMAP3 EVM file is named board-omap3evm.c.  You'll find a table with MMC interfaces:

    static struct twl4030_hsmmc_info mmc[] __initdata = {
            {
                    .mmc            = 1,
                    .wires          = 4,
                    .gpio_cd        = -EINVAL,
                    .gpio_wp        = 63,
            },
            {}      /* Terminator */
    };

    You would add an entry for your MMC2.

    There might be more work, but this is a start.

    Steve K.

  • In reading the Technical Reference Manual, it states that ...

    The second controller (MMC/SD/SDIO2) allows connecting MMC/SD/SDIO cards (only 1.8V cards) or

    and external device that uses the MMC/SD/SDIO interface (WLAN device for example).

    When I run the PSP-SDK_02.01.01.08 kernel, it seems to be setting VMMC2 to about 3V.  Is this OK?  Can

    I run standard SD cards in MMC2, or must I use a 1.8V part?  I guess the same goes for MMC3?

    Thanks.

  • I have been trying to get MMC2 to work with a Marvell 8686 SDIO card, this card does not have any write protect or chip detect.  It is being externally powered and can be assumed to always be there.  I was able to get the card to work on MMC1 but it needs to be on MMC2.  I probably need to add voltage translators to go from the 1.8 V to 3.0 V but I cannot ever see a MMC2 clock ever come out of the OMAP3EVM board.

    I am using the OMAP3EVM with 2.6.29-rc3 kernel, I have made the following modifications but I am unable to see a MMC2 clock.  I would think during linux initialization it would probe the MMC2 to see if anything is there.  Is this not true?

    /*Wireless LAN */\
     MUX_VAL(CP(MMC2_CLK),          (IEN  | PTD | DIS | M0)) /*MMC2_CLK*/\
     MUX_VAL(CP(MMC2_CMD),          (IEN  | PTU | EN  | M0)) /*MMC2_CMD*/\
     MUX_VAL(CP(MMC2_DAT0),         (IEN  | PTU | EN  | M0)) /*MMC2_DAT0*/\
     MUX_VAL(CP(MMC2_DAT1),         (IEN  | PTU | EN  | M0)) /*MMC2_DAT1*/\
     MUX_VAL(CP(MMC2_DAT2),         (IEN  | PTU | EN  | M0)) /*MMC2_DAT2*/\
     MUX_VAL(CP(MMC2_DAT3),         (IEN  | PTU | EN  | M0)) /*MMC2_DAT3*/\
     MUX_VAL(CP(MMC2_DAT4),         (IDIS | PTD | DIS | M0)) /*MMC2_DAT4*/\
     MUX_VAL(CP(MMC2_DAT5),         (IDIS | PTD | DIS | M0)) /*MMC2_DAT5*/\
     MUX_VAL(CP(MMC2_DAT6),         (IDIS | PTD | DIS | M0)) /*MMC2_DAT6 */\
     MUX_VAL(CP(MMC2_DAT7),         (IEN  | PTU | EN  | M0)) /*MMC2_DAT7*/\

    And then in my board file I changed the mmc structure to:

    static struct twl4030_hsmmc_info mmc[] __initdata = {
        {
            .mmc        = 1,
            .wires        = 4,
            .gpio_cd    = -EINVAL,
            .gpio_wp    = 63,
        },
        {
            .mmc        = 2,
            .wires        = 4,
            .gpio_wp    = -EINVAL
        },
        {}    /* Terminator */
    };

     

    Anyone have any success getting MMC2 to work with a fixed attached device?