* [PATCH v6 0/4] drivers: watchdog: ast2500 and ast2600 support bootstatus @ 2024-03-28 2:22 ` Peter Yin 0 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: linux-aspeed Add WDIOF_EXTERN1 and WDIOF_CARDRESET bootstatus in ast2500/ast2600 Regarding the AST2600 specification, the WDTn Timeout Status Register (WDT10) has bit 1 reserved. Bit 1 of the status register indicates on ast2500 if the boot was from the second boot source. It does not indicate that the most recent reset was triggered by the watchdog. The code should just be changed to set WDIOF_CARDRESET if bit 0 of the status register is set. Include SCU register to veriy WDIOF_EXTERN1 in ast2600 SCU74 or ast2500 SCU3C when bit1 is set. Change Log: v5 -> v6 - Fixed missing WDT_TIMEOUT_STATUS_EVENT. v4 -> v5 - Revert indentation. v3 -> v4 - Add error handling for syscon_regmap_lookup_by_phandle and regmap_read. v2 -> v3 - Fixed WDIOF_CARDRESET status bit check and added support for WDIOF_EXTERN1 on ast2500 and ast2600. v1 -> v2 - Add comment and support WDIOF_CARDRESET in ast2600 v1 - Patch 0001 - Add WDIOF_EXTERN1 bootstatus --- Peter Yin (4): ARM: dts: aspeed: Add the AST2500 WDT with SCU register ARM: dts: aspeed: Add the AST2600 WDT with SCU register dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu drivers: watchdog: ast2500 and ast2600 support bootstatus .../bindings/watchdog/aspeed-wdt.txt | 4 +++ arch/arm/boot/dts/aspeed/aspeed-g5.dtsi | 3 ++ arch/arm/boot/dts/aspeed/aspeed-g6.dtsi | 4 +++ drivers/watchdog/aspeed_wdt.c | 35 ++++++++++++++++--- 4 files changed, 42 insertions(+), 4 deletions(-) -- 2.25.1 ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v6 0/4] drivers: watchdog: ast2500 and ast2600 support bootstatus @ 2024-03-28 2:22 ` Peter Yin 0 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: patrick, Wim Van Sebroeck, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel Add WDIOF_EXTERN1 and WDIOF_CARDRESET bootstatus in ast2500/ast2600 Regarding the AST2600 specification, the WDTn Timeout Status Register (WDT10) has bit 1 reserved. Bit 1 of the status register indicates on ast2500 if the boot was from the second boot source. It does not indicate that the most recent reset was triggered by the watchdog. The code should just be changed to set WDIOF_CARDRESET if bit 0 of the status register is set. Include SCU register to veriy WDIOF_EXTERN1 in ast2600 SCU74 or ast2500 SCU3C when bit1 is set. Change Log: v5 -> v6 - Fixed missing WDT_TIMEOUT_STATUS_EVENT. v4 -> v5 - Revert indentation. v3 -> v4 - Add error handling for syscon_regmap_lookup_by_phandle and regmap_read. v2 -> v3 - Fixed WDIOF_CARDRESET status bit check and added support for WDIOF_EXTERN1 on ast2500 and ast2600. v1 -> v2 - Add comment and support WDIOF_CARDRESET in ast2600 v1 - Patch 0001 - Add WDIOF_EXTERN1 bootstatus --- Peter Yin (4): ARM: dts: aspeed: Add the AST2500 WDT with SCU register ARM: dts: aspeed: Add the AST2600 WDT with SCU register dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu drivers: watchdog: ast2500 and ast2600 support bootstatus .../bindings/watchdog/aspeed-wdt.txt | 4 +++ arch/arm/boot/dts/aspeed/aspeed-g5.dtsi | 3 ++ arch/arm/boot/dts/aspeed/aspeed-g6.dtsi | 4 +++ drivers/watchdog/aspeed_wdt.c | 35 ++++++++++++++++--- 4 files changed, 42 insertions(+), 4 deletions(-) -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v6 0/4] drivers: watchdog: ast2500 and ast2600 support bootstatus @ 2024-03-28 2:22 ` Peter Yin 0 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: patrick, Wim Van Sebroeck, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel Add WDIOF_EXTERN1 and WDIOF_CARDRESET bootstatus in ast2500/ast2600 Regarding the AST2600 specification, the WDTn Timeout Status Register (WDT10) has bit 1 reserved. Bit 1 of the status register indicates on ast2500 if the boot was from the second boot source. It does not indicate that the most recent reset was triggered by the watchdog. The code should just be changed to set WDIOF_CARDRESET if bit 0 of the status register is set. Include SCU register to veriy WDIOF_EXTERN1 in ast2600 SCU74 or ast2500 SCU3C when bit1 is set. Change Log: v5 -> v6 - Fixed missing WDT_TIMEOUT_STATUS_EVENT. v4 -> v5 - Revert indentation. v3 -> v4 - Add error handling for syscon_regmap_lookup_by_phandle and regmap_read. v2 -> v3 - Fixed WDIOF_CARDRESET status bit check and added support for WDIOF_EXTERN1 on ast2500 and ast2600. v1 -> v2 - Add comment and support WDIOF_CARDRESET in ast2600 v1 - Patch 0001 - Add WDIOF_EXTERN1 bootstatus --- Peter Yin (4): ARM: dts: aspeed: Add the AST2500 WDT with SCU register ARM: dts: aspeed: Add the AST2600 WDT with SCU register dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu drivers: watchdog: ast2500 and ast2600 support bootstatus .../bindings/watchdog/aspeed-wdt.txt | 4 +++ arch/arm/boot/dts/aspeed/aspeed-g5.dtsi | 3 ++ arch/arm/boot/dts/aspeed/aspeed-g6.dtsi | 4 +++ drivers/watchdog/aspeed_wdt.c | 35 ++++++++++++++++--- 4 files changed, 42 insertions(+), 4 deletions(-) -- 2.25.1 ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v6 1/4] ARM: dts: aspeed: Add the AST2500 WDT with SCU register 2024-03-28 2:22 ` Peter Yin (?) @ 2024-03-28 2:22 ` Peter Yin -1 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: linux-aspeed The AST2500 WDT references the System Control Unit register for its operation. Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> --- arch/arm/boot/dts/aspeed/aspeed-g5.dtsi | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/arm/boot/dts/aspeed/aspeed-g5.dtsi b/arch/arm/boot/dts/aspeed/aspeed-g5.dtsi index 04f98d1dbb97..5fd12c057c31 100644 --- a/arch/arm/boot/dts/aspeed/aspeed-g5.dtsi +++ b/arch/arm/boot/dts/aspeed/aspeed-g5.dtsi @@ -410,12 +410,14 @@ wdt1: watchdog at 1e785000 { compatible = "aspeed,ast2500-wdt"; reg = <0x1e785000 0x20>; clocks = <&syscon ASPEED_CLK_APB>; + aspeed,scu = <&syscon>; }; wdt2: watchdog at 1e785020 { compatible = "aspeed,ast2500-wdt"; reg = <0x1e785020 0x20>; clocks = <&syscon ASPEED_CLK_APB>; + aspeed,scu = <&syscon>; }; wdt3: watchdog at 1e785040 { @@ -423,6 +425,7 @@ wdt3: watchdog at 1e785040 { reg = <0x1e785040 0x20>; clocks = <&syscon ASPEED_CLK_APB>; status = "disabled"; + aspeed,scu = <&syscon>; }; pwm_tacho: pwm-tacho-controller at 1e786000 { -- 2.25.1 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v6 1/4] ARM: dts: aspeed: Add the AST2500 WDT with SCU register @ 2024-03-28 2:22 ` Peter Yin 0 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: patrick, Wim Van Sebroeck, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel The AST2500 WDT references the System Control Unit register for its operation. Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> --- arch/arm/boot/dts/aspeed/aspeed-g5.dtsi | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/arm/boot/dts/aspeed/aspeed-g5.dtsi b/arch/arm/boot/dts/aspeed/aspeed-g5.dtsi index 04f98d1dbb97..5fd12c057c31 100644 --- a/arch/arm/boot/dts/aspeed/aspeed-g5.dtsi +++ b/arch/arm/boot/dts/aspeed/aspeed-g5.dtsi @@ -410,12 +410,14 @@ wdt1: watchdog@1e785000 { compatible = "aspeed,ast2500-wdt"; reg = <0x1e785000 0x20>; clocks = <&syscon ASPEED_CLK_APB>; + aspeed,scu = <&syscon>; }; wdt2: watchdog@1e785020 { compatible = "aspeed,ast2500-wdt"; reg = <0x1e785020 0x20>; clocks = <&syscon ASPEED_CLK_APB>; + aspeed,scu = <&syscon>; }; wdt3: watchdog@1e785040 { @@ -423,6 +425,7 @@ wdt3: watchdog@1e785040 { reg = <0x1e785040 0x20>; clocks = <&syscon ASPEED_CLK_APB>; status = "disabled"; + aspeed,scu = <&syscon>; }; pwm_tacho: pwm-tacho-controller@1e786000 { -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v6 1/4] ARM: dts: aspeed: Add the AST2500 WDT with SCU register @ 2024-03-28 2:22 ` Peter Yin 0 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: patrick, Wim Van Sebroeck, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel The AST2500 WDT references the System Control Unit register for its operation. Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> --- arch/arm/boot/dts/aspeed/aspeed-g5.dtsi | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/arm/boot/dts/aspeed/aspeed-g5.dtsi b/arch/arm/boot/dts/aspeed/aspeed-g5.dtsi index 04f98d1dbb97..5fd12c057c31 100644 --- a/arch/arm/boot/dts/aspeed/aspeed-g5.dtsi +++ b/arch/arm/boot/dts/aspeed/aspeed-g5.dtsi @@ -410,12 +410,14 @@ wdt1: watchdog@1e785000 { compatible = "aspeed,ast2500-wdt"; reg = <0x1e785000 0x20>; clocks = <&syscon ASPEED_CLK_APB>; + aspeed,scu = <&syscon>; }; wdt2: watchdog@1e785020 { compatible = "aspeed,ast2500-wdt"; reg = <0x1e785020 0x20>; clocks = <&syscon ASPEED_CLK_APB>; + aspeed,scu = <&syscon>; }; wdt3: watchdog@1e785040 { @@ -423,6 +425,7 @@ wdt3: watchdog@1e785040 { reg = <0x1e785040 0x20>; clocks = <&syscon ASPEED_CLK_APB>; status = "disabled"; + aspeed,scu = <&syscon>; }; pwm_tacho: pwm-tacho-controller@1e786000 { -- 2.25.1 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v6 2/4] ARM: dts: aspeed: Add the AST2600 WDT with SCU register 2024-03-28 2:22 ` Peter Yin (?) @ 2024-03-28 2:22 ` Peter Yin -1 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: linux-aspeed The AST2600 Watchdog Timer (WDT) references the System Control Unit (SCU) register for its operation. Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> --- arch/arm/boot/dts/aspeed/aspeed-g6.dtsi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/boot/dts/aspeed/aspeed-g6.dtsi b/arch/arm/boot/dts/aspeed/aspeed-g6.dtsi index ead835fca657..b47850f0dca0 100644 --- a/arch/arm/boot/dts/aspeed/aspeed-g6.dtsi +++ b/arch/arm/boot/dts/aspeed/aspeed-g6.dtsi @@ -557,23 +557,27 @@ uart5: serial at 1e784000 { wdt1: watchdog at 1e785000 { compatible = "aspeed,ast2600-wdt"; reg = <0x1e785000 0x40>; + aspeed,scu = <&syscon>; }; wdt2: watchdog at 1e785040 { compatible = "aspeed,ast2600-wdt"; reg = <0x1e785040 0x40>; + aspeed,scu = <&syscon>; status = "disabled"; }; wdt3: watchdog at 1e785080 { compatible = "aspeed,ast2600-wdt"; reg = <0x1e785080 0x40>; + aspeed,scu = <&syscon>; status = "disabled"; }; wdt4: watchdog at 1e7850c0 { compatible = "aspeed,ast2600-wdt"; reg = <0x1e7850C0 0x40>; + aspeed,scu = <&syscon>; status = "disabled"; }; -- 2.25.1 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v6 2/4] ARM: dts: aspeed: Add the AST2600 WDT with SCU register @ 2024-03-28 2:22 ` Peter Yin 0 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: patrick, Wim Van Sebroeck, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel The AST2600 Watchdog Timer (WDT) references the System Control Unit (SCU) register for its operation. Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> --- arch/arm/boot/dts/aspeed/aspeed-g6.dtsi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/boot/dts/aspeed/aspeed-g6.dtsi b/arch/arm/boot/dts/aspeed/aspeed-g6.dtsi index ead835fca657..b47850f0dca0 100644 --- a/arch/arm/boot/dts/aspeed/aspeed-g6.dtsi +++ b/arch/arm/boot/dts/aspeed/aspeed-g6.dtsi @@ -557,23 +557,27 @@ uart5: serial@1e784000 { wdt1: watchdog@1e785000 { compatible = "aspeed,ast2600-wdt"; reg = <0x1e785000 0x40>; + aspeed,scu = <&syscon>; }; wdt2: watchdog@1e785040 { compatible = "aspeed,ast2600-wdt"; reg = <0x1e785040 0x40>; + aspeed,scu = <&syscon>; status = "disabled"; }; wdt3: watchdog@1e785080 { compatible = "aspeed,ast2600-wdt"; reg = <0x1e785080 0x40>; + aspeed,scu = <&syscon>; status = "disabled"; }; wdt4: watchdog@1e7850c0 { compatible = "aspeed,ast2600-wdt"; reg = <0x1e7850C0 0x40>; + aspeed,scu = <&syscon>; status = "disabled"; }; -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v6 2/4] ARM: dts: aspeed: Add the AST2600 WDT with SCU register @ 2024-03-28 2:22 ` Peter Yin 0 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: patrick, Wim Van Sebroeck, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel The AST2600 Watchdog Timer (WDT) references the System Control Unit (SCU) register for its operation. Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> --- arch/arm/boot/dts/aspeed/aspeed-g6.dtsi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/boot/dts/aspeed/aspeed-g6.dtsi b/arch/arm/boot/dts/aspeed/aspeed-g6.dtsi index ead835fca657..b47850f0dca0 100644 --- a/arch/arm/boot/dts/aspeed/aspeed-g6.dtsi +++ b/arch/arm/boot/dts/aspeed/aspeed-g6.dtsi @@ -557,23 +557,27 @@ uart5: serial@1e784000 { wdt1: watchdog@1e785000 { compatible = "aspeed,ast2600-wdt"; reg = <0x1e785000 0x40>; + aspeed,scu = <&syscon>; }; wdt2: watchdog@1e785040 { compatible = "aspeed,ast2600-wdt"; reg = <0x1e785040 0x40>; + aspeed,scu = <&syscon>; status = "disabled"; }; wdt3: watchdog@1e785080 { compatible = "aspeed,ast2600-wdt"; reg = <0x1e785080 0x40>; + aspeed,scu = <&syscon>; status = "disabled"; }; wdt4: watchdog@1e7850c0 { compatible = "aspeed,ast2600-wdt"; reg = <0x1e7850C0 0x40>; + aspeed,scu = <&syscon>; status = "disabled"; }; -- 2.25.1 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu 2024-03-28 2:22 ` Peter Yin (?) @ 2024-03-28 2:22 ` Peter Yin -1 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: linux-aspeed To use the SCU register to obtain reset flags for supporting bootstatus. Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> --- Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt index 3208adb3e52e..80a1f58b5a2e 100644 --- a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt @@ -8,6 +8,8 @@ Required properties: - reg: physical base address of the controller and length of memory mapped region + - aspeed,scu: a reference to the System Control Unit node of the Aspeed + SOC. Optional properties: @@ -62,6 +64,7 @@ Examples: reg = <0x1e785000 0x1c>; aspeed,reset-type = "system"; aspeed,external-signal; + aspeed,scu = <&syscon>; }; #include <dt-bindings/watchdog/aspeed-wdt.h> @@ -70,4 +73,5 @@ Examples: reg = <0x1e785040 0x40>; aspeed,reset-mask = <AST2600_WDT_RESET1_DEFAULT (AST2600_WDT_RESET2_DEFAULT & ~AST2600_WDT_RESET2_LPC)>; + aspeed,scu = <&syscon>; }; -- 2.25.1 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu @ 2024-03-28 2:22 ` Peter Yin 0 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: patrick, Wim Van Sebroeck, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel To use the SCU register to obtain reset flags for supporting bootstatus. Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> --- Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt index 3208adb3e52e..80a1f58b5a2e 100644 --- a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt @@ -8,6 +8,8 @@ Required properties: - reg: physical base address of the controller and length of memory mapped region + - aspeed,scu: a reference to the System Control Unit node of the Aspeed + SOC. Optional properties: @@ -62,6 +64,7 @@ Examples: reg = <0x1e785000 0x1c>; aspeed,reset-type = "system"; aspeed,external-signal; + aspeed,scu = <&syscon>; }; #include <dt-bindings/watchdog/aspeed-wdt.h> @@ -70,4 +73,5 @@ Examples: reg = <0x1e785040 0x40>; aspeed,reset-mask = <AST2600_WDT_RESET1_DEFAULT (AST2600_WDT_RESET2_DEFAULT & ~AST2600_WDT_RESET2_LPC)>; + aspeed,scu = <&syscon>; }; -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu @ 2024-03-28 2:22 ` Peter Yin 0 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: patrick, Wim Van Sebroeck, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel To use the SCU register to obtain reset flags for supporting bootstatus. Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> --- Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt index 3208adb3e52e..80a1f58b5a2e 100644 --- a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt @@ -8,6 +8,8 @@ Required properties: - reg: physical base address of the controller and length of memory mapped region + - aspeed,scu: a reference to the System Control Unit node of the Aspeed + SOC. Optional properties: @@ -62,6 +64,7 @@ Examples: reg = <0x1e785000 0x1c>; aspeed,reset-type = "system"; aspeed,external-signal; + aspeed,scu = <&syscon>; }; #include <dt-bindings/watchdog/aspeed-wdt.h> @@ -70,4 +73,5 @@ Examples: reg = <0x1e785040 0x40>; aspeed,reset-mask = <AST2600_WDT_RESET1_DEFAULT (AST2600_WDT_RESET2_DEFAULT & ~AST2600_WDT_RESET2_LPC)>; + aspeed,scu = <&syscon>; }; -- 2.25.1 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu 2024-03-28 2:22 ` Peter Yin (?) @ 2024-04-01 13:56 ` Rob Herring -1 siblings, 0 replies; 33+ messages in thread From: Rob Herring @ 2024-04-01 13:56 UTC (permalink / raw) To: linux-aspeed On Thu, Mar 28, 2024 at 10:22:30AM +0800, Peter Yin wrote: > To use the SCU register to obtain reset flags for supporting > bootstatus. > > Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> > --- > Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > index 3208adb3e52e..80a1f58b5a2e 100644 > --- a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > +++ b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > @@ -8,6 +8,8 @@ Required properties: > > - reg: physical base address of the controller and length of memory mapped > region > + - aspeed,scu: a reference to the System Control Unit node of the Aspeed > + SOC. You cannot add new required properties as that is an ABI break. If there's only 1 SCU instance, you can just fetch its node by compatible with no DT change. What's the plan for converting this binding to schema? This is the 2nd new property in 6 months. Rob ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu @ 2024-04-01 13:56 ` Rob Herring 0 siblings, 0 replies; 33+ messages in thread From: Rob Herring @ 2024-04-01 13:56 UTC (permalink / raw) To: Peter Yin Cc: patrick, Wim Van Sebroeck, Guenter Roeck, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel On Thu, Mar 28, 2024 at 10:22:30AM +0800, Peter Yin wrote: > To use the SCU register to obtain reset flags for supporting > bootstatus. > > Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> > --- > Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > index 3208adb3e52e..80a1f58b5a2e 100644 > --- a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > +++ b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > @@ -8,6 +8,8 @@ Required properties: > > - reg: physical base address of the controller and length of memory mapped > region > + - aspeed,scu: a reference to the System Control Unit node of the Aspeed > + SOC. You cannot add new required properties as that is an ABI break. If there's only 1 SCU instance, you can just fetch its node by compatible with no DT change. What's the plan for converting this binding to schema? This is the 2nd new property in 6 months. Rob _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu @ 2024-04-01 13:56 ` Rob Herring 0 siblings, 0 replies; 33+ messages in thread From: Rob Herring @ 2024-04-01 13:56 UTC (permalink / raw) To: Peter Yin Cc: patrick, Wim Van Sebroeck, Guenter Roeck, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel On Thu, Mar 28, 2024 at 10:22:30AM +0800, Peter Yin wrote: > To use the SCU register to obtain reset flags for supporting > bootstatus. > > Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> > --- > Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > index 3208adb3e52e..80a1f58b5a2e 100644 > --- a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > +++ b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > @@ -8,6 +8,8 @@ Required properties: > > - reg: physical base address of the controller and length of memory mapped > region > + - aspeed,scu: a reference to the System Control Unit node of the Aspeed > + SOC. You cannot add new required properties as that is an ABI break. If there's only 1 SCU instance, you can just fetch its node by compatible with no DT change. What's the plan for converting this binding to schema? This is the 2nd new property in 6 months. Rob ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu 2024-04-01 13:56 ` Rob Herring (?) @ 2024-04-02 12:09 ` Andrew Jeffery -1 siblings, 0 replies; 33+ messages in thread From: Andrew Jeffery @ 2024-04-02 12:09 UTC (permalink / raw) To: linux-aspeed On Mon, 2024-04-01 at 08:56 -0500, Rob Herring wrote: > On Thu, Mar 28, 2024 at 10:22:30AM +0800, Peter Yin wrote: > > To use the SCU register to obtain reset flags for supporting > > bootstatus. > > > > Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> > > --- > > Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > > index 3208adb3e52e..80a1f58b5a2e 100644 > > --- a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > > +++ b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > > @@ -8,6 +8,8 @@ Required properties: > > > > - reg: physical base address of the controller and length of memory mapped > > region > > + - aspeed,scu: a reference to the System Control Unit node of the Aspeed > > + SOC. > > You cannot add new required properties as that is an ABI break. > > If there's only 1 SCU instance, you can just fetch its node by > compatible with no DT change. > > What's the plan for converting this binding to schema? This is the 2nd > new property in 6 months. I had a patch converting it in a local branch which I've now sent: https://lore.kernel.org/all/20240402120118.282035-1-andrew at codeconstruct.com.au/ Perhaps we can pull it into this series? Andrew ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu @ 2024-04-02 12:09 ` Andrew Jeffery 0 siblings, 0 replies; 33+ messages in thread From: Andrew Jeffery @ 2024-04-02 12:09 UTC (permalink / raw) To: Rob Herring, Peter Yin Cc: patrick, Wim Van Sebroeck, Guenter Roeck, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel On Mon, 2024-04-01 at 08:56 -0500, Rob Herring wrote: > On Thu, Mar 28, 2024 at 10:22:30AM +0800, Peter Yin wrote: > > To use the SCU register to obtain reset flags for supporting > > bootstatus. > > > > Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> > > --- > > Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > > index 3208adb3e52e..80a1f58b5a2e 100644 > > --- a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > > +++ b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > > @@ -8,6 +8,8 @@ Required properties: > > > > - reg: physical base address of the controller and length of memory mapped > > region > > + - aspeed,scu: a reference to the System Control Unit node of the Aspeed > > + SOC. > > You cannot add new required properties as that is an ABI break. > > If there's only 1 SCU instance, you can just fetch its node by > compatible with no DT change. > > What's the plan for converting this binding to schema? This is the 2nd > new property in 6 months. I had a patch converting it in a local branch which I've now sent: https://lore.kernel.org/all/20240402120118.282035-1-andrew@codeconstruct.com.au/ Perhaps we can pull it into this series? Andrew _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu @ 2024-04-02 12:09 ` Andrew Jeffery 0 siblings, 0 replies; 33+ messages in thread From: Andrew Jeffery @ 2024-04-02 12:09 UTC (permalink / raw) To: Rob Herring, Peter Yin Cc: patrick, Wim Van Sebroeck, Guenter Roeck, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel On Mon, 2024-04-01 at 08:56 -0500, Rob Herring wrote: > On Thu, Mar 28, 2024 at 10:22:30AM +0800, Peter Yin wrote: > > To use the SCU register to obtain reset flags for supporting > > bootstatus. > > > > Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> > > --- > > Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > > index 3208adb3e52e..80a1f58b5a2e 100644 > > --- a/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > > +++ b/Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt > > @@ -8,6 +8,8 @@ Required properties: > > > > - reg: physical base address of the controller and length of memory mapped > > region > > + - aspeed,scu: a reference to the System Control Unit node of the Aspeed > > + SOC. > > You cannot add new required properties as that is an ABI break. > > If there's only 1 SCU instance, you can just fetch its node by > compatible with no DT change. > > What's the plan for converting this binding to schema? This is the 2nd > new property in 6 months. I had a patch converting it in a local branch which I've now sent: https://lore.kernel.org/all/20240402120118.282035-1-andrew@codeconstruct.com.au/ Perhaps we can pull it into this series? Andrew ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu 2024-04-02 12:09 ` Andrew Jeffery (?) @ 2024-04-03 9:18 ` PeterYin -1 siblings, 0 replies; 33+ messages in thread From: PeterYin @ 2024-04-03 9:18 UTC (permalink / raw) To: linux-aspeed Thanks, I can wait you update it and send a new version for wdt driver. Andrew Jeffery ? 4/2/24 20:09 ??: > I had a patch converting it in a local branch which I've now sent: > > https://lore.kernel.org/all/20240402120118.282035-1-andrew at codeconstruct.com.au/ > > Perhaps we can pull it into this series? ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu @ 2024-04-03 9:18 ` PeterYin 0 siblings, 0 replies; 33+ messages in thread From: PeterYin @ 2024-04-03 9:18 UTC (permalink / raw) To: Andrew Jeffery, Rob Herring Cc: patrick, Wim Van Sebroeck, Guenter Roeck, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel Thanks, I can wait you update it and send a new version for wdt driver. Andrew Jeffery 於 4/2/24 20:09 寫道: > I had a patch converting it in a local branch which I've now sent: > > https://lore.kernel.org/all/20240402120118.282035-1-andrew@codeconstruct.com.au/ > > Perhaps we can pull it into this series? _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu @ 2024-04-03 9:18 ` PeterYin 0 siblings, 0 replies; 33+ messages in thread From: PeterYin @ 2024-04-03 9:18 UTC (permalink / raw) To: Andrew Jeffery, Rob Herring Cc: patrick, Wim Van Sebroeck, Guenter Roeck, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel Thanks, I can wait you update it and send a new version for wdt driver. Andrew Jeffery 於 4/2/24 20:09 寫道: > I had a patch converting it in a local branch which I've now sent: > > https://lore.kernel.org/all/20240402120118.282035-1-andrew@codeconstruct.com.au/ > > Perhaps we can pull it into this series? ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu 2024-04-03 9:18 ` PeterYin (?) @ 2024-04-04 1:50 ` Andrew Jeffery -1 siblings, 0 replies; 33+ messages in thread From: Andrew Jeffery @ 2024-04-04 1:50 UTC (permalink / raw) To: linux-aspeed On Wed, 2024-04-03 at 17:18 +0800, PeterYin wrote: > Thanks, I can wait you update it and send a new version for wdt driver. I've sent v2: https://lore.kernel.org/linux-watchdog/20240403020439.418788-1-andrew at codeconstruct.com.au/ Rob's okay with it: https://lore.kernel.org/linux-watchdog/20240403171321.GA3996007-robh at kernel.org/ Feel free to address his comment there if you integrate it into your series, though make sure to add his tag, keep my authorship, and append your own S-o-b if you do. Andrew ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu @ 2024-04-04 1:50 ` Andrew Jeffery 0 siblings, 0 replies; 33+ messages in thread From: Andrew Jeffery @ 2024-04-04 1:50 UTC (permalink / raw) To: PeterYin, Rob Herring Cc: patrick, Wim Van Sebroeck, Guenter Roeck, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel On Wed, 2024-04-03 at 17:18 +0800, PeterYin wrote: > Thanks, I can wait you update it and send a new version for wdt driver. I've sent v2: https://lore.kernel.org/linux-watchdog/20240403020439.418788-1-andrew@codeconstruct.com.au/ Rob's okay with it: https://lore.kernel.org/linux-watchdog/20240403171321.GA3996007-robh@kernel.org/ Feel free to address his comment there if you integrate it into your series, though make sure to add his tag, keep my authorship, and append your own S-o-b if you do. Andrew _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu @ 2024-04-04 1:50 ` Andrew Jeffery 0 siblings, 0 replies; 33+ messages in thread From: Andrew Jeffery @ 2024-04-04 1:50 UTC (permalink / raw) To: PeterYin, Rob Herring Cc: patrick, Wim Van Sebroeck, Guenter Roeck, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel On Wed, 2024-04-03 at 17:18 +0800, PeterYin wrote: > Thanks, I can wait you update it and send a new version for wdt driver. I've sent v2: https://lore.kernel.org/linux-watchdog/20240403020439.418788-1-andrew@codeconstruct.com.au/ Rob's okay with it: https://lore.kernel.org/linux-watchdog/20240403171321.GA3996007-robh@kernel.org/ Feel free to address his comment there if you integrate it into your series, though make sure to add his tag, keep my authorship, and append your own S-o-b if you do. Andrew ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v6 4/4] drivers: watchdog: ast2500 and ast2600 support bootstatus 2024-03-28 2:22 ` Peter Yin (?) @ 2024-03-28 2:22 ` Peter Yin -1 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: linux-aspeed Add WDIOF_EXTERN1 and WDIOF_CARDRESET bootstatus in ast2600 Regarding the AST2600 specification, the WDTn Timeout Status Register (WDT10) has bit 1 reserved. Bit 1 of the status register indicates on ast2500 if the boot was from the second boot source. It does not indicate that the most recent reset was triggered by the watchdog. The code should just be changed to set WDIOF_CARDRESET if bit 0 of the status register is set. Include SCU register to veriy WDIOF_EXTERN1 in ast2600 SCU74 or ast2500 SCU3C when bit1 is set. Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> --- drivers/watchdog/aspeed_wdt.c | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/drivers/watchdog/aspeed_wdt.c b/drivers/watchdog/aspeed_wdt.c index b4773a6aaf8c..0e7ef860cbdc 100644 --- a/drivers/watchdog/aspeed_wdt.c +++ b/drivers/watchdog/aspeed_wdt.c @@ -11,10 +11,12 @@ #include <linux/io.h> #include <linux/kernel.h> #include <linux/kstrtox.h> +#include <linux/mfd/syscon.h> #include <linux/module.h> #include <linux/of.h> #include <linux/of_irq.h> #include <linux/platform_device.h> +#include <linux/regmap.h> #include <linux/watchdog.h> static bool nowayout = WATCHDOG_NOWAYOUT; @@ -77,11 +79,19 @@ MODULE_DEVICE_TABLE(of, aspeed_wdt_of_table); #define WDT_TIMEOUT_STATUS 0x10 #define WDT_TIMEOUT_STATUS_IRQ BIT(2) #define WDT_TIMEOUT_STATUS_BOOT_SECONDARY BIT(1) +#define WDT_TIMEOUT_STATUS_EVENT BIT(0) #define WDT_CLEAR_TIMEOUT_STATUS 0x14 #define WDT_CLEAR_TIMEOUT_AND_BOOT_CODE_SELECTION BIT(0) #define WDT_RESET_MASK1 0x1c #define WDT_RESET_MASK2 0x20 +/* + * Ast2600 SCU74 bit1 is External reset flag + * Ast2500 SCU3C bit1 is External reset flag + */ +#define AST2500_SYSTEM_RESET_EVENT 0x3C +#define AST2600_SYSTEM_RESET_EVENT 0x74 +#define EXTERN_RESET_FLAG BIT(1) /* * WDT_RESET_WIDTH controls the characteristics of the external pulse (if * enabled), specifically: @@ -330,6 +340,11 @@ static int aspeed_wdt_probe(struct platform_device *pdev) if (IS_ERR(wdt->base)) return PTR_ERR(wdt->base); + struct regmap *scu_base = syscon_regmap_lookup_by_phandle(dev->of_node, + "aspeed,scu"); + if (IS_ERR(scu_base)) + return PTR_ERR(scu_base); + wdt->wdd.info = &aspeed_wdt_info; if (wdt->cfg->irq_mask) { @@ -459,14 +474,26 @@ static int aspeed_wdt_probe(struct platform_device *pdev) } status = readl(wdt->base + WDT_TIMEOUT_STATUS); - if (status & WDT_TIMEOUT_STATUS_BOOT_SECONDARY) { + if (status & WDT_TIMEOUT_STATUS_EVENT) wdt->wdd.bootstatus = WDIOF_CARDRESET; - if (of_device_is_compatible(np, "aspeed,ast2400-wdt") || - of_device_is_compatible(np, "aspeed,ast2500-wdt")) - wdt->wdd.groups = bswitch_groups; + if (of_device_is_compatible(np, "aspeed,ast2600-wdt")) { + ret = regmap_read(scu_base, + AST2600_SYSTEM_RESET_EVENT, + &status); + } else { + ret = regmap_read(scu_base, + AST2500_SYSTEM_RESET_EVENT, + &status); + wdt->wdd.groups = bswitch_groups; } + /* + * Reset cause by Extern Reset + */ + if (status & EXTERN_RESET_FLAG && !ret) + wdt->wdd.bootstatus |= WDIOF_EXTERN1; + dev_set_drvdata(dev, wdt); return devm_watchdog_register_device(dev, &wdt->wdd); -- 2.25.1 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v6 4/4] drivers: watchdog: ast2500 and ast2600 support bootstatus @ 2024-03-28 2:22 ` Peter Yin 0 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: patrick, Wim Van Sebroeck, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel Add WDIOF_EXTERN1 and WDIOF_CARDRESET bootstatus in ast2600 Regarding the AST2600 specification, the WDTn Timeout Status Register (WDT10) has bit 1 reserved. Bit 1 of the status register indicates on ast2500 if the boot was from the second boot source. It does not indicate that the most recent reset was triggered by the watchdog. The code should just be changed to set WDIOF_CARDRESET if bit 0 of the status register is set. Include SCU register to veriy WDIOF_EXTERN1 in ast2600 SCU74 or ast2500 SCU3C when bit1 is set. Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> --- drivers/watchdog/aspeed_wdt.c | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/drivers/watchdog/aspeed_wdt.c b/drivers/watchdog/aspeed_wdt.c index b4773a6aaf8c..0e7ef860cbdc 100644 --- a/drivers/watchdog/aspeed_wdt.c +++ b/drivers/watchdog/aspeed_wdt.c @@ -11,10 +11,12 @@ #include <linux/io.h> #include <linux/kernel.h> #include <linux/kstrtox.h> +#include <linux/mfd/syscon.h> #include <linux/module.h> #include <linux/of.h> #include <linux/of_irq.h> #include <linux/platform_device.h> +#include <linux/regmap.h> #include <linux/watchdog.h> static bool nowayout = WATCHDOG_NOWAYOUT; @@ -77,11 +79,19 @@ MODULE_DEVICE_TABLE(of, aspeed_wdt_of_table); #define WDT_TIMEOUT_STATUS 0x10 #define WDT_TIMEOUT_STATUS_IRQ BIT(2) #define WDT_TIMEOUT_STATUS_BOOT_SECONDARY BIT(1) +#define WDT_TIMEOUT_STATUS_EVENT BIT(0) #define WDT_CLEAR_TIMEOUT_STATUS 0x14 #define WDT_CLEAR_TIMEOUT_AND_BOOT_CODE_SELECTION BIT(0) #define WDT_RESET_MASK1 0x1c #define WDT_RESET_MASK2 0x20 +/* + * Ast2600 SCU74 bit1 is External reset flag + * Ast2500 SCU3C bit1 is External reset flag + */ +#define AST2500_SYSTEM_RESET_EVENT 0x3C +#define AST2600_SYSTEM_RESET_EVENT 0x74 +#define EXTERN_RESET_FLAG BIT(1) /* * WDT_RESET_WIDTH controls the characteristics of the external pulse (if * enabled), specifically: @@ -330,6 +340,11 @@ static int aspeed_wdt_probe(struct platform_device *pdev) if (IS_ERR(wdt->base)) return PTR_ERR(wdt->base); + struct regmap *scu_base = syscon_regmap_lookup_by_phandle(dev->of_node, + "aspeed,scu"); + if (IS_ERR(scu_base)) + return PTR_ERR(scu_base); + wdt->wdd.info = &aspeed_wdt_info; if (wdt->cfg->irq_mask) { @@ -459,14 +474,26 @@ static int aspeed_wdt_probe(struct platform_device *pdev) } status = readl(wdt->base + WDT_TIMEOUT_STATUS); - if (status & WDT_TIMEOUT_STATUS_BOOT_SECONDARY) { + if (status & WDT_TIMEOUT_STATUS_EVENT) wdt->wdd.bootstatus = WDIOF_CARDRESET; - if (of_device_is_compatible(np, "aspeed,ast2400-wdt") || - of_device_is_compatible(np, "aspeed,ast2500-wdt")) - wdt->wdd.groups = bswitch_groups; + if (of_device_is_compatible(np, "aspeed,ast2600-wdt")) { + ret = regmap_read(scu_base, + AST2600_SYSTEM_RESET_EVENT, + &status); + } else { + ret = regmap_read(scu_base, + AST2500_SYSTEM_RESET_EVENT, + &status); + wdt->wdd.groups = bswitch_groups; } + /* + * Reset cause by Extern Reset + */ + if (status & EXTERN_RESET_FLAG && !ret) + wdt->wdd.bootstatus |= WDIOF_EXTERN1; + dev_set_drvdata(dev, wdt); return devm_watchdog_register_device(dev, &wdt->wdd); -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v6 4/4] drivers: watchdog: ast2500 and ast2600 support bootstatus @ 2024-03-28 2:22 ` Peter Yin 0 siblings, 0 replies; 33+ messages in thread From: Peter Yin @ 2024-03-28 2:22 UTC (permalink / raw) To: patrick, Wim Van Sebroeck, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel Add WDIOF_EXTERN1 and WDIOF_CARDRESET bootstatus in ast2600 Regarding the AST2600 specification, the WDTn Timeout Status Register (WDT10) has bit 1 reserved. Bit 1 of the status register indicates on ast2500 if the boot was from the second boot source. It does not indicate that the most recent reset was triggered by the watchdog. The code should just be changed to set WDIOF_CARDRESET if bit 0 of the status register is set. Include SCU register to veriy WDIOF_EXTERN1 in ast2600 SCU74 or ast2500 SCU3C when bit1 is set. Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> --- drivers/watchdog/aspeed_wdt.c | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/drivers/watchdog/aspeed_wdt.c b/drivers/watchdog/aspeed_wdt.c index b4773a6aaf8c..0e7ef860cbdc 100644 --- a/drivers/watchdog/aspeed_wdt.c +++ b/drivers/watchdog/aspeed_wdt.c @@ -11,10 +11,12 @@ #include <linux/io.h> #include <linux/kernel.h> #include <linux/kstrtox.h> +#include <linux/mfd/syscon.h> #include <linux/module.h> #include <linux/of.h> #include <linux/of_irq.h> #include <linux/platform_device.h> +#include <linux/regmap.h> #include <linux/watchdog.h> static bool nowayout = WATCHDOG_NOWAYOUT; @@ -77,11 +79,19 @@ MODULE_DEVICE_TABLE(of, aspeed_wdt_of_table); #define WDT_TIMEOUT_STATUS 0x10 #define WDT_TIMEOUT_STATUS_IRQ BIT(2) #define WDT_TIMEOUT_STATUS_BOOT_SECONDARY BIT(1) +#define WDT_TIMEOUT_STATUS_EVENT BIT(0) #define WDT_CLEAR_TIMEOUT_STATUS 0x14 #define WDT_CLEAR_TIMEOUT_AND_BOOT_CODE_SELECTION BIT(0) #define WDT_RESET_MASK1 0x1c #define WDT_RESET_MASK2 0x20 +/* + * Ast2600 SCU74 bit1 is External reset flag + * Ast2500 SCU3C bit1 is External reset flag + */ +#define AST2500_SYSTEM_RESET_EVENT 0x3C +#define AST2600_SYSTEM_RESET_EVENT 0x74 +#define EXTERN_RESET_FLAG BIT(1) /* * WDT_RESET_WIDTH controls the characteristics of the external pulse (if * enabled), specifically: @@ -330,6 +340,11 @@ static int aspeed_wdt_probe(struct platform_device *pdev) if (IS_ERR(wdt->base)) return PTR_ERR(wdt->base); + struct regmap *scu_base = syscon_regmap_lookup_by_phandle(dev->of_node, + "aspeed,scu"); + if (IS_ERR(scu_base)) + return PTR_ERR(scu_base); + wdt->wdd.info = &aspeed_wdt_info; if (wdt->cfg->irq_mask) { @@ -459,14 +474,26 @@ static int aspeed_wdt_probe(struct platform_device *pdev) } status = readl(wdt->base + WDT_TIMEOUT_STATUS); - if (status & WDT_TIMEOUT_STATUS_BOOT_SECONDARY) { + if (status & WDT_TIMEOUT_STATUS_EVENT) wdt->wdd.bootstatus = WDIOF_CARDRESET; - if (of_device_is_compatible(np, "aspeed,ast2400-wdt") || - of_device_is_compatible(np, "aspeed,ast2500-wdt")) - wdt->wdd.groups = bswitch_groups; + if (of_device_is_compatible(np, "aspeed,ast2600-wdt")) { + ret = regmap_read(scu_base, + AST2600_SYSTEM_RESET_EVENT, + &status); + } else { + ret = regmap_read(scu_base, + AST2500_SYSTEM_RESET_EVENT, + &status); + wdt->wdd.groups = bswitch_groups; } + /* + * Reset cause by Extern Reset + */ + if (status & EXTERN_RESET_FLAG && !ret) + wdt->wdd.bootstatus |= WDIOF_EXTERN1; + dev_set_drvdata(dev, wdt); return devm_watchdog_register_device(dev, &wdt->wdd); -- 2.25.1 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v6 4/4] drivers: watchdog: ast2500 and ast2600 support bootstatus 2024-03-28 2:22 ` Peter Yin (?) @ 2024-04-09 16:28 ` PeterYin -1 siblings, 0 replies; 33+ messages in thread From: PeterYin @ 2024-04-09 16:28 UTC (permalink / raw) To: linux-aspeed Peter Yin ? 3/28/24 10:22 ??: > Add WDIOF_EXTERN1 and WDIOF_CARDRESET bootstatus in ast2600 > > Regarding the AST2600 specification, the WDTn Timeout Status Register > (WDT10) has bit 1 reserved. Bit 1 of the status register indicates > on ast2500 if the boot was from the second boot source. > It does not indicate that the most recent reset was triggered by > the watchdog. The code should just be changed to set WDIOF_CARDRESET > if bit 0 of the status register is set. > > Include SCU register to veriy WDIOF_EXTERN1 in ast2600 SCU74 or > ast2500 SCU3C when bit1 is set. > > Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> > --- > drivers/watchdog/aspeed_wdt.c | 35 +++++++++++++++++++++++++++++++---- > 1 file changed, 31 insertions(+), 4 deletions(-) > > diff --git a/drivers/watchdog/aspeed_wdt.c b/drivers/watchdog/aspeed_wdt.c > index b4773a6aaf8c..0e7ef860cbdc 100644 > --- a/drivers/watchdog/aspeed_wdt.c > +++ b/drivers/watchdog/aspeed_wdt.c > @@ -11,10 +11,12 @@ > #include <linux/io.h> > #include <linux/kernel.h> > #include <linux/kstrtox.h> > +#include <linux/mfd/syscon.h> > #include <linux/module.h> > #include <linux/of.h> > #include <linux/of_irq.h> > #include <linux/platform_device.h> > +#include <linux/regmap.h> > #include <linux/watchdog.h> > > static bool nowayout = WATCHDOG_NOWAYOUT; > @@ -77,11 +79,19 @@ MODULE_DEVICE_TABLE(of, aspeed_wdt_of_table); > #define WDT_TIMEOUT_STATUS 0x10 > #define WDT_TIMEOUT_STATUS_IRQ BIT(2) > #define WDT_TIMEOUT_STATUS_BOOT_SECONDARY BIT(1) > +#define WDT_TIMEOUT_STATUS_EVENT BIT(0) > #define WDT_CLEAR_TIMEOUT_STATUS 0x14 > #define WDT_CLEAR_TIMEOUT_AND_BOOT_CODE_SELECTION BIT(0) > #define WDT_RESET_MASK1 0x1c > #define WDT_RESET_MASK2 0x20 > > +/* > + * Ast2600 SCU74 bit1 is External reset flag > + * Ast2500 SCU3C bit1 is External reset flag > + */ > +#define AST2500_SYSTEM_RESET_EVENT 0x3C > +#define AST2600_SYSTEM_RESET_EVENT 0x74 > +#define EXTERN_RESET_FLAG BIT(1) > /* > * WDT_RESET_WIDTH controls the characteristics of the external pulse (if > * enabled), specifically: > @@ -330,6 +340,11 @@ static int aspeed_wdt_probe(struct platform_device *pdev) > if (IS_ERR(wdt->base)) > return PTR_ERR(wdt->base); > > + struct regmap *scu_base = syscon_regmap_lookup_by_phandle(dev->of_node, > + "aspeed,scu"); > + if (IS_ERR(scu_base)) > + return PTR_ERR(scu_base); > + > wdt->wdd.info = &aspeed_wdt_info; > > if (wdt->cfg->irq_mask) { > @@ -459,14 +474,26 @@ static int aspeed_wdt_probe(struct platform_device *pdev) > } > > status = readl(wdt->base + WDT_TIMEOUT_STATUS); > - if (status & WDT_TIMEOUT_STATUS_BOOT_SECONDARY) { > + if (status & WDT_TIMEOUT_STATUS_EVENT) > wdt->wdd.bootstatus = WDIOF_CARDRESET; > > - if (of_device_is_compatible(np, "aspeed,ast2400-wdt") || > - of_device_is_compatible(np, "aspeed,ast2500-wdt")) > - wdt->wdd.groups = bswitch_groups; > + if (of_device_is_compatible(np, "aspeed,ast2600-wdt")) { > + ret = regmap_read(scu_base, > + AST2600_SYSTEM_RESET_EVENT, > + &status); > + } else { > + ret = regmap_read(scu_base, > + AST2500_SYSTEM_RESET_EVENT, > + &status); > + wdt->wdd.groups = bswitch_groups; > } > > + /* > + * Reset cause by Extern Reset > + */ > + if (status & EXTERN_RESET_FLAG && !ret) > + wdt->wdd.bootstatus |= WDIOF_EXTERN1; > + > dev_set_drvdata(dev, wdt); > > return devm_watchdog_register_device(dev, &wdt->wdd); Hi Guenter, Could you help me understand the definition of WDIOF_CARDRESET in the kernel? If it resets the CPU, should all values be reset to default? Should we check the POR (RstPwr Power on reset SRST# flag) flag in SCU 0x74 register bit 0 in ast2600? ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v6 4/4] drivers: watchdog: ast2500 and ast2600 support bootstatus @ 2024-04-09 16:28 ` PeterYin 0 siblings, 0 replies; 33+ messages in thread From: PeterYin @ 2024-04-09 16:28 UTC (permalink / raw) To: patrick, Wim Van Sebroeck, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel Peter Yin 於 3/28/24 10:22 寫道: > Add WDIOF_EXTERN1 and WDIOF_CARDRESET bootstatus in ast2600 > > Regarding the AST2600 specification, the WDTn Timeout Status Register > (WDT10) has bit 1 reserved. Bit 1 of the status register indicates > on ast2500 if the boot was from the second boot source. > It does not indicate that the most recent reset was triggered by > the watchdog. The code should just be changed to set WDIOF_CARDRESET > if bit 0 of the status register is set. > > Include SCU register to veriy WDIOF_EXTERN1 in ast2600 SCU74 or > ast2500 SCU3C when bit1 is set. > > Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> > --- > drivers/watchdog/aspeed_wdt.c | 35 +++++++++++++++++++++++++++++++---- > 1 file changed, 31 insertions(+), 4 deletions(-) > > diff --git a/drivers/watchdog/aspeed_wdt.c b/drivers/watchdog/aspeed_wdt.c > index b4773a6aaf8c..0e7ef860cbdc 100644 > --- a/drivers/watchdog/aspeed_wdt.c > +++ b/drivers/watchdog/aspeed_wdt.c > @@ -11,10 +11,12 @@ > #include <linux/io.h> > #include <linux/kernel.h> > #include <linux/kstrtox.h> > +#include <linux/mfd/syscon.h> > #include <linux/module.h> > #include <linux/of.h> > #include <linux/of_irq.h> > #include <linux/platform_device.h> > +#include <linux/regmap.h> > #include <linux/watchdog.h> > > static bool nowayout = WATCHDOG_NOWAYOUT; > @@ -77,11 +79,19 @@ MODULE_DEVICE_TABLE(of, aspeed_wdt_of_table); > #define WDT_TIMEOUT_STATUS 0x10 > #define WDT_TIMEOUT_STATUS_IRQ BIT(2) > #define WDT_TIMEOUT_STATUS_BOOT_SECONDARY BIT(1) > +#define WDT_TIMEOUT_STATUS_EVENT BIT(0) > #define WDT_CLEAR_TIMEOUT_STATUS 0x14 > #define WDT_CLEAR_TIMEOUT_AND_BOOT_CODE_SELECTION BIT(0) > #define WDT_RESET_MASK1 0x1c > #define WDT_RESET_MASK2 0x20 > > +/* > + * Ast2600 SCU74 bit1 is External reset flag > + * Ast2500 SCU3C bit1 is External reset flag > + */ > +#define AST2500_SYSTEM_RESET_EVENT 0x3C > +#define AST2600_SYSTEM_RESET_EVENT 0x74 > +#define EXTERN_RESET_FLAG BIT(1) > /* > * WDT_RESET_WIDTH controls the characteristics of the external pulse (if > * enabled), specifically: > @@ -330,6 +340,11 @@ static int aspeed_wdt_probe(struct platform_device *pdev) > if (IS_ERR(wdt->base)) > return PTR_ERR(wdt->base); > > + struct regmap *scu_base = syscon_regmap_lookup_by_phandle(dev->of_node, > + "aspeed,scu"); > + if (IS_ERR(scu_base)) > + return PTR_ERR(scu_base); > + > wdt->wdd.info = &aspeed_wdt_info; > > if (wdt->cfg->irq_mask) { > @@ -459,14 +474,26 @@ static int aspeed_wdt_probe(struct platform_device *pdev) > } > > status = readl(wdt->base + WDT_TIMEOUT_STATUS); > - if (status & WDT_TIMEOUT_STATUS_BOOT_SECONDARY) { > + if (status & WDT_TIMEOUT_STATUS_EVENT) > wdt->wdd.bootstatus = WDIOF_CARDRESET; > > - if (of_device_is_compatible(np, "aspeed,ast2400-wdt") || > - of_device_is_compatible(np, "aspeed,ast2500-wdt")) > - wdt->wdd.groups = bswitch_groups; > + if (of_device_is_compatible(np, "aspeed,ast2600-wdt")) { > + ret = regmap_read(scu_base, > + AST2600_SYSTEM_RESET_EVENT, > + &status); > + } else { > + ret = regmap_read(scu_base, > + AST2500_SYSTEM_RESET_EVENT, > + &status); > + wdt->wdd.groups = bswitch_groups; > } > > + /* > + * Reset cause by Extern Reset > + */ > + if (status & EXTERN_RESET_FLAG && !ret) > + wdt->wdd.bootstatus |= WDIOF_EXTERN1; > + > dev_set_drvdata(dev, wdt); > > return devm_watchdog_register_device(dev, &wdt->wdd); Hi Guenter, Could you help me understand the definition of WDIOF_CARDRESET in the kernel? If it resets the CPU, should all values be reset to default? Should we check the POR (RstPwr Power on reset SRST# flag) flag in SCU 0x74 register bit 0 in ast2600? _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v6 4/4] drivers: watchdog: ast2500 and ast2600 support bootstatus @ 2024-04-09 16:28 ` PeterYin 0 siblings, 0 replies; 33+ messages in thread From: PeterYin @ 2024-04-09 16:28 UTC (permalink / raw) To: patrick, Wim Van Sebroeck, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel Peter Yin 於 3/28/24 10:22 寫道: > Add WDIOF_EXTERN1 and WDIOF_CARDRESET bootstatus in ast2600 > > Regarding the AST2600 specification, the WDTn Timeout Status Register > (WDT10) has bit 1 reserved. Bit 1 of the status register indicates > on ast2500 if the boot was from the second boot source. > It does not indicate that the most recent reset was triggered by > the watchdog. The code should just be changed to set WDIOF_CARDRESET > if bit 0 of the status register is set. > > Include SCU register to veriy WDIOF_EXTERN1 in ast2600 SCU74 or > ast2500 SCU3C when bit1 is set. > > Signed-off-by: Peter Yin <peteryin.openbmc@gmail.com> > --- > drivers/watchdog/aspeed_wdt.c | 35 +++++++++++++++++++++++++++++++---- > 1 file changed, 31 insertions(+), 4 deletions(-) > > diff --git a/drivers/watchdog/aspeed_wdt.c b/drivers/watchdog/aspeed_wdt.c > index b4773a6aaf8c..0e7ef860cbdc 100644 > --- a/drivers/watchdog/aspeed_wdt.c > +++ b/drivers/watchdog/aspeed_wdt.c > @@ -11,10 +11,12 @@ > #include <linux/io.h> > #include <linux/kernel.h> > #include <linux/kstrtox.h> > +#include <linux/mfd/syscon.h> > #include <linux/module.h> > #include <linux/of.h> > #include <linux/of_irq.h> > #include <linux/platform_device.h> > +#include <linux/regmap.h> > #include <linux/watchdog.h> > > static bool nowayout = WATCHDOG_NOWAYOUT; > @@ -77,11 +79,19 @@ MODULE_DEVICE_TABLE(of, aspeed_wdt_of_table); > #define WDT_TIMEOUT_STATUS 0x10 > #define WDT_TIMEOUT_STATUS_IRQ BIT(2) > #define WDT_TIMEOUT_STATUS_BOOT_SECONDARY BIT(1) > +#define WDT_TIMEOUT_STATUS_EVENT BIT(0) > #define WDT_CLEAR_TIMEOUT_STATUS 0x14 > #define WDT_CLEAR_TIMEOUT_AND_BOOT_CODE_SELECTION BIT(0) > #define WDT_RESET_MASK1 0x1c > #define WDT_RESET_MASK2 0x20 > > +/* > + * Ast2600 SCU74 bit1 is External reset flag > + * Ast2500 SCU3C bit1 is External reset flag > + */ > +#define AST2500_SYSTEM_RESET_EVENT 0x3C > +#define AST2600_SYSTEM_RESET_EVENT 0x74 > +#define EXTERN_RESET_FLAG BIT(1) > /* > * WDT_RESET_WIDTH controls the characteristics of the external pulse (if > * enabled), specifically: > @@ -330,6 +340,11 @@ static int aspeed_wdt_probe(struct platform_device *pdev) > if (IS_ERR(wdt->base)) > return PTR_ERR(wdt->base); > > + struct regmap *scu_base = syscon_regmap_lookup_by_phandle(dev->of_node, > + "aspeed,scu"); > + if (IS_ERR(scu_base)) > + return PTR_ERR(scu_base); > + > wdt->wdd.info = &aspeed_wdt_info; > > if (wdt->cfg->irq_mask) { > @@ -459,14 +474,26 @@ static int aspeed_wdt_probe(struct platform_device *pdev) > } > > status = readl(wdt->base + WDT_TIMEOUT_STATUS); > - if (status & WDT_TIMEOUT_STATUS_BOOT_SECONDARY) { > + if (status & WDT_TIMEOUT_STATUS_EVENT) > wdt->wdd.bootstatus = WDIOF_CARDRESET; > > - if (of_device_is_compatible(np, "aspeed,ast2400-wdt") || > - of_device_is_compatible(np, "aspeed,ast2500-wdt")) > - wdt->wdd.groups = bswitch_groups; > + if (of_device_is_compatible(np, "aspeed,ast2600-wdt")) { > + ret = regmap_read(scu_base, > + AST2600_SYSTEM_RESET_EVENT, > + &status); > + } else { > + ret = regmap_read(scu_base, > + AST2500_SYSTEM_RESET_EVENT, > + &status); > + wdt->wdd.groups = bswitch_groups; > } > > + /* > + * Reset cause by Extern Reset > + */ > + if (status & EXTERN_RESET_FLAG && !ret) > + wdt->wdd.bootstatus |= WDIOF_EXTERN1; > + > dev_set_drvdata(dev, wdt); > > return devm_watchdog_register_device(dev, &wdt->wdd); Hi Guenter, Could you help me understand the definition of WDIOF_CARDRESET in the kernel? If it resets the CPU, should all values be reset to default? Should we check the POR (RstPwr Power on reset SRST# flag) flag in SCU 0x74 register bit 0 in ast2600? ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v6 4/4] drivers: watchdog: ast2500 and ast2600 support bootstatus 2024-04-09 16:28 ` PeterYin (?) @ 2024-04-09 18:08 ` Guenter Roeck -1 siblings, 0 replies; 33+ messages in thread From: Guenter Roeck @ 2024-04-09 18:08 UTC (permalink / raw) To: linux-aspeed On Wed, Apr 10, 2024 at 12:28:44AM +0800, PeterYin wrote: [ ... ] > > Hi Guenter, > Could you help me understand the definition of WDIOF_CARDRESET in the > kernel? If it resets the CPU, should all values be reset to default? Should Documentation/watchdog/watchdog-api.rst says: "Card previously reset the CPU" This is a bit historic and was probably defined when watchdogs were not typically integrated. The appropriate description, applied to current watchdog devices, would be something like "The most recent reset was triggered by this watchdog". Not sure I understand "If it resets the CPU...". It doesn't _do_ anything, it just reports if the most recent reset was triggered by the watchdog. > we check the POR (RstPwr Power on reset SRST# flag) flag in SCU 0x74 > register bit 0 in ast2600? > Only if it indicates that the most recent reset was triggered by the watchdog. Guenter ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v6 4/4] drivers: watchdog: ast2500 and ast2600 support bootstatus @ 2024-04-09 18:08 ` Guenter Roeck 0 siblings, 0 replies; 33+ messages in thread From: Guenter Roeck @ 2024-04-09 18:08 UTC (permalink / raw) To: PeterYin Cc: patrick, Wim Van Sebroeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel On Wed, Apr 10, 2024 at 12:28:44AM +0800, PeterYin wrote: [ ... ] > > Hi Guenter, > Could you help me understand the definition of WDIOF_CARDRESET in the > kernel? If it resets the CPU, should all values be reset to default? Should Documentation/watchdog/watchdog-api.rst says: "Card previously reset the CPU" This is a bit historic and was probably defined when watchdogs were not typically integrated. The appropriate description, applied to current watchdog devices, would be something like "The most recent reset was triggered by this watchdog". Not sure I understand "If it resets the CPU...". It doesn't _do_ anything, it just reports if the most recent reset was triggered by the watchdog. > we check the POR (RstPwr Power on reset SRST# flag) flag in SCU 0x74 > register bit 0 in ast2600? > Only if it indicates that the most recent reset was triggered by the watchdog. Guenter _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v6 4/4] drivers: watchdog: ast2500 and ast2600 support bootstatus @ 2024-04-09 18:08 ` Guenter Roeck 0 siblings, 0 replies; 33+ messages in thread From: Guenter Roeck @ 2024-04-09 18:08 UTC (permalink / raw) To: PeterYin Cc: patrick, Wim Van Sebroeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Joel Stanley, Andrew Jeffery, linux-watchdog, devicetree, linux-arm-kernel, linux-aspeed, linux-kernel On Wed, Apr 10, 2024 at 12:28:44AM +0800, PeterYin wrote: [ ... ] > > Hi Guenter, > Could you help me understand the definition of WDIOF_CARDRESET in the > kernel? If it resets the CPU, should all values be reset to default? Should Documentation/watchdog/watchdog-api.rst says: "Card previously reset the CPU" This is a bit historic and was probably defined when watchdogs were not typically integrated. The appropriate description, applied to current watchdog devices, would be something like "The most recent reset was triggered by this watchdog". Not sure I understand "If it resets the CPU...". It doesn't _do_ anything, it just reports if the most recent reset was triggered by the watchdog. > we check the POR (RstPwr Power on reset SRST# flag) flag in SCU 0x74 > register bit 0 in ast2600? > Only if it indicates that the most recent reset was triggered by the watchdog. Guenter ^ permalink raw reply [flat|nested] 33+ messages in thread
end of thread, other threads:[~2024-04-09 18:08 UTC | newest] Thread overview: 33+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-03-28 2:22 [PATCH v6 0/4] drivers: watchdog: ast2500 and ast2600 support bootstatus Peter Yin 2024-03-28 2:22 ` Peter Yin 2024-03-28 2:22 ` Peter Yin 2024-03-28 2:22 ` [PATCH v6 1/4] ARM: dts: aspeed: Add the AST2500 WDT with SCU register Peter Yin 2024-03-28 2:22 ` Peter Yin 2024-03-28 2:22 ` Peter Yin 2024-03-28 2:22 ` [PATCH v6 2/4] ARM: dts: aspeed: Add the AST2600 " Peter Yin 2024-03-28 2:22 ` Peter Yin 2024-03-28 2:22 ` Peter Yin 2024-03-28 2:22 ` [PATCH v6 3/4] dt-bindings: watchdog: aspeed-wdt: Add aspeed,scu Peter Yin 2024-03-28 2:22 ` Peter Yin 2024-03-28 2:22 ` Peter Yin 2024-04-01 13:56 ` Rob Herring 2024-04-01 13:56 ` Rob Herring 2024-04-01 13:56 ` Rob Herring 2024-04-02 12:09 ` Andrew Jeffery 2024-04-02 12:09 ` Andrew Jeffery 2024-04-02 12:09 ` Andrew Jeffery 2024-04-03 9:18 ` PeterYin 2024-04-03 9:18 ` PeterYin 2024-04-03 9:18 ` PeterYin 2024-04-04 1:50 ` Andrew Jeffery 2024-04-04 1:50 ` Andrew Jeffery 2024-04-04 1:50 ` Andrew Jeffery 2024-03-28 2:22 ` [PATCH v6 4/4] drivers: watchdog: ast2500 and ast2600 support bootstatus Peter Yin 2024-03-28 2:22 ` Peter Yin 2024-03-28 2:22 ` Peter Yin 2024-04-09 16:28 ` PeterYin 2024-04-09 16:28 ` PeterYin 2024-04-09 16:28 ` PeterYin 2024-04-09 18:08 ` Guenter Roeck 2024-04-09 18:08 ` Guenter Roeck 2024-04-09 18:08 ` Guenter Roeck
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.