* [PATCH v2 0/6] Add support to retrieve the bootstatus from watchdog for RZ/V2H(P) SoC
@ 2024-12-27 19:02 Prabhakar
2024-12-27 19:02 ` [PATCH v2 1/6] dt-bindings: clock: rzv2h-cpg: Add syscon compatible for CPG block Prabhakar
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: Prabhakar @ 2024-12-27 19:02 UTC (permalink / raw)
To: Geert Uytterhoeven, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Wim Van Sebroeck,
Guenter Roeck, Magnus Damm, Wolfram Sang
Cc: linux-renesas-soc, linux-clk, devicetree, linux-kernel,
linux-watchdog, Prabhakar, Biju Das, Fabrizio Castro,
Lad Prabhakar
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Hi All,
This patch series adds SYSCON support to retrieve boot status information
for RZ/V2H(P) SoC.
Summary of Changes,
Clock:
Add syscon compatible support to the CPG block in bindings and
device trees.
Watchdog:
Document the renesas,r9a09g057-syscon-wdt-errorrst property.
Update the watchdog driver to fetch and report boot status via
Error Reset Registers (CPG_ERROR_RSTm).
Device Tree:
Add the syscon property to CPG and WDT nodes in R9A09G057 and
R9A09G047 SoC DTSI.
These changes enable the watchdog driver to identify boot sources like
Power-on Reset and Watchdog Reset, improving system diagnostics.
Cheers,
Prabhakar
Lad Prabhakar (6):
dt-bindings: clock: rzv2h-cpg: Add syscon compatible for CPG block
arm64: dts: renesas: r9a09g047: Add `syscon` compatible for CPG node
arm64: dts: renesas: r9a09g057: Add `syscon` compatible for CPG node
dt-bindings: watchdog: renesas: Document
`renesas,syscon-cpg-error-rst` property
watchdog: rzv2h_wdt: Add support to retrieve the bootstatus
information
arm64: dts: renesas: r9a09g057: Add `renesas,syscon-cpg-error-rst`
property to WDT node
.../bindings/clock/renesas,rzv2h-cpg.yaml | 10 +++---
.../bindings/watchdog/renesas,wdt.yaml | 17 +++++++++
arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r9a09g057.dtsi | 6 +++-
drivers/watchdog/rzv2h_wdt.c | 35 +++++++++++++++++++
5 files changed, 64 insertions(+), 6 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 1/6] dt-bindings: clock: rzv2h-cpg: Add syscon compatible for CPG block
2024-12-27 19:02 [PATCH v2 0/6] Add support to retrieve the bootstatus from watchdog for RZ/V2H(P) SoC Prabhakar
@ 2024-12-27 19:02 ` Prabhakar
2025-01-02 21:42 ` Rob Herring
2024-12-27 19:02 ` [PATCH v2 2/6] arm64: dts: renesas: r9a09g047: Add `syscon` compatible for CPG node Prabhakar
` (4 subsequent siblings)
5 siblings, 1 reply; 10+ messages in thread
From: Prabhakar @ 2024-12-27 19:02 UTC (permalink / raw)
To: Geert Uytterhoeven, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Wim Van Sebroeck,
Guenter Roeck, Magnus Damm, Wolfram Sang
Cc: linux-renesas-soc, linux-clk, devicetree, linux-kernel,
linux-watchdog, Prabhakar, Biju Das, Fabrizio Castro,
Lad Prabhakar
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
The CPG block in the RZ/V2H(P) and RZ/G3E SoCs includes Error Reset
Registers (CPG_ERROR_RSTm). A system reset is triggered in response to
error interrupt factors, and the corresponding bit is set in the
CPG_ERROR_RSTm register. These registers can be utilized by various IP
blocks as needed.
For example, specific bits in these registers indicate resets caused by
events such as underflow or overflow of the watchdog timer. This
functionality allows the watchdog driver to determine whether the current
boot resulted from a `Power-on Reset` or a `Watchdog Reset`.
Add the syscon-compatible property to the RZ/V2H(P) and RZ/G3E CPG block,
allowing drivers to interact with the CPG_ERROR_RSTm registers as required.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v1->v2
- No change
---
.../devicetree/bindings/clock/renesas,rzv2h-cpg.yaml | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml
index c3fe76abd549..f42d79e73e70 100644
--- a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml
+++ b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml
@@ -17,9 +17,11 @@ description:
properties:
compatible:
- enum:
- - renesas,r9a09g047-cpg # RZ/G3E
- - renesas,r9a09g057-cpg # RZ/V2H
+ items:
+ - enum:
+ - renesas,r9a09g047-cpg # RZ/G3E
+ - renesas,r9a09g057-cpg # RZ/V2H
+ - const: syscon
reg:
maxItems: 1
@@ -73,7 +75,7 @@ additionalProperties: false
examples:
- |
clock-controller@10420000 {
- compatible = "renesas,r9a09g057-cpg";
+ compatible = "renesas,r9a09g057-cpg", "syscon";
reg = <0x10420000 0x10000>;
clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>;
clock-names = "audio_extal", "rtxin", "qextal";
--
2.43.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 2/6] arm64: dts: renesas: r9a09g047: Add `syscon` compatible for CPG node
2024-12-27 19:02 [PATCH v2 0/6] Add support to retrieve the bootstatus from watchdog for RZ/V2H(P) SoC Prabhakar
2024-12-27 19:02 ` [PATCH v2 1/6] dt-bindings: clock: rzv2h-cpg: Add syscon compatible for CPG block Prabhakar
@ 2024-12-27 19:02 ` Prabhakar
2024-12-27 19:02 ` [PATCH v2 3/6] arm64: dts: renesas: r9a09g057: " Prabhakar
` (3 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Prabhakar @ 2024-12-27 19:02 UTC (permalink / raw)
To: Geert Uytterhoeven, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Wim Van Sebroeck,
Guenter Roeck, Magnus Damm, Wolfram Sang
Cc: linux-renesas-soc, linux-clk, devicetree, linux-kernel,
linux-watchdog, Prabhakar, Biju Das, Fabrizio Castro,
Lad Prabhakar
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Add `syscon` compatible for CPG node to allow the IP blocks to interact
with the CPG registers as needed.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v1->v2
- No change
---
arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi
index 7a422e9ad29e..f4e865b534a3 100644
--- a/arch/arm64/boot/dts/renesas/r9a09g047.dtsi
+++ b/arch/arm64/boot/dts/renesas/r9a09g047.dtsi
@@ -132,7 +132,7 @@ soc: soc {
ranges;
cpg: clock-controller@10420000 {
- compatible = "renesas,r9a09g047-cpg";
+ compatible = "renesas,r9a09g047-cpg", "syscon";
reg = <0 0x10420000 0 0x10000>;
clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>;
clock-names = "audio_extal", "rtxin", "qextal";
--
2.43.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 3/6] arm64: dts: renesas: r9a09g057: Add `syscon` compatible for CPG node
2024-12-27 19:02 [PATCH v2 0/6] Add support to retrieve the bootstatus from watchdog for RZ/V2H(P) SoC Prabhakar
2024-12-27 19:02 ` [PATCH v2 1/6] dt-bindings: clock: rzv2h-cpg: Add syscon compatible for CPG block Prabhakar
2024-12-27 19:02 ` [PATCH v2 2/6] arm64: dts: renesas: r9a09g047: Add `syscon` compatible for CPG node Prabhakar
@ 2024-12-27 19:02 ` Prabhakar
2024-12-27 19:02 ` [PATCH v2 4/6] dt-bindings: watchdog: renesas: Document `renesas,syscon-cpg-error-rst` property Prabhakar
` (2 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Prabhakar @ 2024-12-27 19:02 UTC (permalink / raw)
To: Geert Uytterhoeven, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Wim Van Sebroeck,
Guenter Roeck, Magnus Damm, Wolfram Sang
Cc: linux-renesas-soc, linux-clk, devicetree, linux-kernel,
linux-watchdog, Prabhakar, Biju Das, Fabrizio Castro,
Lad Prabhakar
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Add `syscon` compatible for CPG node to allow the IP blocks to interact
with the CPG registers as needed.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v1->v2
- No change
---
arch/arm64/boot/dts/renesas/r9a09g057.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi
index e39da64a32e9..69de6c302b17 100644
--- a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi
+++ b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi
@@ -243,7 +243,7 @@ pinctrl: pinctrl@10410000 {
};
cpg: clock-controller@10420000 {
- compatible = "renesas,r9a09g057-cpg";
+ compatible = "renesas,r9a09g057-cpg", "syscon";
reg = <0 0x10420000 0 0x10000>;
clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>;
clock-names = "audio_extal", "rtxin", "qextal";
--
2.43.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 4/6] dt-bindings: watchdog: renesas: Document `renesas,syscon-cpg-error-rst` property
2024-12-27 19:02 [PATCH v2 0/6] Add support to retrieve the bootstatus from watchdog for RZ/V2H(P) SoC Prabhakar
` (2 preceding siblings ...)
2024-12-27 19:02 ` [PATCH v2 3/6] arm64: dts: renesas: r9a09g057: " Prabhakar
@ 2024-12-27 19:02 ` Prabhakar
2025-01-02 21:46 ` Rob Herring
2024-12-27 19:02 ` [PATCH v2 5/6] watchdog: rzv2h_wdt: Add support to retrieve the bootstatus information Prabhakar
2024-12-27 19:02 ` [PATCH v2 6/6] arm64: dts: renesas: r9a09g057: Add `renesas,syscon-cpg-error-rst` property to WDT node Prabhakar
5 siblings, 1 reply; 10+ messages in thread
From: Prabhakar @ 2024-12-27 19:02 UTC (permalink / raw)
To: Geert Uytterhoeven, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Wim Van Sebroeck,
Guenter Roeck, Magnus Damm, Wolfram Sang
Cc: linux-renesas-soc, linux-clk, devicetree, linux-kernel,
linux-watchdog, Prabhakar, Biju Das, Fabrizio Castro,
Lad Prabhakar
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
The RZ/V2H(P) CPG block includes Error Reset Registers (CPG_ERROR_RSTm).
A system reset is triggered in response to error interrupt factors, and
the corresponding bit is set in the CPG_ERROR_RSTm register. These
registers can be utilized by various IP blocks as needed.
In the event of a watchdog overflow or underflow, a system reset is issued,
and the CPG_ERROR_RST2[0/1/2/3] bits are set depending on the watchdog in
use: CM33 = 0, CA55 = 1, CR8_0 = 2, CR8_1 = 3. For the watchdog driver to
determine and report the current boot status, it needs to read the
CPG_ERROR_RST2[0/1/2/3]bits and provide this information to the user upon
request.
To facilitate this operation, add `renesas,syscon-cpg-error-rst`
property to the WDT node, which maps to the `syscon` CPG node, enabling
retrieval of the necessary information.
Additionally, the property is marked as required for the RZ/V2H(P) SoC to
ensure future compatibility (e.g., where the same IP block is present on
the RZ/G3E SoC) and explicitly disallowed for other SoCs.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v1->v2
- Renamed `renesas,r9a09g057-syscon-wdt-errorrst` to `renesas,syscon-cpg-error-rst`
- Updated commit message
---
.../bindings/watchdog/renesas,wdt.yaml | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml b/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
index 29ada89fdcdc..ca62ae8b1b0c 100644
--- a/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
+++ b/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
@@ -112,6 +112,19 @@ properties:
timeout-sec: true
+ renesas,syscon-cpg-error-rst:
+ $ref: /schemas/types.yaml#/definitions/phandle-array
+ description:
+ The first cell is a phandle to the SYSCON entry required to obtain
+ the current boot status. The second cell specifies the CPG_ERROR_RSTm
+ register offset within the SYSCON, and the third cell indicates the
+ bit within the CPG_ERROR_RSTm register.
+ items:
+ - items:
+ - description: Phandle to the CPG node
+ - description: The CPG_ERROR_RSTm register offset
+ - description: The bit within CPG_ERROR_RSTm register of interest
+
required:
- compatible
- reg
@@ -182,7 +195,11 @@ allOf:
properties:
interrupts: false
interrupt-names: false
+ required:
+ - renesas,syscon-cpg-error-rst
else:
+ properties:
+ renesas,syscon-cpg-error-rst: false
required:
- interrupts
--
2.43.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 5/6] watchdog: rzv2h_wdt: Add support to retrieve the bootstatus information
2024-12-27 19:02 [PATCH v2 0/6] Add support to retrieve the bootstatus from watchdog for RZ/V2H(P) SoC Prabhakar
` (3 preceding siblings ...)
2024-12-27 19:02 ` [PATCH v2 4/6] dt-bindings: watchdog: renesas: Document `renesas,syscon-cpg-error-rst` property Prabhakar
@ 2024-12-27 19:02 ` Prabhakar
2024-12-27 19:02 ` [PATCH v2 6/6] arm64: dts: renesas: r9a09g057: Add `renesas,syscon-cpg-error-rst` property to WDT node Prabhakar
5 siblings, 0 replies; 10+ messages in thread
From: Prabhakar @ 2024-12-27 19:02 UTC (permalink / raw)
To: Geert Uytterhoeven, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Wim Van Sebroeck,
Guenter Roeck, Magnus Damm, Wolfram Sang
Cc: linux-renesas-soc, linux-clk, devicetree, linux-kernel,
linux-watchdog, Prabhakar, Biju Das, Fabrizio Castro,
Lad Prabhakar
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
On the RZ/V2H(P) SoC we can determine if the current boot is due to
`Power-on-Reset` or due to the `Watchdog`. The information used to
determine this is present on the CPG block.
The CPG_ERROR_RSTm(m = 2 - 8) registers are set in response to an error
interrupt causing an reset. CPG_ERROR_RST2[ERROR_RST0/1/2] is set if there
was an underflow/overflow on WDT1 causing an error interrupt.
To fetch this information from CPG block `syscon` is used and bootstatus
field in the watchdog device is updated based on the
CPG_ERROR_RST2[ERROR_RST0/1/2] bit. Upon consumig
CPG_ERROR_RST2[ERROR_RST0/1/2] bit we clear it.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v1->v2
- Returned ret in error path instead of -EINVAL
- Dropped unnecessar regmap_read
---
drivers/watchdog/rzv2h_wdt.c | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/drivers/watchdog/rzv2h_wdt.c b/drivers/watchdog/rzv2h_wdt.c
index 8defd0241213..ab7e35928190 100644
--- a/drivers/watchdog/rzv2h_wdt.c
+++ b/drivers/watchdog/rzv2h_wdt.c
@@ -4,14 +4,17 @@
*
* Copyright (C) 2024 Renesas Electronics Corporation.
*/
+#include <linux/bitfield.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/io.h>
#include <linux/kernel.h>
+#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
+#include <linux/regmap.h>
#include <linux/reset.h>
#include <linux/units.h>
#include <linux/watchdog.h>
@@ -40,6 +43,9 @@
#define WDT_DEFAULT_TIMEOUT 60U
+#define CPG_ERROR_RST2(x) BIT(x)
+#define CPG_ERROR_RST2_WEN(x) BIT((x) + 16)
+
static bool nowayout = WATCHDOG_NOWAYOUT;
module_param(nowayout, bool, 0);
MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="
@@ -206,9 +212,37 @@ static const struct watchdog_ops rzv2h_wdt_ops = {
static int rzv2h_wdt_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
+ struct device_node *np = dev->of_node;
struct rzv2h_wdt_priv *priv;
+ unsigned int bootstatus = 0;
+ struct regmap *syscon;
int ret;
+ /* Do not error out to maintain old DT compatibility */
+ syscon = syscon_regmap_lookup_by_phandle(np, "renesas,syscon-cpg-error-rst");
+ if (!IS_ERR(syscon)) {
+ struct of_phandle_args args;
+ u32 reg;
+
+ ret = of_parse_phandle_with_fixed_args(np, "renesas,syscon-cpg-error-rst",
+ 2, 0, &args);
+ if (ret)
+ return ret;
+
+ ret = regmap_read(syscon, args.args[0], ®);
+ if (ret)
+ return ret;
+
+ if (reg & CPG_ERROR_RST2(args.args[1])) {
+ ret = regmap_write(syscon, args.args[0],
+ CPG_ERROR_RST2(args.args[1]) |
+ CPG_ERROR_RST2_WEN(args.args[1]));
+ if (ret)
+ return ret;
+ }
+ bootstatus = reg & CPG_ERROR_RST2(args.args[1]) ? WDIOF_CARDRESET : 0;
+ }
+
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
@@ -243,6 +277,7 @@ static int rzv2h_wdt_probe(struct platform_device *pdev)
priv->wdev.info = &rzv2h_wdt_ident;
priv->wdev.ops = &rzv2h_wdt_ops;
priv->wdev.parent = dev;
+ priv->wdev.bootstatus = bootstatus;
watchdog_set_drvdata(&priv->wdev, priv);
watchdog_set_nowayout(&priv->wdev, nowayout);
watchdog_stop_on_unregister(&priv->wdev);
--
2.43.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 6/6] arm64: dts: renesas: r9a09g057: Add `renesas,syscon-cpg-error-rst` property to WDT node
2024-12-27 19:02 [PATCH v2 0/6] Add support to retrieve the bootstatus from watchdog for RZ/V2H(P) SoC Prabhakar
` (4 preceding siblings ...)
2024-12-27 19:02 ` [PATCH v2 5/6] watchdog: rzv2h_wdt: Add support to retrieve the bootstatus information Prabhakar
@ 2024-12-27 19:02 ` Prabhakar
5 siblings, 0 replies; 10+ messages in thread
From: Prabhakar @ 2024-12-27 19:02 UTC (permalink / raw)
To: Geert Uytterhoeven, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Wim Van Sebroeck,
Guenter Roeck, Magnus Damm, Wolfram Sang
Cc: linux-renesas-soc, linux-clk, devicetree, linux-kernel,
linux-watchdog, Prabhakar, Biju Das, Fabrizio Castro,
Lad Prabhakar
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Add `renesas,syscon-cpg-error-rst` property to WDT node, to
determine whether the current boot resulted from a `Power-on Reset`
or a `Watchdog Reset`.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v1->v2
- No change
---
arch/arm64/boot/dts/renesas/r9a09g057.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi
index 69de6c302b17..efc3fd582e12 100644
--- a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi
+++ b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi
@@ -445,6 +445,7 @@ wdt0: watchdog@11c00400 {
clock-names = "pclk", "oscclk";
resets = <&cpg 0x75>;
power-domains = <&cpg>;
+ renesas,syscon-cpg-error-rst = <&cpg 0xb40 0>;
status = "disabled";
};
@@ -455,6 +456,7 @@ wdt1: watchdog@14400000 {
clock-names = "pclk", "oscclk";
resets = <&cpg 0x76>;
power-domains = <&cpg>;
+ renesas,syscon-cpg-error-rst = <&cpg 0xb40 1>;
status = "disabled";
};
@@ -465,6 +467,7 @@ wdt2: watchdog@13000000 {
clock-names = "pclk", "oscclk";
resets = <&cpg 0x77>;
power-domains = <&cpg>;
+ renesas,syscon-cpg-error-rst = <&cpg 0xb40 2>;
status = "disabled";
};
@@ -475,6 +478,7 @@ wdt3: watchdog@13000400 {
clock-names = "pclk", "oscclk";
resets = <&cpg 0x78>;
power-domains = <&cpg>;
+ renesas,syscon-cpg-error-rst = <&cpg 0xb40 3>;
status = "disabled";
};
--
2.43.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 1/6] dt-bindings: clock: rzv2h-cpg: Add syscon compatible for CPG block
2024-12-27 19:02 ` [PATCH v2 1/6] dt-bindings: clock: rzv2h-cpg: Add syscon compatible for CPG block Prabhakar
@ 2025-01-02 21:42 ` Rob Herring
0 siblings, 0 replies; 10+ messages in thread
From: Rob Herring @ 2025-01-02 21:42 UTC (permalink / raw)
To: Prabhakar
Cc: Geert Uytterhoeven, Michael Turquette, Stephen Boyd,
Krzysztof Kozlowski, Conor Dooley, Wim Van Sebroeck,
Guenter Roeck, Magnus Damm, Wolfram Sang, linux-renesas-soc,
linux-clk, devicetree, linux-kernel, linux-watchdog, Biju Das,
Fabrizio Castro, Lad Prabhakar
On Fri, Dec 27, 2024 at 07:02:05PM +0000, Prabhakar wrote:
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
>
> The CPG block in the RZ/V2H(P) and RZ/G3E SoCs includes Error Reset
> Registers (CPG_ERROR_RSTm). A system reset is triggered in response to
> error interrupt factors, and the corresponding bit is set in the
> CPG_ERROR_RSTm register. These registers can be utilized by various IP
> blocks as needed.
>
> For example, specific bits in these registers indicate resets caused by
> events such as underflow or overflow of the watchdog timer. This
> functionality allows the watchdog driver to determine whether the current
> boot resulted from a `Power-on Reset` or a `Watchdog Reset`.
>
> Add the syscon-compatible property to the RZ/V2H(P) and RZ/G3E CPG block,
> allowing drivers to interact with the CPG_ERROR_RSTm registers as required.
This is an ABI change. That's okay because...?
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
> v1->v2
> - No change
> ---
> .../devicetree/bindings/clock/renesas,rzv2h-cpg.yaml | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml
> index c3fe76abd549..f42d79e73e70 100644
> --- a/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml
> +++ b/Documentation/devicetree/bindings/clock/renesas,rzv2h-cpg.yaml
> @@ -17,9 +17,11 @@ description:
>
> properties:
> compatible:
> - enum:
> - - renesas,r9a09g047-cpg # RZ/G3E
> - - renesas,r9a09g057-cpg # RZ/V2H
> + items:
> + - enum:
> + - renesas,r9a09g047-cpg # RZ/G3E
> + - renesas,r9a09g057-cpg # RZ/V2H
> + - const: syscon
>
> reg:
> maxItems: 1
> @@ -73,7 +75,7 @@ additionalProperties: false
> examples:
> - |
> clock-controller@10420000 {
> - compatible = "renesas,r9a09g057-cpg";
> + compatible = "renesas,r9a09g057-cpg", "syscon";
> reg = <0x10420000 0x10000>;
> clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>;
> clock-names = "audio_extal", "rtxin", "qextal";
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 4/6] dt-bindings: watchdog: renesas: Document `renesas,syscon-cpg-error-rst` property
2024-12-27 19:02 ` [PATCH v2 4/6] dt-bindings: watchdog: renesas: Document `renesas,syscon-cpg-error-rst` property Prabhakar
@ 2025-01-02 21:46 ` Rob Herring
2025-01-02 22:06 ` Lad, Prabhakar
0 siblings, 1 reply; 10+ messages in thread
From: Rob Herring @ 2025-01-02 21:46 UTC (permalink / raw)
To: Prabhakar
Cc: Geert Uytterhoeven, Michael Turquette, Stephen Boyd,
Krzysztof Kozlowski, Conor Dooley, Wim Van Sebroeck,
Guenter Roeck, Magnus Damm, Wolfram Sang, linux-renesas-soc,
linux-clk, devicetree, linux-kernel, linux-watchdog, Biju Das,
Fabrizio Castro, Lad Prabhakar
On Fri, Dec 27, 2024 at 07:02:08PM +0000, Prabhakar wrote:
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
>
> The RZ/V2H(P) CPG block includes Error Reset Registers (CPG_ERROR_RSTm).
> A system reset is triggered in response to error interrupt factors, and
> the corresponding bit is set in the CPG_ERROR_RSTm register. These
> registers can be utilized by various IP blocks as needed.
>
> In the event of a watchdog overflow or underflow, a system reset is issued,
> and the CPG_ERROR_RST2[0/1/2/3] bits are set depending on the watchdog in
> use: CM33 = 0, CA55 = 1, CR8_0 = 2, CR8_1 = 3. For the watchdog driver to
> determine and report the current boot status, it needs to read the
> CPG_ERROR_RST2[0/1/2/3]bits and provide this information to the user upon
> request.
>
> To facilitate this operation, add `renesas,syscon-cpg-error-rst`
> property to the WDT node, which maps to the `syscon` CPG node, enabling
> retrieval of the necessary information.
>
> Additionally, the property is marked as required for the RZ/V2H(P) SoC to
> ensure future compatibility (e.g., where the same IP block is present on
> the RZ/G3E SoC) and explicitly disallowed for other SoCs.
This is the other half of the ABI change.
>
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
> v1->v2
> - Renamed `renesas,r9a09g057-syscon-wdt-errorrst` to `renesas,syscon-cpg-error-rst`
> - Updated commit message
> ---
> .../bindings/watchdog/renesas,wdt.yaml | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml b/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
> index 29ada89fdcdc..ca62ae8b1b0c 100644
> --- a/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
> +++ b/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
> @@ -112,6 +112,19 @@ properties:
>
> timeout-sec: true
>
> + renesas,syscon-cpg-error-rst:
> + $ref: /schemas/types.yaml#/definitions/phandle-array
> + description:
> + The first cell is a phandle to the SYSCON entry required to obtain
> + the current boot status. The second cell specifies the CPG_ERROR_RSTm
> + register offset within the SYSCON, and the third cell indicates the
> + bit within the CPG_ERROR_RSTm register.
> + items:
> + - items:
> + - description: Phandle to the CPG node
> + - description: The CPG_ERROR_RSTm register offset
> + - description: The bit within CPG_ERROR_RSTm register of interest
> +
> required:
> - compatible
> - reg
> @@ -182,7 +195,11 @@ allOf:
> properties:
> interrupts: false
> interrupt-names: false
> + required:
> + - renesas,syscon-cpg-error-rst
New required property == ABI break
Once the OS driver relies on this being present, then older DTs will
break.
That's all fine if you spell it out in the commit message and any users
are fine with the breakage.
Rob
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 4/6] dt-bindings: watchdog: renesas: Document `renesas,syscon-cpg-error-rst` property
2025-01-02 21:46 ` Rob Herring
@ 2025-01-02 22:06 ` Lad, Prabhakar
0 siblings, 0 replies; 10+ messages in thread
From: Lad, Prabhakar @ 2025-01-02 22:06 UTC (permalink / raw)
To: Rob Herring
Cc: Geert Uytterhoeven, Michael Turquette, Stephen Boyd,
Krzysztof Kozlowski, Conor Dooley, Wim Van Sebroeck,
Guenter Roeck, Magnus Damm, Wolfram Sang, linux-renesas-soc,
linux-clk, devicetree, linux-kernel, linux-watchdog, Biju Das,
Fabrizio Castro, Lad Prabhakar
Hi Rob,
Thank you for the review.
On Thu, Jan 2, 2025 at 9:46 PM Rob Herring <robh@kernel.org> wrote:
>
> On Fri, Dec 27, 2024 at 07:02:08PM +0000, Prabhakar wrote:
> > From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> >
> > The RZ/V2H(P) CPG block includes Error Reset Registers (CPG_ERROR_RSTm).
> > A system reset is triggered in response to error interrupt factors, and
> > the corresponding bit is set in the CPG_ERROR_RSTm register. These
> > registers can be utilized by various IP blocks as needed.
> >
> > In the event of a watchdog overflow or underflow, a system reset is issued,
> > and the CPG_ERROR_RST2[0/1/2/3] bits are set depending on the watchdog in
> > use: CM33 = 0, CA55 = 1, CR8_0 = 2, CR8_1 = 3. For the watchdog driver to
> > determine and report the current boot status, it needs to read the
> > CPG_ERROR_RST2[0/1/2/3]bits and provide this information to the user upon
> > request.
> >
> > To facilitate this operation, add `renesas,syscon-cpg-error-rst`
> > property to the WDT node, which maps to the `syscon` CPG node, enabling
> > retrieval of the necessary information.
> >
> > Additionally, the property is marked as required for the RZ/V2H(P) SoC to
> > ensure future compatibility (e.g., where the same IP block is present on
> > the RZ/G3E SoC) and explicitly disallowed for other SoCs.
>
> This is the other half of the ABI change.
>
> >
> > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > ---
> > v1->v2
> > - Renamed `renesas,r9a09g057-syscon-wdt-errorrst` to `renesas,syscon-cpg-error-rst`
> > - Updated commit message
> > ---
> > .../bindings/watchdog/renesas,wdt.yaml | 17 +++++++++++++++++
> > 1 file changed, 17 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml b/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
> > index 29ada89fdcdc..ca62ae8b1b0c 100644
> > --- a/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
> > +++ b/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
> > @@ -112,6 +112,19 @@ properties:
> >
> > timeout-sec: true
> >
> > + renesas,syscon-cpg-error-rst:
> > + $ref: /schemas/types.yaml#/definitions/phandle-array
> > + description:
> > + The first cell is a phandle to the SYSCON entry required to obtain
> > + the current boot status. The second cell specifies the CPG_ERROR_RSTm
> > + register offset within the SYSCON, and the third cell indicates the
> > + bit within the CPG_ERROR_RSTm register.
> > + items:
> > + - items:
> > + - description: Phandle to the CPG node
> > + - description: The CPG_ERROR_RSTm register offset
> > + - description: The bit within CPG_ERROR_RSTm register of interest
> > +
> > required:
> > - compatible
> > - reg
> > @@ -182,7 +195,11 @@ allOf:
> > properties:
> > interrupts: false
> > interrupt-names: false
> > + required:
> > + - renesas,syscon-cpg-error-rst
>
> New required property == ABI break
>
> Once the OS driver relies on this being present, then older DTs will
> break.
>
In this case there is no ABI break, as the driver code [0] does not
fail the probe when the property does not exist, it's just that it
won't report the status of current boot.
[0] https://lore.kernel.org/all/20241227190210.69025-6-prabhakar.mahadev-lad.rj@bp.renesas.com/
Cheers,
Prabhakar
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-01-02 22:07 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-27 19:02 [PATCH v2 0/6] Add support to retrieve the bootstatus from watchdog for RZ/V2H(P) SoC Prabhakar
2024-12-27 19:02 ` [PATCH v2 1/6] dt-bindings: clock: rzv2h-cpg: Add syscon compatible for CPG block Prabhakar
2025-01-02 21:42 ` Rob Herring
2024-12-27 19:02 ` [PATCH v2 2/6] arm64: dts: renesas: r9a09g047: Add `syscon` compatible for CPG node Prabhakar
2024-12-27 19:02 ` [PATCH v2 3/6] arm64: dts: renesas: r9a09g057: " Prabhakar
2024-12-27 19:02 ` [PATCH v2 4/6] dt-bindings: watchdog: renesas: Document `renesas,syscon-cpg-error-rst` property Prabhakar
2025-01-02 21:46 ` Rob Herring
2025-01-02 22:06 ` Lad, Prabhakar
2024-12-27 19:02 ` [PATCH v2 5/6] watchdog: rzv2h_wdt: Add support to retrieve the bootstatus information Prabhakar
2024-12-27 19:02 ` [PATCH v2 6/6] arm64: dts: renesas: r9a09g057: Add `renesas,syscon-cpg-error-rst` property to WDT node Prabhakar
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).