Detection of board type is done early - before power setup.  In case of
Odroid XU3/XU4/HC1 family, the detection is done using ADC which
is supplied by LDO4/VDD_ADC regulator.  This regulator could be turned
off (e.g. by kernel before reboot);  If ADC is used early, the
regulators are not yet available and the detection won't work.

Try to detect the revision again, once power is brought up.

This is necessary to fix the detection of Odroid HC1 after reboot, if
kernel turned off the LDO4 regulator.  Otherwise the board is not
detected....

Signed-off-by: Krzysztof Kozlowski <k...@kernel.org>
---
 board/samsung/common/board.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/board/samsung/common/board.c b/board/samsung/common/board.c
index 6fd26a3a9198..1e2dabe68d11 100644
--- a/board/samsung/common/board.c
+++ b/board/samsung/common/board.c
@@ -147,6 +147,11 @@ int board_early_init_f(void)
 {
        int err;
 #ifdef CONFIG_BOARD_TYPES
+       /*
+        * It is done early so power might not be set up yet.  In such case
+        * specific revision detection with ADC might not work and need to me
+        * redone later.
+        */
        set_board_type();
 #endif
        err = board_uart_init();
@@ -166,9 +171,21 @@ int board_early_init_f(void)
 #if defined(CONFIG_POWER) || defined(CONFIG_DM_PMIC)
 int power_init_board(void)
 {
+       int ret;
+
        set_ps_hold_ctrl();
 
-       return exynos_power_init();
+       ret = exynos_power_init();
+
+#ifdef CONFIG_BOARD_TYPES
+       /*
+        * Since power is on, redo the board detection (external peripherals
+        * are on).
+        */
+       set_board_type();
+#endif
+
+       return ret;
 }
 #endif
 
-- 
2.17.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to