[U-Boot] [RFT 1/8] exynos: Redo detection of revision when all resources are ready
Lukasz Majewski
lukma at denx.de
Mon Feb 11 07:20:17 UTC 2019
Hi Krzysztof,
> 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....
But such approach seems not to be the optimal one (as we perform
detection twice - with default LDO4 enabled after power on and after
soft reset).
I would expect to enable the LDO4 regulator in the early code (I2C
would be probably necessary) and then read ADC value properly once.
(I also guess that the "work-by-chance" approach is caused by default
settings of PMIC after power on).
As fair as I remember, TI is able to read the EEPROM via I2C in the
very early u-boot (MLO to be precise) code and then make the decision
regarding the platform.
Maybe it would be possible to do the same with Samsung?
And another thought - if the set_board_type() can be called latter and
it works - why cannot we move it to this latter point and execute
exactly once?
>
> Signed-off-by: Krzysztof Kozlowski <krzk at 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
>
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190211/c5071abd/attachment.sig>
More information about the U-Boot
mailing list