[v4,3/3] powerpc: dts: turris1x.dts: Set lower priority for CPLD syscon-reboot

Message ID 20221226114513.4569-3-pali@kernel.org
State New
Headers
Series [v4,1/3] dt-bindings: reset: syscon-reboot: Add priority property |

Commit Message

Pali Rohár Dec. 26, 2022, 11:45 a.m. UTC
  Due to CPLD firmware bugs, set CPLD syscon-reboot priority level to 64
(between rstcr and watchdog) to ensure that rstcr's global-utilities reset
method which is preferred stay as default one, and to ensure that CPLD
syscon-reboot is more preferred than watchdog reset method.

Fixes: 0531a4abd1c6 ("powerpc: dts: turris1x.dts: Add CPLD reboot node")
Signed-off-by: Pali Rohár <pali@kernel.org>
---
 arch/powerpc/boot/dts/turris1x.dts | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)
  

Comments

Pali Rohár Feb. 9, 2023, 12:10 a.m. UTC | #1
On Monday 26 December 2022 12:45:13 Pali Rohár wrote:
> Due to CPLD firmware bugs, set CPLD syscon-reboot priority level to 64
> (between rstcr and watchdog) to ensure that rstcr's global-utilities reset
> method which is preferred stay as default one, and to ensure that CPLD
> syscon-reboot is more preferred than watchdog reset method.
> 
> Fixes: 0531a4abd1c6 ("powerpc: dts: turris1x.dts: Add CPLD reboot node")
> Signed-off-by: Pali Rohár <pali@kernel.org>

May I ask who can take this 3/3 patch? powersupply or powerpc tree?

> ---
>  arch/powerpc/boot/dts/turris1x.dts | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/arch/powerpc/boot/dts/turris1x.dts b/arch/powerpc/boot/dts/turris1x.dts
> index e9cda34a140e..c9b619f6ed5c 100644
> --- a/arch/powerpc/boot/dts/turris1x.dts
> +++ b/arch/powerpc/boot/dts/turris1x.dts
> @@ -367,11 +367,34 @@
>  			};
>  
>  			reboot@d {
> +				/*
> +				 * CPLD firmware which manages system reset and
> +				 * watchdog registers has bugs. It does not
> +				 * autoclear system reset register after change
> +				 * and watchdog ignores reset line on immediate
> +				 * succeeding reset cycle triggered by watchdog.
> +				 * These bugs have to be workarounded in U-Boot
> +				 * bootloader. So use system reset via syscon as
> +				 * a last resort because older U-Boot versions
> +				 * do not have workaround for watchdog.
> +				 *
> +				 * Reset method via rstcr's global-utilities
> +				 * (the preferred one) has priority level 128,
> +				 * watchdog has priority level 0 and default
> +				 * syscon-reboot priority level is 192.
> +				 *
> +				 * So define syscon-reboot with custom priority
> +				 * level 64 (between rstcr and watchdog) because
> +				 * rstcr should stay as default preferred reset
> +				 * method and reset via watchdog is more broken
> +				 * than system reset via syscon.
> +				 */
>  				compatible = "syscon-reboot";
>  				reg = <0x0d 0x01>;
>  				offset = <0x0d>;
>  				mask = <0x01>;
>  				value = <0x01>;
> +				priority = <64>;
>  			};
>  
>  			led-controller@13 {
> -- 
> 2.20.1
>
  
Pali Rohár Feb. 18, 2023, 12:05 p.m. UTC | #2
On Thursday 09 February 2023 01:10:21 Pali Rohár wrote:
> On Monday 26 December 2022 12:45:13 Pali Rohár wrote:
> > Due to CPLD firmware bugs, set CPLD syscon-reboot priority level to 64
> > (between rstcr and watchdog) to ensure that rstcr's global-utilities reset
> > method which is preferred stay as default one, and to ensure that CPLD
> > syscon-reboot is more preferred than watchdog reset method.
> > 
> > Fixes: 0531a4abd1c6 ("powerpc: dts: turris1x.dts: Add CPLD reboot node")
> > Signed-off-by: Pali Rohár <pali@kernel.org>
> 
> May I ask who can take this 3/3 patch? powersupply or powerpc tree?

+ Christophe

> > ---
> >  arch/powerpc/boot/dts/turris1x.dts | 23 +++++++++++++++++++++++
> >  1 file changed, 23 insertions(+)
> > 
> > diff --git a/arch/powerpc/boot/dts/turris1x.dts b/arch/powerpc/boot/dts/turris1x.dts
> > index e9cda34a140e..c9b619f6ed5c 100644
> > --- a/arch/powerpc/boot/dts/turris1x.dts
> > +++ b/arch/powerpc/boot/dts/turris1x.dts
> > @@ -367,11 +367,34 @@
> >  			};
> >  
> >  			reboot@d {
> > +				/*
> > +				 * CPLD firmware which manages system reset and
> > +				 * watchdog registers has bugs. It does not
> > +				 * autoclear system reset register after change
> > +				 * and watchdog ignores reset line on immediate
> > +				 * succeeding reset cycle triggered by watchdog.
> > +				 * These bugs have to be workarounded in U-Boot
> > +				 * bootloader. So use system reset via syscon as
> > +				 * a last resort because older U-Boot versions
> > +				 * do not have workaround for watchdog.
> > +				 *
> > +				 * Reset method via rstcr's global-utilities
> > +				 * (the preferred one) has priority level 128,
> > +				 * watchdog has priority level 0 and default
> > +				 * syscon-reboot priority level is 192.
> > +				 *
> > +				 * So define syscon-reboot with custom priority
> > +				 * level 64 (between rstcr and watchdog) because
> > +				 * rstcr should stay as default preferred reset
> > +				 * method and reset via watchdog is more broken
> > +				 * than system reset via syscon.
> > +				 */
> >  				compatible = "syscon-reboot";
> >  				reg = <0x0d 0x01>;
> >  				offset = <0x0d>;
> >  				mask = <0x01>;
> >  				value = <0x01>;
> > +				priority = <64>;
> >  			};
> >  
> >  			led-controller@13 {
> > -- 
> > 2.20.1
> >
  
Michael Ellerman Feb. 20, 2023, 12:55 a.m. UTC | #3
Pali Rohár <pali@kernel.org> writes:
> On Thursday 09 February 2023 01:10:21 Pali Rohár wrote:
>> On Monday 26 December 2022 12:45:13 Pali Rohár wrote:
>> > Due to CPLD firmware bugs, set CPLD syscon-reboot priority level to 64
>> > (between rstcr and watchdog) to ensure that rstcr's global-utilities reset
>> > method which is preferred stay as default one, and to ensure that CPLD
>> > syscon-reboot is more preferred than watchdog reset method.
>> > 
>> > Fixes: 0531a4abd1c6 ("powerpc: dts: turris1x.dts: Add CPLD reboot node")
>> > Signed-off-by: Pali Rohár <pali@kernel.org>
>> 
>> May I ask who can take this 3/3 patch? powersupply or powerpc tree?

I assume the fact that Sebastian applied patches 1 & 2 means he didn't
want to take this one.

So the best way to get it applied by me is to send a new version with
just patch 3, with the changelog explaining that commit xxxyyy
implements the property and this patch is just wiring it up.

cheers
  

Patch

diff --git a/arch/powerpc/boot/dts/turris1x.dts b/arch/powerpc/boot/dts/turris1x.dts
index e9cda34a140e..c9b619f6ed5c 100644
--- a/arch/powerpc/boot/dts/turris1x.dts
+++ b/arch/powerpc/boot/dts/turris1x.dts
@@ -367,11 +367,34 @@ 
 			};
 
 			reboot@d {
+				/*
+				 * CPLD firmware which manages system reset and
+				 * watchdog registers has bugs. It does not
+				 * autoclear system reset register after change
+				 * and watchdog ignores reset line on immediate
+				 * succeeding reset cycle triggered by watchdog.
+				 * These bugs have to be workarounded in U-Boot
+				 * bootloader. So use system reset via syscon as
+				 * a last resort because older U-Boot versions
+				 * do not have workaround for watchdog.
+				 *
+				 * Reset method via rstcr's global-utilities
+				 * (the preferred one) has priority level 128,
+				 * watchdog has priority level 0 and default
+				 * syscon-reboot priority level is 192.
+				 *
+				 * So define syscon-reboot with custom priority
+				 * level 64 (between rstcr and watchdog) because
+				 * rstcr should stay as default preferred reset
+				 * method and reset via watchdog is more broken
+				 * than system reset via syscon.
+				 */
 				compatible = "syscon-reboot";
 				reg = <0x0d 0x01>;
 				offset = <0x0d>;
 				mask = <0x01>;
 				value = <0x01>;
+				priority = <64>;
 			};
 
 			led-controller@13 {