
On Mon, 11 Feb 2019 at 09:14, Lukasz Majewski lukma@denx.de wrote:
Hi Krzysztof,
On Mon, 11 Feb 2019 at 08:20, Lukasz Majewski lukma@denx.de wrote:
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).
So basically you want to move the board detection after the exynos_power_init()... maybe it is possible. The other way is to split set_board_type() into OF part (for compatible and main board difference) and revision detection (requiring ADC). Maybe it is possible, but isn't it used before?
I do want to avoid making the detection twice;
First time when we have the LDO4 enabled by default and the second time when it may happen that we do a soft reset from Linux (which disabled LDO4).
This I understand but isn't the board type used BEFORE the power init? Power init cannot be moved early as it depends on having proper resources (as I wrote in commit msg)... so only board detection can be moved later. But if setting up resources (e.g. regulators) requires board type then it is circular dependency... so I asked - isn't board type used before power init?
Best regards, Krzysztof