We are using a AM437x based board with the following connections:
MMC0 -> connected to eMMC
MMC1 -> connected to SD/MMC
we have configured the pinmux in the DTS file accordingly as below:
mmc2_pins: pinmux_mmc2_pins {
pinctrl-single,pins = <
0x080 (PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn1.mmc1_clk make relevant changes for mmc1*/
0x084 (PIN_INPUT_PULLUP | MUX_MODE2) /* Micro_SD -> gpmc_csn2.mmc1_cmd -> F10 */
0x020 (PIN_INPUT_PULLUP | MUX_MODE2) /* Micro_SD -> gpmc_ad8.mmc1_dat0 -> B10 */
0x024 (PIN_INPUT_PULLUP | MUX_MODE2) /* Micro_SD -> gpmc_ad9.mmc1_dat1 -> A10 */
0x028 (PIN_INPUT_PULLUP | MUX_MODE2) /* Micro_SD -> gpmc_ad10.mmc1_dat2 -> F11 */
0x02C (PIN_INPUT_PULLUP | MUX_MODE2) /* Micro_SD -> gpmc_ad11.mmc1_dat3 -> D11 */
0x070 (PIN_INPUT | MUX_MODE7) /* Micro_SD -> mmc1_sdcd -> A2 */
>;
};
emmc_pins: pinmux_emmc_pins {
pinctrl-single,pins = <
0x100 (PIN_INPUT_PULLUP | MUX_MODE2) /* eMMC -> mmc0_clk -> D1*/
0x104 (PIN_INPUT_PULLUP | MUX_MODE2) /* eMMC -> mmc0_cmd -> D2*/
0x0FC (PIN_INPUT_PULLUP | MUX_MODE2) /* eMMC -> mmc0_dat0 -> C1*/
0x0F8 (PIN_INPUT_PULLUP | MUX_MODE2) /* eMMC -> mmc0_dat1 -> C2*/
0x0F4 (PIN_INPUT_PULLUP | MUX_MODE1) /* eMMC -> mmc0_dat2 -> B2*/
0x0F0 (PIN_INPUT_PULLUP | MUX_MODE1) /* eMMC -> mmc0_dat3 -> B1*/
0x138 (PIN_INPUT_PULLUP| MUX_MODE3) /* eMMC -> mmc0_dat4 -> E16*/
0x134 (PIN_INPUT_PULLUP| MUX_MODE3) /* eMMC -> mmc0_dat5 -> C14 */
0x130 (PIN_INPUT_PULLUP | MUX_MODE3) /* eMMC ->mmc0_dat6 -> D13*/
0x12C (PIN_INPUT_PULLUP | MUX_MODE3) /*eMMC -> mmc0_dat7 -> D14*/
>;
};
With the above setting, we are expecting to get both MMC0 and MMC1 device nodes to be avilable as eMMC and SD/MMC.
But, we are only able to see the entries /dev/mmcblk0p1 and /dev/mmcblk0p2, which corresponds to the SD/MMC device. And, we are not able to see the device node getting created for eMMC.
Note: In u-boot, if we do a mmcscan, both the mmc adapters mmc0 and mmc1 are seen. But in kernel, we are only able to see MMC0 device.
Could anyone give inputs on this issue ?