mbox series

[U-Boot,v3,0/9] arm: exynos: Fix reboot on Odroid HC1

Message ID 20190216094548.911-1-krzk@kernel.org
Headers show
Series arm: exynos: Fix reboot on Odroid HC1 | expand

Message

Krzysztof Kozlowski Feb. 16, 2019, 9:45 a.m. UTC
Hi,

Changes since v2
================
1. Add Lukasz review tags.
2. Patch 7: Return on error, as suggested by Simon.
2. Patch 3: Use IS_ENABLED() to run revision detection only
   once - either during late display board or misc_init_r.

Changes since v1
================
1. Move fixes to beginning of patchset.
2. Patch 3: Rework the idea - split revision detection to be executed later.
3. Patch 4: New patch.
4. Patch 6: Apply Simon's comments.
5. Patch 6: Do not delay when changing voltage if regulator is disabled.
6. Patch 6: Do not delay when disabling the regulator.


Description
===========
Odroid HC1 does not reboot properly (at least from SD card but
I do not expect difference on eMMC), if LDO4/VDD_ADC was turned
off by Linux kernel.  This condition happens so far always, because
Linux kernel did not enable ADC on Odroid HC1, therefore the
VDD_ADC regulator was turned off as unused.

The issue is in detection of revision which later is used to load
proper DTB.

The revision is obtained by ADC read of a voltage depending on VDD_ADC.
Therefore:
1. VDD_ADC has to be turned on (but board detection happens before
   power is initialized),
2. Turning VDD_ADC should wait with ramp delay,
3. Reading the value from ADC should wait for it to stabilize.

Tested on Odroid XU3-Lite and Odroid HC1.

Commends and testing are welcomed.

Best regards,
Krzysztof

Krzysztof Kozlowski (9):
  adc: exynos-adc: Fix wrong bit operation used to stop the ADC
  power: regulator: s2mps11: Fix step for LDO27 and LDO35
  arm: exynos: Detect revision later, when all resources are ready
  arm: exynos: odroid-xu3: Display info late to have proper type
  arm: exynos: Wait till ADC stabilizes before checking Odroid HC1
    revision
  regulator: Add support for ramp delay
  power: regulator: s2mps11: Add enable delay
  arm: dts: exynos: Add supply for ADC block to Odroid XU3 family
  arm: dts: exynos: Add ramp delay property to LDO regulators to Odroid
    XU3 family

 arch/arm/dts/exynos5422-odroidxu3.dts         | 20 +++++++
 board/samsung/common/board.c                  | 24 ++++++++-
 board/samsung/common/exynos5-dt-types.c       | 54 +++++++++++++++++--
 board/samsung/odroid/odroid.c                 |  8 +++
 configs/odroid-xu3_defconfig                  |  2 +
 .../regulator/regulator.txt                   |  2 +
 drivers/adc/exynos-adc.c                      |  2 +-
 drivers/power/regulator/regulator-uclass.c    | 47 +++++++++++++++-
 drivers/power/regulator/s2mps11_regulator.c   | 15 +++++-
 include/power/regulator.h                     |  2 +
 include/samsung/misc.h                        |  1 +
 11 files changed, 167 insertions(+), 10 deletions(-)

Comments

Anand Moon Feb. 24, 2019, 12:55 p.m. UTC | #1
Hi Krzysztof,

Please add my. on Odroid HC1

Tested-by: Anand Moon <linux.amoon@gmail.com>

Best Regards
-Anand

On Sat, 16 Feb 2019 at 15:16, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
> Hi,
>
> Changes since v2
> ================
> 1. Add Lukasz review tags.
> 2. Patch 7: Return on error, as suggested by Simon.
> 2. Patch 3: Use IS_ENABLED() to run revision detection only
>    once - either during late display board or misc_init_r.
>
> Changes since v1
> ================
> 1. Move fixes to beginning of patchset.
> 2. Patch 3: Rework the idea - split revision detection to be executed later.
> 3. Patch 4: New patch.
> 4. Patch 6: Apply Simon's comments.
> 5. Patch 6: Do not delay when changing voltage if regulator is disabled.
> 6. Patch 6: Do not delay when disabling the regulator.
>
>
> Description
> ===========
> Odroid HC1 does not reboot properly (at least from SD card but
> I do not expect difference on eMMC), if LDO4/VDD_ADC was turned
> off by Linux kernel.  This condition happens so far always, because
> Linux kernel did not enable ADC on Odroid HC1, therefore the
> VDD_ADC regulator was turned off as unused.
>
> The issue is in detection of revision which later is used to load
> proper DTB.
>
> The revision is obtained by ADC read of a voltage depending on VDD_ADC.
> Therefore:
> 1. VDD_ADC has to be turned on (but board detection happens before
>    power is initialized),
> 2. Turning VDD_ADC should wait with ramp delay,
> 3. Reading the value from ADC should wait for it to stabilize.
>
> Tested on Odroid XU3-Lite and Odroid HC1.
>
> Commends and testing are welcomed.
>
> Best regards,
> Krzysztof
>
> Krzysztof Kozlowski (9):
>   adc: exynos-adc: Fix wrong bit operation used to stop the ADC
>   power: regulator: s2mps11: Fix step for LDO27 and LDO35
>   arm: exynos: Detect revision later, when all resources are ready
>   arm: exynos: odroid-xu3: Display info late to have proper type
>   arm: exynos: Wait till ADC stabilizes before checking Odroid HC1
>     revision
>   regulator: Add support for ramp delay
>   power: regulator: s2mps11: Add enable delay
>   arm: dts: exynos: Add supply for ADC block to Odroid XU3 family
>   arm: dts: exynos: Add ramp delay property to LDO regulators to Odroid
>     XU3 family
>
>  arch/arm/dts/exynos5422-odroidxu3.dts         | 20 +++++++
>  board/samsung/common/board.c                  | 24 ++++++++-
>  board/samsung/common/exynos5-dt-types.c       | 54 +++++++++++++++++--
>  board/samsung/odroid/odroid.c                 |  8 +++
>  configs/odroid-xu3_defconfig                  |  2 +
>  .../regulator/regulator.txt                   |  2 +
>  drivers/adc/exynos-adc.c                      |  2 +-
>  drivers/power/regulator/regulator-uclass.c    | 47 +++++++++++++++-
>  drivers/power/regulator/s2mps11_regulator.c   | 15 +++++-
>  include/power/regulator.h                     |  2 +
>  include/samsung/misc.h                        |  1 +
>  11 files changed, 167 insertions(+), 10 deletions(-)
>
> --
> 2.17.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> https://lists.denx.de/listinfo/u-boot
Minkyu Kang March 5, 2019, 10:16 a.m. UTC | #2
Dear Krzysztof Kozlowski,

On 24/02/2019 21:55, Anand Moon wrote:
> Hi Krzysztof,
> 
> Please add my. on Odroid HC1
> 
> Tested-by: Anand Moon <linux.amoon@gmail.com>
> 
> Best Regards
> -Anand
> 
> On Sat, 16 Feb 2019 at 15:16, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>
>> Hi,
>>
>> Changes since v2
>> ================
>> 1. Add Lukasz review tags.
>> 2. Patch 7: Return on error, as suggested by Simon.
>> 2. Patch 3: Use IS_ENABLED() to run revision detection only
>>    once - either during late display board or misc_init_r.
>>
>> Changes since v1
>> ================
>> 1. Move fixes to beginning of patchset.
>> 2. Patch 3: Rework the idea - split revision detection to be executed later.
>> 3. Patch 4: New patch.
>> 4. Patch 6: Apply Simon's comments.
>> 5. Patch 6: Do not delay when changing voltage if regulator is disabled.
>> 6. Patch 6: Do not delay when disabling the regulator.
>>
>>
>> Description
>> ===========
>> Odroid HC1 does not reboot properly (at least from SD card but
>> I do not expect difference on eMMC), if LDO4/VDD_ADC was turned
>> off by Linux kernel.  This condition happens so far always, because
>> Linux kernel did not enable ADC on Odroid HC1, therefore the
>> VDD_ADC regulator was turned off as unused.
>>
>> The issue is in detection of revision which later is used to load
>> proper DTB.
>>
>> The revision is obtained by ADC read of a voltage depending on VDD_ADC.
>> Therefore:
>> 1. VDD_ADC has to be turned on (but board detection happens before
>>    power is initialized),
>> 2. Turning VDD_ADC should wait with ramp delay,
>> 3. Reading the value from ADC should wait for it to stabilize.
>>
>> Tested on Odroid XU3-Lite and Odroid HC1.
>>
>> Commends and testing are welcomed.
>>
>> Best regards,
>> Krzysztof
>>
>> Krzysztof Kozlowski (9):
>>   adc: exynos-adc: Fix wrong bit operation used to stop the ADC
>>   power: regulator: s2mps11: Fix step for LDO27 and LDO35
>>   arm: exynos: Detect revision later, when all resources are ready
>>   arm: exynos: odroid-xu3: Display info late to have proper type
>>   arm: exynos: Wait till ADC stabilizes before checking Odroid HC1
>>     revision
>>   regulator: Add support for ramp delay
>>   power: regulator: s2mps11: Add enable delay
>>   arm: dts: exynos: Add supply for ADC block to Odroid XU3 family
>>   arm: dts: exynos: Add ramp delay property to LDO regulators to Odroid
>>     XU3 family
>>
>>  arch/arm/dts/exynos5422-odroidxu3.dts         | 20 +++++++
>>  board/samsung/common/board.c                  | 24 ++++++++-
>>  board/samsung/common/exynos5-dt-types.c       | 54 +++++++++++++++++--
>>  board/samsung/odroid/odroid.c                 |  8 +++
>>  configs/odroid-xu3_defconfig                  |  2 +
>>  .../regulator/regulator.txt                   |  2 +
>>  drivers/adc/exynos-adc.c                      |  2 +-
>>  drivers/power/regulator/regulator-uclass.c    | 47 +++++++++++++++-
>>  drivers/power/regulator/s2mps11_regulator.c   | 15 +++++-
>>  include/power/regulator.h                     |  2 +
>>  include/samsung/misc.h                        |  1 +
>>  11 files changed, 167 insertions(+), 10 deletions(-)
>>
>> --
>> 2.17.1
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot@lists.denx.de
>> https://lists.denx.de/listinfo/u-boot
> 
> 

Patch looks good but could you please rebase on latest u-boot-samsung tree?

Applying: adc: exynos-adc: Fix wrong bit operation used to stop the ADC
Applying: power: regulator: s2mps11: Fix step for LDO27 and LDO35
Applying: arm: exynos: Detect revision later, when all resources are ready
Applying: arm: exynos: odroid-xu3: Display info late to have proper type
error: patch failed: configs/odroid-xu3_defconfig:11
error: configs/odroid-xu3_defconfig: patch does not apply
Patch failed at 0004 arm: exynos: odroid-xu3: Display info late to have proper type

Thanks,
Minkyu Kang.
Krzysztof Kozlowski March 5, 2019, 7:54 p.m. UTC | #3
On Tue, 5 Mar 2019 at 11:16, Minkyu Kang <mk7.kang@samsung.com> wrote:
>
> Dear Krzysztof Kozlowski,
>
> On 24/02/2019 21:55, Anand Moon wrote:
> > Hi Krzysztof,
> >
> > Please add my. on Odroid HC1
> >
> > Tested-by: Anand Moon <linux.amoon@gmail.com>
> >
> > Best Regards
> > -Anand
> >
> > On Sat, 16 Feb 2019 at 15:16, Krzysztof Kozlowski <krzk@kernel.org> wrote:
> >>
> >> Hi,
> >>
> >> Changes since v2
> >> ================
> >> 1. Add Lukasz review tags.
> >> 2. Patch 7: Return on error, as suggested by Simon.
> >> 2. Patch 3: Use IS_ENABLED() to run revision detection only
> >>    once - either during late display board or misc_init_r.
> >>
> >> Changes since v1
> >> ================
> >> 1. Move fixes to beginning of patchset.
> >> 2. Patch 3: Rework the idea - split revision detection to be executed later.
> >> 3. Patch 4: New patch.
> >> 4. Patch 6: Apply Simon's comments.
> >> 5. Patch 6: Do not delay when changing voltage if regulator is disabled.
> >> 6. Patch 6: Do not delay when disabling the regulator.
> >>
> >>
> >> Description
> >> ===========
> >> Odroid HC1 does not reboot properly (at least from SD card but
> >> I do not expect difference on eMMC), if LDO4/VDD_ADC was turned
> >> off by Linux kernel.  This condition happens so far always, because
> >> Linux kernel did not enable ADC on Odroid HC1, therefore the
> >> VDD_ADC regulator was turned off as unused.
> >>
> >> The issue is in detection of revision which later is used to load
> >> proper DTB.
> >>
> >> The revision is obtained by ADC read of a voltage depending on VDD_ADC.
> >> Therefore:
> >> 1. VDD_ADC has to be turned on (but board detection happens before
> >>    power is initialized),
> >> 2. Turning VDD_ADC should wait with ramp delay,
> >> 3. Reading the value from ADC should wait for it to stabilize.
> >>
> >> Tested on Odroid XU3-Lite and Odroid HC1.
> >>
> >> Commends and testing are welcomed.
> >>
> >> Best regards,
> >> Krzysztof
> >>
> >> Krzysztof Kozlowski (9):
> >>   adc: exynos-adc: Fix wrong bit operation used to stop the ADC
> >>   power: regulator: s2mps11: Fix step for LDO27 and LDO35
> >>   arm: exynos: Detect revision later, when all resources are ready
> >>   arm: exynos: odroid-xu3: Display info late to have proper type
> >>   arm: exynos: Wait till ADC stabilizes before checking Odroid HC1
> >>     revision
> >>   regulator: Add support for ramp delay
> >>   power: regulator: s2mps11: Add enable delay
> >>   arm: dts: exynos: Add supply for ADC block to Odroid XU3 family
> >>   arm: dts: exynos: Add ramp delay property to LDO regulators to Odroid
> >>     XU3 family
> >>
> >>  arch/arm/dts/exynos5422-odroidxu3.dts         | 20 +++++++
> >>  board/samsung/common/board.c                  | 24 ++++++++-
> >>  board/samsung/common/exynos5-dt-types.c       | 54 +++++++++++++++++--
> >>  board/samsung/odroid/odroid.c                 |  8 +++
> >>  configs/odroid-xu3_defconfig                  |  2 +
> >>  .../regulator/regulator.txt                   |  2 +
> >>  drivers/adc/exynos-adc.c                      |  2 +-
> >>  drivers/power/regulator/regulator-uclass.c    | 47 +++++++++++++++-
> >>  drivers/power/regulator/s2mps11_regulator.c   | 15 +++++-
> >>  include/power/regulator.h                     |  2 +
> >>  include/samsung/misc.h                        |  1 +
> >>  11 files changed, 167 insertions(+), 10 deletions(-)
> >>
> >> --
> >> 2.17.1
> >>
> >> _______________________________________________
> >> U-Boot mailing list
> >> U-Boot@lists.denx.de
> >> https://lists.denx.de/listinfo/u-boot
> >
> >
>
> Patch looks good but could you please rebase on latest u-boot-samsung tree?
>
> Applying: adc: exynos-adc: Fix wrong bit operation used to stop the ADC
> Applying: power: regulator: s2mps11: Fix step for LDO27 and LDO35
> Applying: arm: exynos: Detect revision later, when all resources are ready
> Applying: arm: exynos: odroid-xu3: Display info late to have proper type
> error: patch failed: configs/odroid-xu3_defconfig:11
> error: configs/odroid-xu3_defconfig: patch does not apply
> Patch failed at 0004 arm: exynos: odroid-xu3: Display info late to have proper type

Sure, let me rebase.

Best regards,
Krzysztof