
On Thu, Jul 25, 2019 at 11:32 AM jason.zhu@rock-chips.com jason.zhu@rock-chips.com wrote:
Hi,
We use the aliases to set the MMC device order. For example: mmc0 = &emmc; mmc1 = &sdmmc; These define the MMC order in block layer. But in the mmc layer, the MMC device order is defined in the dts MMC node. It may make mistake to get MMC device order. So if we use the block layer interface to
access mmc devices, use find_mmc_device to get current devnum but not uclass_get_device.
I get a similar (same?) problem too (and will test this patch) - I've got no MMC1 on an AM335x, so the initialisation makes MMC2 the first device, which then leads me to this revolting hack in my board.c:
void board_boot_order(u32 *spl_boot_list) { u32 boot_device = spl_boot_device();
/* * This is a filthy hack... we don't have MMC1, but the SPL boot * code works based on device numbers, not sequence numbers, so * we have to ensure that when we're booted from the eMMC we pick * the right entry from the DT */ if (boot_device == BOOT_DEVICE_MMC2) spl_boot_list[0] = BOOT_DEVICE_MMC1; else spl_boot_list[0] = boot_device; }