Hi Przemyslaw, On 17 February 2015 at 06:09, Przemyslaw Marczak <p.marc...@samsung.com> wrote: > Before this commit, the mmc devices were always registered > in the same order. So dwmmc channel 0 was registered as mmc 0, > channel 1 as mmc 1, etc. > In case of possibility to boot from more then one device, > the CONFIG_SYS_MMC_ENV_DEV should always point to right mmc device. > > This can be achieved by init boot device as first, so it will be > always registered as mmc 0. Thanks to this, the 'saveenv' command > will work fine for all mmc boot devices. > > Exynos based boards usually uses mmc host channels configuration: > - 0, or 0+1 for 8 bit - as a default boot device (usually eMMC) > - 2 for 4bit - as an optional boot device (usually SD card slot) > > And usually the boot order is defined by OM pin configuration, > which can be changed in a few ways, eg. > - Odroid U3 - eMMC card insertion -> first boot from eMMC > - Odroid X2/XU3 - boot priority jumper > > By this commit, Exynos dwmmc driver will check the OM pin configuration, > and then try to init the boot device and register it as mmc 0.
I think a better way to do this would be to make CONFIG_SYS_MMC_ENV_DEV support an option where the device can be selected at run-time. However that would probably be better done when the drive rmodel conversion is complete. So this seems a reasonable patch given where we are. Reviewed-by: Simon Glass <s...@chromium.org> > > Signed-off-by: Przemyslaw Marczak <p.marc...@samsung.com> > Cc: Minkyu Kang <mk7.k...@samsung.com> > Cc: Jaehoon Chung <jh80.ch...@samsung.com> > Cc: Pantelis Antoniou <pa...@intracom.gr> > Cc: Simon Glass <s...@chromium.org> > Cc: Akshay Saraswat <aksha...@samsung.com> > --- > drivers/mmc/exynos_dw_mmc.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/exynos_dw_mmc.c b/drivers/mmc/exynos_dw_mmc.c > index dfa209b..91f0163 100644 > --- a/drivers/mmc/exynos_dw_mmc.c > +++ b/drivers/mmc/exynos_dw_mmc.c > @@ -13,6 +13,7 @@ > #include <asm/arch/dwmmc.h> > #include <asm/arch/clk.h> > #include <asm/arch/pinmux.h> > +#include <asm/arch/power.h> > #include <asm/gpio.h> > #include <asm-generic/errno.h> > > @@ -166,7 +167,6 @@ static int exynos_dwmci_get_config(const void *blob, int > node, > if (host->dev_index == host->dev_id) > host->dev_index = host->dev_id - PERIPH_ID_SDMMC0; > > - > /* Get the bus width from the device node */ > host->buswidth = fdtdec_get_int(blob, node, "samsung,bus-width", 0); > if (host->buswidth <= 0) { > @@ -229,12 +229,21 @@ int exynos_dwmmc_init(const void *blob) > { > int compat_id; > int node_list[DWMMC_MAX_CH_NUM]; > + int boot_dev_node; > int err = 0, count; > > compat_id = COMPAT_SAMSUNG_EXYNOS_DWMMC; > > count = fdtdec_find_aliases_for_id(blob, "mmc", > compat_id, node_list, DWMMC_MAX_CH_NUM); > + > + /* For DWMMC always set boot device as mmc 0 */ > + if (count >= 3 && get_boot_mode() == BOOT_MODE_SD) { > + boot_dev_node = node_list[2]; > + node_list[2] = node_list[0]; > + node_list[0] = boot_dev_node; > + } > + > err = exynos_dwmci_process_node(blob, node_list, count); > > return err; > -- > 1.9.1 > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot