Dear Przemyslaw Marczak, On 12/06/14 18:46, Przemyslaw Marczak wrote: > It is possible to boot from a few media devices, especially using a micro > SD or eMMC slots. In this situation, boot device should be registered > as block device 0 in the MMC framework, because CONFIG_SYS_MMC_ENV_DEV > is usually set to "0" in the most config cases. > > Signed-off-by: Przemyslaw Marczak <p.marc...@samsung.com> > Cc: Piotr Wilczek <p.wilc...@samsung.com> > Cc: Minkyu Kang <mk7.k...@samsung.com> > --- > board/samsung/common/board.c | 32 ++++++++++++++++++++++++-------- > include/samsung/misc.h | 5 +++++ > 2 files changed, 29 insertions(+), 8 deletions(-) > > diff --git a/board/samsung/common/board.c b/board/samsung/common/board.c > index 9dc7c83..2970340 100644 > --- a/board/samsung/common/board.c > +++ b/board/samsung/common/board.c > @@ -25,6 +25,8 @@ > #include <lcd.h> > #include <samsung/misc.h> > > +static int bootmode; > + > DECLARE_GLOBAL_DATA_PTR; > > int __exynos_early_init_f(void) > @@ -243,19 +245,33 @@ int board_eth_init(bd_t *bis) > int board_mmc_init(bd_t *bis) > { > int ret; > + struct exynos4_power *pwr = (struct exynos4_power *) > + samsung_get_base_power();
Hm, no. This file is samsung common not only for exynos4. Although this code will not be made any problems for other SoCs (because om_stat is always first item of power), it looks weird. I think you can make new function for getting boot mode. > + > + bootmode = BOOT_MODE(readl(&pwr->om_stat)); > + if (bootmode == BOOT_SDMMC) { > +#ifdef CONFIG_SDHCI > + /* mmc initializattion for available channels */ > + ret = exynos_mmc_init(gd->fdt_blob); > +#endif > #ifdef CONFIG_DWMMC > - /* dwmmc initializattion for available channels */ > - ret = exynos_dwmmc_init(gd->fdt_blob); > - if (ret) > - debug("dwmmc init failed\n"); > + /* dwmmc initializattion for available channels */ > + ret = exynos_dwmmc_init(gd->fdt_blob); > +#endif > + } else { > +#ifdef CONFIG_DWMMC > + /* dwmmc initializattion for available channels */ > + ret = exynos_dwmmc_init(gd->fdt_blob); > #endif > - > #ifdef CONFIG_SDHCI > - /* mmc initializattion for available channels */ > - ret = exynos_mmc_init(gd->fdt_blob); > + /* mmc initializattion for available channels */ > + ret = exynos_mmc_init(gd->fdt_blob); > +#endif > + } > + > if (ret) > debug("mmc init failed\n"); > -#endif > + > return ret; > } > #endif > diff --git a/include/samsung/misc.h b/include/samsung/misc.h > index 10653a1..87b53ec 100644 > --- a/include/samsung/misc.h > +++ b/include/samsung/misc.h > @@ -28,4 +28,9 @@ void check_boot_mode(void); > void draw_logo(void); > #endif > > +#define BOOT_SDMMC 0x2 > +#define BOOT_MODE_MASK (0x1f) > +#define BOOT_MODE_SHIFT (0x1) > +#define BOOT_MODE(x) ((x >> BOOT_MODE_SHIFT) & BOOT_MODE_MASK) ((x) >> BOOT_MODE_SHIFT) > + > #endif /* __SAMSUNG_MISC_COMMON_H__ */ > Thanks, Minkyu Kang. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot