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()".

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,
--
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marc...@samsung.com
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to