diff mbox series

[1/2,v8] dt-bindings: watchdog: marvell GTI system watchdog driver

Message ID 20230526062626.1180-1-bbhushan2@marvell.com (mailing list archive)
State Superseded
Headers show
Series [1/2,v8] dt-bindings: watchdog: marvell GTI system watchdog driver | expand

Commit Message

Bharat Bhushan May 26, 2023, 6:26 a.m. UTC
Add binding documentation for the Marvell GTI system
watchdog driver.

Signed-off-by: Bharat Bhushan <bbhushan2@marvell.com>
---
v8:
  - Compatible name as per soc name

 .../watchdog/marvell,octeontx2-wdt.yaml       | 73 +++++++++++++++++++
 1 file changed, 73 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/watchdog/marvell,octeontx2-wdt.yaml

Comments

Conor Dooley May 26, 2023, 7:37 p.m. UTC | #1
Yo Bharat,

On Fri, May 26, 2023 at 11:56:25AM +0530, Bharat Bhushan wrote:
> Add binding documentation for the Marvell GTI system
> watchdog driver.
> 
> Signed-off-by: Bharat Bhushan <bbhushan2@marvell.com>
> ---
> v8:
>   - Compatible name as per soc name

I am sorry, but I do not understand this.

> 
>  .../watchdog/marvell,octeontx2-wdt.yaml       | 73 +++++++++++++++++++
>  1 file changed, 73 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/watchdog/marvell,octeontx2-wdt.yaml
> 
> diff --git a/Documentation/devicetree/bindings/watchdog/marvell,octeontx2-wdt.yaml b/Documentation/devicetree/bindings/watchdog/marvell,octeontx2-wdt.yaml
> new file mode 100644
> index 000000000000..3c642359d960
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/watchdog/marvell,octeontx2-wdt.yaml
> @@ -0,0 +1,73 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/watchdog/marvell,octeontx2-wdt.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Marvell Global Timer (GTI) system watchdog
> +
> +allOf:
> +  - $ref: watchdog.yaml#

From v7:
Put allOf after maintainers:.

> +
> +maintainers:
> +  - Bharat Bhushan <bbhushan2@marvell.com>
> +
> +properties:
> +  compatible:
> +    enum:
> +      - marvell,cn9670-wdt
> +      - marvell,cn9880-wdt
> +      - marvell,cnf9535-wdt
> +      - marvell,cn10624-wdt
> +      - marvell,cn10308-wdt
> +      - marvell,cnf10518-wdt

static const struct of_device_id gti_wdt_of_match[] = {
       { .compatible = "marvell,cn9670-wdt", .data = &match_data_octeontx2},
       { .compatible = "marvell,cn9880-wdt", .data = &match_data_octeontx2},
       { .compatible = "marvell,cnf9535-wdt", .data = &match_data_octeontx2},
       { .compatible = "marvell,cn10624-wdt", .data = &match_data_cn10k},
       { .compatible = "marvell,cn10308-wdt", .data = &match_data_cn10k},
       { .compatible = "marvell,cnf10518-wdt", .data = &match_data_cn10k},

This is a fat hint that you should be using fallback compatibles here.
You even had a fallback setup in your last revision, but you seem to
have removed it alongside the removal of the wildcards. Why did you do
that?

> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  clocks:
> +    minItems: 1

From v7:
maxItems instead. You see it is different than above properties?

> +
> +  clock-names:
> +    minItems: 1

From v7:
Need to define names.

Cheers,
Conor.
Bharat Bhushan May 27, 2023, 2:53 p.m. UTC | #2
Hi Conor,

Please see inline 

> -----Original Message-----
> From: Conor Dooley <conor@kernel.org>
> Sent: Saturday, May 27, 2023 1:07 AM
> To: Bharat Bhushan <bbhushan2@marvell.com>
> Cc: wim@linux-watchdog.org; linux@roeck-us.net; robh+dt@kernel.org;
> krzysztof.kozlowski+dt@linaro.org; linux-watchdog@vger.kernel.org;
> devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; Sunil Kovvuri
> Goutham <sgoutham@marvell.com>
> Subject: [EXT] Re: [PATCH 1/2 v8] dt-bindings: watchdog: marvell GTI system
> watchdog driver
> 
> External Email
> 
> ----------------------------------------------------------------------
> Yo Bharat,
> 
> On Fri, May 26, 2023 at 11:56:25AM +0530, Bharat Bhushan wrote:
> > Add binding documentation for the Marvell GTI system watchdog driver.
> >
> > Signed-off-by: Bharat Bhushan <bbhushan2@marvell.com>
> > ---
> > v8:
> >   - Compatible name as per soc name
> 
> I am sorry, but I do not understand this.

I mean to say replaced soc family name from compatible with actual soc names

> 
> >
> >  .../watchdog/marvell,octeontx2-wdt.yaml       | 73 +++++++++++++++++++
> >  1 file changed, 73 insertions(+)
> >  create mode 100644
> > Documentation/devicetree/bindings/watchdog/marvell,octeontx2-wdt.yaml
> >
> > diff --git
> > a/Documentation/devicetree/bindings/watchdog/marvell,octeontx2-wdt.yam
> > l
> > b/Documentation/devicetree/bindings/watchdog/marvell,octeontx2-wdt.yam
> > l
> > new file mode 100644
> > index 000000000000..3c642359d960
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/watchdog/marvell,octeontx2-wdt
> > +++ .yaml
> > @@ -0,0 +1,73 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
> > +---
> > +$id:
> > +http://devicetree.org/schemas/watchdog/marvell,octeontx2-wdt.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Marvell Global Timer (GTI) system watchdog
> > +
> > +allOf:
> > +  - $ref: watchdog.yaml#
> 
> From v7:
> Put allOf after maintainers:.

Thanks for pointing, I am sorry, missed almost all comments on v7. Will resolve this and below as well in next version

> 
> > +
> > +maintainers:
> > +  - Bharat Bhushan <bbhushan2@marvell.com>
> > +
> > +properties:
> > +  compatible:
> > +    enum:
> > +      - marvell,cn9670-wdt
> > +      - marvell,cn9880-wdt
> > +      - marvell,cnf9535-wdt
> > +      - marvell,cn10624-wdt
> > +      - marvell,cn10308-wdt
> > +      - marvell,cnf10518-wdt
> 
> static const struct of_device_id gti_wdt_of_match[] = {
>        { .compatible = "marvell,cn9670-wdt", .data = &match_data_octeontx2},
>        { .compatible = "marvell,cn9880-wdt", .data = &match_data_octeontx2},
>        { .compatible = "marvell,cnf9535-wdt", .data = &match_data_octeontx2},
>        { .compatible = "marvell,cn10624-wdt", .data = &match_data_cn10k},
>        { .compatible = "marvell,cn10308-wdt", .data = &match_data_cn10k},
>        { .compatible = "marvell,cnf10518-wdt", .data = &match_data_cn10k},
> 
> This is a fat hint that you should be using fallback compatibles here.
> You even had a fallback setup in your last revision, but you seem to have
> removed it alongside the removal of the wildcards. Why did you do that?

Not sure I understand this comment, Compatible in last version was as below:

+ properties:
+ compatible:
+    oneOf:
+      - const: marvell,octeontx2-wdt
+      - items:
+          - enum:
+              - marvell,octeontx2-95xx-wdt
+              - marvell,octeontx2-96xx-wdt
+              - marvell,octeontx2-98xx-wdt
+          - const: marvell,octeontx2-wdt
+      - const: marvell,cn10k-wdt
+      - items:
+          - enum:
+              - marvell,cn10kx-wdt
+              - marvell,cnf10kx-wdt
+          - const: marvell,cn10k-wdt

By fallback do you mean " const: marvell,cn10k-wdt" and " const: marvell,octeontx2-wdt" ? If yes I removed because "octeontx2" and "cn10k" are soc family name and no a specific soc.

Thanks
-Bharat

> 
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +  interrupts:
> > +    maxItems: 1
> > +
> > +  clocks:
> > +    minItems: 1
> 
> From v7:
> maxItems instead. You see it is different than above properties?
> 
> > +
> > +  clock-names:
> > +    minItems: 1
> 
> From v7:
> Need to define names.
> 
> Cheers,
> Conor.
Conor Dooley May 27, 2023, 4:10 p.m. UTC | #3
On Sat, May 27, 2023 at 02:53:25PM +0000, Bharat Bhushan wrote:
> From: Conor Dooley <conor@kernel.org>
> > On Fri, May 26, 2023 at 11:56:25AM +0530, Bharat Bhushan wrote:

> > > +properties:
> > > +  compatible:
> > > +    enum:
> > > +      - marvell,cn9670-wdt
> > > +      - marvell,cn9880-wdt
> > > +      - marvell,cnf9535-wdt
> > > +      - marvell,cn10624-wdt
> > > +      - marvell,cn10308-wdt
> > > +      - marvell,cnf10518-wdt
> > 
> > static const struct of_device_id gti_wdt_of_match[] = {
> >        { .compatible = "marvell,cn9670-wdt", .data = &match_data_octeontx2},
> >        { .compatible = "marvell,cn9880-wdt", .data = &match_data_octeontx2},
> >        { .compatible = "marvell,cnf9535-wdt", .data = &match_data_octeontx2},
> >        { .compatible = "marvell,cn10624-wdt", .data = &match_data_cn10k},
> >        { .compatible = "marvell,cn10308-wdt", .data = &match_data_cn10k},
> >        { .compatible = "marvell,cnf10518-wdt", .data = &match_data_cn10k},
> > 
> > This is a fat hint that you should be using fallback compatibles here.
> > You even had a fallback setup in your last revision, but you seem to have
> > removed it alongside the removal of the wildcards. Why did you do that?
> 
> Not sure I understand this comment, Compatible in last version was as below:
> 
> + properties:
> + compatible:
> +    oneOf:
> +      - const: marvell,octeontx2-wdt
> +      - items:
> +          - enum:
> +              - marvell,octeontx2-95xx-wdt
> +              - marvell,octeontx2-96xx-wdt
> +              - marvell,octeontx2-98xx-wdt
> +          - const: marvell,octeontx2-wdt
> +      - const: marvell,cn10k-wdt
> +      - items:
> +          - enum:
> +              - marvell,cn10kx-wdt
> +              - marvell,cnf10kx-wdt
> +          - const: marvell,cn10k-wdt
> 
> By fallback do you mean " const: marvell,cn10k-wdt" and
> "const: marvell,octeontx2-wdt" ? If yes I removed because "octeontx2"
> and "cn10k" are soc family name and no a specific soc.

No, I meant that you should permit
	compatible = "marvell,cn9880-wdt", "marvell,cn9670-wdt";
and
	compatible = "marvell,cnf9535-wdt", "marvell,cn9670-wdt";
and
	compatible = "marvell,cn9670-wdt";
so the driver only needs to contain
	{ .compatible = "marvell,cn9670-wdt", .data = &match_data_octeontx2},
instead of 
	{ .compatible = "marvell,cn9670-wdt", .data = &match_data_octeontx2},
	{ .compatible = "marvell,cn9880-wdt", .data = &match_data_octeontx2},
	{ .compatible = "marvell,cnf9535-wdt", .data = &match_data_octeontx2},

Note that using fallback compatibles is separate from using wildcards,
and I was not suggesting that you go back to wildcards ;)

Cheers,
Conor.
Bharat Bhushan May 29, 2023, 6:14 a.m. UTC | #4
Please see inline

> -----Original Message-----
> From: Conor Dooley <conor@kernel.org>
> Sent: Saturday, May 27, 2023 9:40 PM
> To: Bharat Bhushan <bbhushan2@marvell.com>
> Cc: wim@linux-watchdog.org; linux@roeck-us.net; robh+dt@kernel.org;
> krzysztof.kozlowski+dt@linaro.org; linux-watchdog@vger.kernel.org;
> devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; Sunil Kovvuri
> Goutham <sgoutham@marvell.com>
> Subject: Re: [EXT] Re: [PATCH 1/2 v8] dt-bindings: watchdog: marvell GTI system
> watchdog driver
> 
> On Sat, May 27, 2023 at 02:53:25PM +0000, Bharat Bhushan wrote:
> > From: Conor Dooley <conor@kernel.org>
> > > On Fri, May 26, 2023 at 11:56:25AM +0530, Bharat Bhushan wrote:
> 
> > > > +properties:
> > > > +  compatible:
> > > > +    enum:
> > > > +      - marvell,cn9670-wdt
> > > > +      - marvell,cn9880-wdt
> > > > +      - marvell,cnf9535-wdt
> > > > +      - marvell,cn10624-wdt
> > > > +      - marvell,cn10308-wdt
> > > > +      - marvell,cnf10518-wdt
> > >
> > > static const struct of_device_id gti_wdt_of_match[] = {
> > >        { .compatible = "marvell,cn9670-wdt", .data = &match_data_octeontx2},
> > >        { .compatible = "marvell,cn9880-wdt", .data = &match_data_octeontx2},
> > >        { .compatible = "marvell,cnf9535-wdt", .data = &match_data_octeontx2},
> > >        { .compatible = "marvell,cn10624-wdt", .data = &match_data_cn10k},
> > >        { .compatible = "marvell,cn10308-wdt", .data = &match_data_cn10k},
> > >        { .compatible = "marvell,cnf10518-wdt", .data =
> > > &match_data_cn10k},
> > >
> > > This is a fat hint that you should be using fallback compatibles here.
> > > You even had a fallback setup in your last revision, but you seem to
> > > have removed it alongside the removal of the wildcards. Why did you do
> that?
> >
> > Not sure I understand this comment, Compatible in last version was as below:
> >
> > + properties:
> > + compatible:
> > +    oneOf:
> > +      - const: marvell,octeontx2-wdt
> > +      - items:
> > +          - enum:
> > +              - marvell,octeontx2-95xx-wdt
> > +              - marvell,octeontx2-96xx-wdt
> > +              - marvell,octeontx2-98xx-wdt
> > +          - const: marvell,octeontx2-wdt
> > +      - const: marvell,cn10k-wdt
> > +      - items:
> > +          - enum:
> > +              - marvell,cn10kx-wdt
> > +              - marvell,cnf10kx-wdt
> > +          - const: marvell,cn10k-wdt
> >
> > By fallback do you mean " const: marvell,cn10k-wdt" and
> > "const: marvell,octeontx2-wdt" ? If yes I removed because "octeontx2"
> > and "cn10k" are soc family name and no a specific soc.
> 
> No, I meant that you should permit
> 	compatible = "marvell,cn9880-wdt", "marvell,cn9670-wdt"; and
> 	compatible = "marvell,cnf9535-wdt", "marvell,cn9670-wdt"; and
> 	compatible = "marvell,cn9670-wdt";
> so the driver only needs to contain
> 	{ .compatible = "marvell,cn9670-wdt", .data = &match_data_octeontx2},
> instead of
> 	{ .compatible = "marvell,cn9670-wdt", .data = &match_data_octeontx2},
> 	{ .compatible = "marvell,cn9880-wdt", .data = &match_data_octeontx2},
> 	{ .compatible = "marvell,cnf9535-wdt", .data = &match_data_octeontx2},
> 
> Note that using fallback compatibles is separate from using wildcards, and I was
> not suggesting that you go back to wildcards ;)

Fallback you mentioned make code look simple. Is below representation correct for above mentioned fallback? 

properties:
  compatible:
    oneOf:
      - const: marvell,cn9670-wdt
      - items:
          - enum:
              - marvell,cn9880-wdt
              - marvell,cnf9535-wdt
          - const: marvell,cn9670-wdt
      - const: marvell,cn10624-wdt
      - items:
          - enum:
              - marvell,cn10308-wdt
              - marvell,cnf10518-wdt
          - const: marvell,cn10624-wdt


And driver will have
        { .compatible = "marvell,cn9670-wdt", .data = &match_data_octeontx2},
        { .compatible = "marvell,cn10624-wdt", .data = &match_data_cn10k},


Thanks
-Bharat

> 
> Cheers,
> Conor.
Conor Dooley May 29, 2023, 12:34 p.m. UTC | #5
Hey Bharat,

On Mon, May 29, 2023 at 06:14:07AM +0000, Bharat Bhushan wrote:

> Fallback you mentioned make code look simple. Is below representation correct for above mentioned fallback? 
> 
> properties:
>   compatible:
>     oneOf:
>       - const: marvell,cn9670-wdt
>       - items:
>           - enum:
>               - marvell,cn9880-wdt
>               - marvell,cnf9535-wdt
>           - const: marvell,cn9670-wdt
>       - const: marvell,cn10624-wdt
>       - items:
>           - enum:
>               - marvell,cn10308-wdt
>               - marvell,cnf10518-wdt
>           - const: marvell,cn10624-wdt

Instead of having const: bits for each of the single-compatible ones, if
you are not going to add descriptions, I'd probably do:
properties:
  compatible:
    oneOf:
      - enum:
          - marvell,cn9670-wdt
          - marvell,cn10624-wdt

      - items:
          - enum:
              - marvell,cn9880-wdt
              - marvell,cnf9535-wdt
          - const: marvell,cn9670-wdt

      - items:
          - enum:
              - marvell,cn10308-wdt
              - marvell,cnf10518-wdt
          - const: marvell,cn10624-wdt

> And driver will have
>         { .compatible = "marvell,cn9670-wdt", .data = &match_data_octeontx2},
>         { .compatible = "marvell,cn10624-wdt", .data = &match_data_cn10k},

Otherwise, looks good to me. You should probably also rename the file to
match one of the compatibles contained in it.

Thanks,
Conor.
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/watchdog/marvell,octeontx2-wdt.yaml b/Documentation/devicetree/bindings/watchdog/marvell,octeontx2-wdt.yaml
new file mode 100644
index 000000000000..3c642359d960
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/marvell,octeontx2-wdt.yaml
@@ -0,0 +1,73 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/watchdog/marvell,octeontx2-wdt.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Global Timer (GTI) system watchdog
+
+allOf:
+  - $ref: watchdog.yaml#
+
+maintainers:
+  - Bharat Bhushan <bbhushan2@marvell.com>
+
+properties:
+  compatible:
+    enum:
+      - marvell,cn9670-wdt
+      - marvell,cn9880-wdt
+      - marvell,cnf9535-wdt
+      - marvell,cn10624-wdt
+      - marvell,cn10308-wdt
+      - marvell,cnf10518-wdt
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    minItems: 1
+
+  clock-names:
+    minItems: 1
+
+  marvell,wdt-timer-index:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 0
+    maximum: 63
+    description:
+      An SoC have many timers (up to 64), firmware can reserve one or more timer
+      for some other use case and configures one of the global timer as watchdog
+      timer. Firmware will update this field with the timer number configured
+      as watchdog timer.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        watchdog@802000040000 {
+            compatible = "marvell,cn9670-wdt";
+            reg = <0x00008020 0x00040000 0x00000000 0x00020000>;
+            interrupts = <GIC_SPI 38 IRQ_TYPE_EDGE_RISING>;
+            clocks = <&sclk>;
+            clock-names = "ref_clk";
+            marvell,wdt-timer-index = <63>;
+        };
+    };
+
+...