
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.marczak@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
-#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