Hi, Przemyslaw. On 07/04/2014 05:07 PM, Przemyslaw Marczak wrote: > Hello Jaehoon, > > On 07/04/2014 07:45 AM, Jaehoon Chung wrote: >> Hi, Przemyslaw. >> >> On 07/02/2014 08:50 PM, Przemyslaw Marczak wrote: >>> It is possible to boot device using a micro SD or eMMC slots. >>> In this situation, boot device should be registered as a 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> >>> --- >>> Changes V3: >>> - separate two changes into two commits >>> >>> Changes V4: >>> - board.c: add functions: init_mmc() and init_dwmmc() >>> - board_mmc_init(): call get_boot_mode() >>> --- >>> board/samsung/common/board.c | 37 +++++++++++++++++++++++++++---------- >>> 1 file changed, 27 insertions(+), 10 deletions(-) >>> >>> diff --git a/board/samsung/common/board.c b/board/samsung/common/board.c >>> index 9dc7c83..4d3f216 100644 >>> --- a/board/samsung/common/board.c >>> +++ b/board/samsung/common/board.c >>> @@ -240,22 +240,39 @@ int board_eth_init(bd_t *bis) >>> } >>> >>> #ifdef CONFIG_GENERIC_MMC >>> -int board_mmc_init(bd_t *bis) >>> +static int init_mmc(void) >>> +{ >>> +#ifdef CONFIG_SDHCI >>> + return exynos_mmc_init(gd->fdt_blob); >>> +#else >>> + return 0; >>> +#endif >>> +} >>> + >>> +static int init_dwmmc(void) >>> { >>> - int ret; >>> #ifdef CONFIG_DWMMC >>> - /* dwmmc initializattion for available channels */ >>> - ret = exynos_dwmmc_init(gd->fdt_blob); >>> - if (ret) >>> - debug("dwmmc init failed\n"); >>> + return exynos_dwmmc_init(gd->fdt_blob); >>> +#else >>> + return 0; >>> #endif >>> +} >>> + >>> +int board_mmc_init(bd_t *bis) >>> +{ >>> + int ret; >>> + >>> + if (get_boot_mode() == BOOT_MODE_MMC) { >>> + ret = init_mmc(); >>> + ret |= init_dwmmc(); >>> + } else { >>> + ret = init_dwmmc(); >>> + ret |= init_mmc(); >>> + } >> Well, i have some confusion for this. >> Did you consider the case like init_dwmmc() is succeed and init_mmc() is >> failed? >> it's hard to control the error for both. >> >> Best Regards, >> Jaehoon Chung > > In our vendor init code, the value returned by this function has no > significant meaning since there is no implementation of function > "cpu_mmc_init()". Ok..then ret value is used to just "debug display", right?
Best Regards, Jaehoon Chung > > So checking this error is just for a debug purposes: > # if (ret) > # debug("mmc init failed\n"); > > and the returned value: > mmc | dwmmc -> ret > 0 | 1 -> 1 > 1 | 0 -> 1 > 1 | 1 -> 1 > 0 | 0 -> 0 > > So we have an error message on any error. > >>> >>> -#ifdef CONFIG_SDHCI >>> - /* mmc initializattion for available channels */ >>> - ret = exynos_mmc_init(gd->fdt_blob); >>> if (ret) >>> debug("mmc init failed\n"); >>> -#endif >>> + >>> return ret; >>> } >>> #endif >>> >> >> > > Thank you, _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot