On a custom board I use MMC0 and MMC1.
The bootloader (MLO file), U-Boot and the LINUX kernel are stored on an SD card that connects to MMC1. Everything runs fine (including loading the LINUX kernel from MMC1) but only MMC0 interface is detected by the LINUX kernel. Somehow the MMC1 interface is not detected by the LINUX kernel.
I have made a few changes to the file 'board-arm335xevm.c'. For now my 'am335x_evm_setup' function executes the following code:
mmc1_init(0, 0);
mmc0_init(0, 0);
am33xx_sr_init();
return;
where the two MMC initialization functions do the following:
static void mmc0_init(int evm_id, int profile)
{
setup_pin_mux(mmc0_common_pin_mux);
am335x_mmc[0].gpio_cd = -EINVAL;
am335x_mmc[0].gpio_wp = -EINVAL;
omap2_hsmmc_init(am335x_mmc);
return;
}
and
static void mmc1_init(int evm_id, int profile)
{
setup_pin_mux(mmc1_common_pin_mux);
am335x_mmc[1].mmc = 2;
am335x_mmc[1].caps = MMC_CAP_4_BIT_DATA;
am335x_mmc[1].gpio_cd = -EINVAL;
am335x_mmc[1].gpio_wp = -EINVAL;
am335x_mmc[1].ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34; // 3V3
// mmc will be initialized when mmc0_init is called
return;
}
As I am booting and loading the kernel from MMC1 I know the hardware is fine. As already stated MMC0 is detected by the kernel but MMC1 is not. Is there something more I have to do here or is something (power management?) disabling something (clock?) here?
many thanks and kind regards, Felix