All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/1] Convert ingenic,tcu.txt to YAML
@ 2020-03-01 17:46 Paul Cercueil
  2020-03-01 17:46 ` [PATCH 1/1] dt-bindings: timer: " Paul Cercueil
  0 siblings, 1 reply; 8+ messages in thread
From: Paul Cercueil @ 2020-03-01 17:46 UTC (permalink / raw)
  To: Daniel Lezcano, Thomas Gleixner, Rob Herring, Mark Rutland
  Cc: 周琰杰, od, linux-kernel, devicetree, Paul Cercueil

Daniel:

Could you take this patch into your tree (provided Rob acks it)? Since
commit fe6c2d6a8068 ("dt-bindings: timer: Add X1000 bindings.") modified
the .txt already, going through your tree would avoid a merge conflict.

Cheers,
-Paul

Paul Cercueil (1):
  dt-bindings: timer: Convert ingenic,tcu.txt to YAML

 .../devicetree/bindings/timer/ingenic,tcu.txt | 138 ----------
 .../bindings/timer/ingenic,tcu.yaml           | 235 ++++++++++++++++++
 2 files changed, 235 insertions(+), 138 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/timer/ingenic,tcu.txt
 create mode 100644 Documentation/devicetree/bindings/timer/ingenic,tcu.yaml

-- 
2.25.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/1] dt-bindings: timer: Convert ingenic,tcu.txt to YAML
  2020-03-01 17:46 [PATCH 0/1] Convert ingenic,tcu.txt to YAML Paul Cercueil
@ 2020-03-01 17:46 ` Paul Cercueil
  2020-03-02 17:06   ` Rob Herring
  0 siblings, 1 reply; 8+ messages in thread
From: Paul Cercueil @ 2020-03-01 17:46 UTC (permalink / raw)
  To: Daniel Lezcano, Thomas Gleixner, Rob Herring, Mark Rutland
  Cc: 周琰杰, od, linux-kernel, devicetree, Paul Cercueil

Convert the ingenic,tcu.txt file to YAML.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---
 .../devicetree/bindings/timer/ingenic,tcu.txt | 138 ----------
 .../bindings/timer/ingenic,tcu.yaml           | 235 ++++++++++++++++++
 2 files changed, 235 insertions(+), 138 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/timer/ingenic,tcu.txt
 create mode 100644 Documentation/devicetree/bindings/timer/ingenic,tcu.yaml

diff --git a/Documentation/devicetree/bindings/timer/ingenic,tcu.txt b/Documentation/devicetree/bindings/timer/ingenic,tcu.txt
deleted file mode 100644
index 91f704951845..000000000000
--- a/Documentation/devicetree/bindings/timer/ingenic,tcu.txt
+++ /dev/null
@@ -1,138 +0,0 @@
-Ingenic JZ47xx SoCs Timer/Counter Unit devicetree bindings
-==========================================================
-
-For a description of the TCU hardware and drivers, have a look at
-Documentation/mips/ingenic-tcu.rst.
-
-Required properties:
-
-- compatible: Must be one of:
-  * ingenic,jz4740-tcu
-  * ingenic,jz4725b-tcu
-  * ingenic,jz4770-tcu
-  * ingenic,x1000-tcu
-  followed by "simple-mfd".
-- reg: Should be the offset/length value corresponding to the TCU registers
-- clocks: List of phandle & clock specifiers for clocks external to the TCU.
-  The "pclk", "rtc" and "ext" clocks should be provided. The "tcu" clock
-  should be provided if the SoC has it.
-- clock-names: List of name strings for the external clocks.
-- #clock-cells: Should be <1>;
-  Clock consumers specify this argument to identify a clock. The valid values
-  may be found in <dt-bindings/clock/ingenic,tcu.h>.
-- interrupt-controller : Identifies the node as an interrupt controller
-- #interrupt-cells : Specifies the number of cells needed to encode an
-  interrupt source. The value should be 1.
-- interrupts : Specifies the interrupt the controller is connected to.
-
-Optional properties:
-
-- ingenic,pwm-channels-mask: Bitmask of TCU channels reserved for PWM use.
-  Default value is 0xfc.
-
-
-Children nodes
-==========================================================
-
-
-PWM node:
----------
-
-Required properties:
-
-- compatible: Must be one of:
-  * ingenic,jz4740-pwm
-  * ingenic,jz4725b-pwm
-- #pwm-cells: Should be 3. See ../pwm/pwm.yaml for a description of the cell
-  format.
-- clocks: List of phandle & clock specifiers for the TCU clocks.
-- clock-names: List of name strings for the TCU clocks.
-
-
-Watchdog node:
---------------
-
-Required properties:
-
-- compatible: Must be "ingenic,jz4740-watchdog"
-- clocks: phandle to the WDT clock
-- clock-names: should be "wdt"
-
-
-OS Timer node:
----------
-
-Required properties:
-
-- compatible: Must be one of:
-  * ingenic,jz4725b-ost
-  * ingenic,jz4770-ost
-- clocks: phandle to the OST clock
-- clock-names: should be "ost"
-- interrupts : Specifies the interrupt the OST is connected to.
-
-
-Example
-==========================================================
-
-#include <dt-bindings/clock/jz4770-cgu.h>
-#include <dt-bindings/clock/ingenic,tcu.h>
-
-/ {
-	tcu: timer@10002000 {
-		compatible = "ingenic,jz4770-tcu", "simple-mfd";
-		reg = <0x10002000 0x1000>;
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges = <0x0 0x10002000 0x1000>;
-
-		#clock-cells = <1>;
-
-		clocks = <&cgu JZ4770_CLK_RTC
-			  &cgu JZ4770_CLK_EXT
-			  &cgu JZ4770_CLK_PCLK>;
-		clock-names = "rtc", "ext", "pclk";
-
-		interrupt-controller;
-		#interrupt-cells = <1>;
-
-		interrupt-parent = <&intc>;
-		interrupts = <27 26 25>;
-
-		watchdog: watchdog@0 {
-			compatible = "ingenic,jz4740-watchdog";
-			reg = <0x0 0xc>;
-
-			clocks = <&tcu TCU_CLK_WDT>;
-			clock-names = "wdt";
-		};
-
-		pwm: pwm@40 {
-			compatible = "ingenic,jz4740-pwm";
-			reg = <0x40 0x80>;
-
-			#pwm-cells = <3>;
-
-			clocks = <&tcu TCU_CLK_TIMER0
-				  &tcu TCU_CLK_TIMER1
-				  &tcu TCU_CLK_TIMER2
-				  &tcu TCU_CLK_TIMER3
-				  &tcu TCU_CLK_TIMER4
-				  &tcu TCU_CLK_TIMER5
-				  &tcu TCU_CLK_TIMER6
-				  &tcu TCU_CLK_TIMER7>;
-			clock-names = "timer0", "timer1", "timer2", "timer3",
-				      "timer4", "timer5", "timer6", "timer7";
-		};
-
-		ost: timer@e0 {
-			compatible = "ingenic,jz4770-ost";
-			reg = <0xe0 0x20>;
-
-			clocks = <&tcu TCU_CLK_OST>;
-			clock-names = "ost";
-
-			interrupts = <15>;
-		};
-	};
-};
diff --git a/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml b/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
new file mode 100644
index 000000000000..1ded3b4762bb
--- /dev/null
+++ b/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
@@ -0,0 +1,235 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Ingenic SoCs Timer/Counter Unit (TCU) devicetree bindings
+
+description: |
+  For a description of the TCU hardware and drivers, have a look at
+  Documentation/mips/ingenic-tcu.rst.
+
+maintainers:
+  - Paul Cercueil <paul@crapouillou.net>
+
+properties:
+  $nodename:
+    pattern: "^timer@.*"
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 1
+
+  "#clock-cells":
+    const: 1
+
+  "#interrupt-cells":
+    const: 1
+
+  interrupt-controller: true
+
+  ranges: true
+
+  compatible:
+    items:
+      - enum:
+        - ingenic,jz4740-tcu
+        - ingenic,jz4725b-tcu
+        - ingenic,jz4770-tcu
+        - ingenic,x1000-tcu
+      - const: simple-mfd
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: RTC clock
+      - description: EXT clock
+      - description: PCLK clock
+      - description: TCU clock
+    minItems: 3
+
+  clock-names:
+    items:
+      - const: rtc
+      - const: ext
+      - const: pclk
+      - const: tcu
+    minItems: 3
+
+  interrupts:
+    minItems: 1
+    maxItems: 3
+
+  ingenic,pwm-channels-mask:
+    description: Bitmask of TCU channels reserved for PWM use.
+    allOf:
+      - $ref: /schemas/types.yaml#/definitions/uint32
+      - minimum: 0x00
+      - maximum: 0xff
+      - default: 0xfc
+
+patternProperties:
+  "^watchdog@[a-f0-9]+$":
+    type: object
+    allOf: [ $ref: ../watchdog/watchdog.yaml# ]
+    properties:
+      compatible:
+        oneOf:
+          - enum:
+            - ingenic,jz4740-watchdog
+            - ingenic,jz4780-watchdog
+          - items:
+            - const: ingenic,jz4770-watchdog
+            - const: ingenic,jz4740-watchdog
+
+      clocks:
+        maxItems: 1
+
+      clock-names:
+        const: wdt
+
+    required:
+      - compatible
+      - clocks
+      - clock-names
+
+  "^pwm@[a-f0-9]+$":
+    type: object
+    allOf: [ $ref: ../pwm/pwm.yaml# ]
+    properties:
+      compatible:
+        oneOf:
+          - enum:
+            - ingenic,jz4740-pwm
+          - items:
+            - enum:
+              - ingenic,jz4770-pwm
+              - ingenic,jz4780-pwm
+            - const: ingenic,jz4740-pwm
+
+      clocks:
+        minItems: 6
+        maxItems: 8
+
+      clock-names:
+        items:
+          - const: timer0
+          - const: timer1
+          - const: timer2
+          - const: timer3
+          - const: timer4
+          - const: timer5
+          - const: timer6
+          - const: timer7
+        minItems: 6
+
+    required:
+      - compatible
+      - clocks
+      - clock-names
+
+  "^timer@[a-f0-9]+":
+    type: object
+    properties:
+      compatible:
+        oneOf:
+          - enum:
+            - ingenic,jz4725b-ost
+            - ingenic,jz4770-ost
+          - items:
+            - const: ingenic,jz4780-ost
+            - const: ingenic,jz4770-ost
+
+
+      clocks:
+        maxItems: 1
+
+      clock-names:
+        const: ost
+
+      interrupts:
+        maxItems: 1
+
+    required:
+      - compatible
+      - clocks
+      - clock-names
+      - interrupts
+
+required:
+  - "#clock-cells"
+  - "#interrupt-cells"
+  - interrupt-controller
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/jz4770-cgu.h>
+    #include <dt-bindings/clock/ingenic,tcu.h>
+    tcu: timer@10002000 {
+      compatible = "ingenic,jz4770-tcu", "simple-mfd";
+      reg = <0x10002000 0x1000>;
+      #address-cells = <1>;
+      #size-cells = <1>;
+      ranges = <0x0 0x10002000 0x1000>;
+
+      #clock-cells = <1>;
+
+      clocks = <&cgu JZ4770_CLK_RTC>,
+               <&cgu JZ4770_CLK_EXT>,
+               <&cgu JZ4770_CLK_PCLK>;
+      clock-names = "rtc", "ext", "pclk";
+
+      interrupt-controller;
+      #interrupt-cells = <1>;
+
+      interrupt-parent = <&intc>;
+      interrupts = <27 26 25>;
+
+      watchdog: watchdog@0 {
+        compatible = "ingenic,jz4770-watchdog", "ingenic,jz4740-watchdog";
+        reg = <0x0 0xc>;
+
+        clocks = <&tcu TCU_CLK_WDT>;
+        clock-names = "wdt";
+      };
+
+      pwm: pwm@40 {
+        compatible = "ingenic,jz4770-pwm", "ingenic,jz4740-pwm";
+        reg = <0x40 0x80>;
+
+        #pwm-cells = <3>;
+
+        clocks = <&tcu TCU_CLK_TIMER0>,
+                 <&tcu TCU_CLK_TIMER1>,
+                 <&tcu TCU_CLK_TIMER2>,
+                 <&tcu TCU_CLK_TIMER3>,
+                 <&tcu TCU_CLK_TIMER4>,
+                 <&tcu TCU_CLK_TIMER5>,
+                 <&tcu TCU_CLK_TIMER6>,
+                 <&tcu TCU_CLK_TIMER7>;
+        clock-names = "timer0", "timer1", "timer2", "timer3",
+                "timer4", "timer5", "timer6", "timer7";
+      };
+
+      ost: timer@e0 {
+        compatible = "ingenic,jz4770-ost";
+        reg = <0xe0 0x20>;
+
+        clocks = <&tcu TCU_CLK_OST>;
+        clock-names = "ost";
+
+        interrupts = <15>;
+      };
+    };
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/1] dt-bindings: timer: Convert ingenic,tcu.txt to YAML
  2020-03-01 17:46 ` [PATCH 1/1] dt-bindings: timer: " Paul Cercueil
@ 2020-03-02 17:06   ` Rob Herring
  2020-03-02 17:41     ` Daniel Lezcano
  2020-03-02 18:24     ` Paul Cercueil
  0 siblings, 2 replies; 8+ messages in thread
From: Rob Herring @ 2020-03-02 17:06 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Daniel Lezcano, Thomas Gleixner, Mark Rutland,
	周琰杰,
	od, linux-kernel, devicetree

On Sun, Mar 1, 2020 at 11:47 AM Paul Cercueil <paul@crapouillou.net> wrote:
>

Well, this flew into linux-next quickly and breaks 'make
dt_binding_check'... Please drop, revert or fix quickly.

> Convert the ingenic,tcu.txt file to YAML.
>
> Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> ---
>  .../devicetree/bindings/timer/ingenic,tcu.txt | 138 ----------
>  .../bindings/timer/ingenic,tcu.yaml           | 235 ++++++++++++++++++
>  2 files changed, 235 insertions(+), 138 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/timer/ingenic,tcu.txt
>  create mode 100644 Documentation/devicetree/bindings/timer/ingenic,tcu.yaml


> diff --git a/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml b/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> new file mode 100644
> index 000000000000..1ded3b4762bb
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> @@ -0,0 +1,235 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Ingenic SoCs Timer/Counter Unit (TCU) devicetree bindings
> +
> +description: |
> +  For a description of the TCU hardware and drivers, have a look at
> +  Documentation/mips/ingenic-tcu.rst.
> +
> +maintainers:
> +  - Paul Cercueil <paul@crapouillou.net>
> +
> +properties:
> +  $nodename:
> +    pattern: "^timer@.*"

'.*' is redundant.

> +
> +  "#address-cells":
> +    const: 1
> +
> +  "#size-cells":
> +    const: 1
> +
> +  "#clock-cells":
> +    const: 1
> +
> +  "#interrupt-cells":
> +    const: 1
> +
> +  interrupt-controller: true
> +
> +  ranges: true
> +
> +  compatible:
> +    items:
> +      - enum:
> +        - ingenic,jz4740-tcu
> +        - ingenic,jz4725b-tcu
> +        - ingenic,jz4770-tcu
> +        - ingenic,x1000-tcu
> +      - const: simple-mfd

This breaks several examples in dt_binding_check because this schema
will be applied to every 'simple-mfd' node. You need a custom select
entry that excludes 'simple-mfd'. There should be several examples in
tree to copy.

> +
> +  reg:
> +    maxItems: 1
> +
> +  clocks:
> +    items:
> +      - description: RTC clock
> +      - description: EXT clock
> +      - description: PCLK clock
> +      - description: TCU clock
> +    minItems: 3
> +
> +  clock-names:
> +    items:
> +      - const: rtc
> +      - const: ext
> +      - const: pclk
> +      - const: tcu
> +    minItems: 3
> +
> +  interrupts:
> +    minItems: 1
> +    maxItems: 3

You need to define what each one is.

> +
> +  ingenic,pwm-channels-mask:
> +    description: Bitmask of TCU channels reserved for PWM use.
> +    allOf:
> +      - $ref: /schemas/types.yaml#/definitions/uint32
> +      - minimum: 0x00
> +      - maximum: 0xff
> +      - default: 0xfc
> +
> +patternProperties:
> +  "^watchdog@[a-f0-9]+$":
> +    type: object
> +    allOf: [ $ref: ../watchdog/watchdog.yaml# ]
> +    properties:
> +      compatible:
> +        oneOf:
> +          - enum:
> +            - ingenic,jz4740-watchdog
> +            - ingenic,jz4780-watchdog
> +          - items:
> +            - const: ingenic,jz4770-watchdog
> +            - const: ingenic,jz4740-watchdog
> +
> +      clocks:
> +        maxItems: 1
> +
> +      clock-names:
> +        const: wdt
> +
> +    required:
> +      - compatible
> +      - clocks
> +      - clock-names
> +
> +  "^pwm@[a-f0-9]+$":
> +    type: object
> +    allOf: [ $ref: ../pwm/pwm.yaml# ]
> +    properties:
> +      compatible:
> +        oneOf:
> +          - enum:
> +            - ingenic,jz4740-pwm
> +          - items:
> +            - enum:
> +              - ingenic,jz4770-pwm
> +              - ingenic,jz4780-pwm
> +            - const: ingenic,jz4740-pwm
> +
> +      clocks:
> +        minItems: 6
> +        maxItems: 8
> +
> +      clock-names:
> +        items:
> +          - const: timer0
> +          - const: timer1
> +          - const: timer2
> +          - const: timer3
> +          - const: timer4
> +          - const: timer5
> +          - const: timer6
> +          - const: timer7
> +        minItems: 6
> +
> +    required:
> +      - compatible
> +      - clocks
> +      - clock-names
> +
> +  "^timer@[a-f0-9]+":
> +    type: object
> +    properties:
> +      compatible:
> +        oneOf:
> +          - enum:
> +            - ingenic,jz4725b-ost
> +            - ingenic,jz4770-ost
> +          - items:
> +            - const: ingenic,jz4780-ost
> +            - const: ingenic,jz4770-ost
> +
> +
> +      clocks:
> +        maxItems: 1
> +
> +      clock-names:
> +        const: ost
> +
> +      interrupts:
> +        maxItems: 1
> +
> +    required:
> +      - compatible
> +      - clocks
> +      - clock-names
> +      - interrupts
> +
> +required:
> +  - "#clock-cells"
> +  - "#interrupt-cells"
> +  - interrupt-controller
> +  - compatible
> +  - reg
> +  - clocks
> +  - clock-names
> +  - interrupts
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/clock/jz4770-cgu.h>
> +    #include <dt-bindings/clock/ingenic,tcu.h>
> +    tcu: timer@10002000 {
> +      compatible = "ingenic,jz4770-tcu", "simple-mfd";
> +      reg = <0x10002000 0x1000>;
> +      #address-cells = <1>;
> +      #size-cells = <1>;
> +      ranges = <0x0 0x10002000 0x1000>;
> +
> +      #clock-cells = <1>;
> +
> +      clocks = <&cgu JZ4770_CLK_RTC>,
> +               <&cgu JZ4770_CLK_EXT>,
> +               <&cgu JZ4770_CLK_PCLK>;
> +      clock-names = "rtc", "ext", "pclk";
> +
> +      interrupt-controller;
> +      #interrupt-cells = <1>;
> +
> +      interrupt-parent = <&intc>;
> +      interrupts = <27 26 25>;
> +
> +      watchdog: watchdog@0 {
> +        compatible = "ingenic,jz4770-watchdog", "ingenic,jz4740-watchdog";
> +        reg = <0x0 0xc>;
> +
> +        clocks = <&tcu TCU_CLK_WDT>;
> +        clock-names = "wdt";
> +      };
> +
> +      pwm: pwm@40 {
> +        compatible = "ingenic,jz4770-pwm", "ingenic,jz4740-pwm";
> +        reg = <0x40 0x80>;
> +
> +        #pwm-cells = <3>;
> +
> +        clocks = <&tcu TCU_CLK_TIMER0>,
> +                 <&tcu TCU_CLK_TIMER1>,
> +                 <&tcu TCU_CLK_TIMER2>,
> +                 <&tcu TCU_CLK_TIMER3>,
> +                 <&tcu TCU_CLK_TIMER4>,
> +                 <&tcu TCU_CLK_TIMER5>,
> +                 <&tcu TCU_CLK_TIMER6>,
> +                 <&tcu TCU_CLK_TIMER7>;
> +        clock-names = "timer0", "timer1", "timer2", "timer3",
> +                "timer4", "timer5", "timer6", "timer7";
> +      };
> +
> +      ost: timer@e0 {
> +        compatible = "ingenic,jz4770-ost";
> +        reg = <0xe0 0x20>;
> +
> +        clocks = <&tcu TCU_CLK_OST>;
> +        clock-names = "ost";
> +
> +        interrupts = <15>;
> +      };
> +    };
> --
> 2.25.1
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/1] dt-bindings: timer: Convert ingenic,tcu.txt to YAML
  2020-03-02 17:06   ` Rob Herring
@ 2020-03-02 17:41     ` Daniel Lezcano
  2020-03-02 18:24     ` Paul Cercueil
  1 sibling, 0 replies; 8+ messages in thread
From: Daniel Lezcano @ 2020-03-02 17:41 UTC (permalink / raw)
  To: Rob Herring, Paul Cercueil
  Cc: Thomas Gleixner, Mark Rutland, 周琰杰,
	od, linux-kernel, devicetree

On 02/03/2020 18:06, Rob Herring wrote:
> On Sun, Mar 1, 2020 at 11:47 AM Paul Cercueil <paul@crapouillou.net> wrote:
>>
> 
> Well, this flew into linux-next quickly and breaks 'make
> dt_binding_check'... Please drop, revert or fix quickly.

dropped.




-- 
 <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/1] dt-bindings: timer: Convert ingenic,tcu.txt to YAML
  2020-03-02 17:06   ` Rob Herring
  2020-03-02 17:41     ` Daniel Lezcano
@ 2020-03-02 18:24     ` Paul Cercueil
  2020-03-02 19:07       ` Rob Herring
  1 sibling, 1 reply; 8+ messages in thread
From: Paul Cercueil @ 2020-03-02 18:24 UTC (permalink / raw)
  To: Rob Herring
  Cc: Daniel Lezcano, Thomas Gleixner, Mark Rutland,
	周琰杰,
	od, linux-kernel, devicetree

Hi Rob,


Le lun., mars 2, 2020 at 11:06, Rob Herring <robh+dt@kernel.org> a 
écrit :
> On Sun, Mar 1, 2020 at 11:47 AM Paul Cercueil <paul@crapouillou.net> 
> wrote:
>> 
> 
> Well, this flew into linux-next quickly and breaks 'make
> dt_binding_check'... Please drop, revert or fix quickly.

For my defense I said to merge "provided Rob acks it" ;)

>>  Convert the ingenic,tcu.txt file to YAML.
>> 
>>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
>>  ---
>>   .../devicetree/bindings/timer/ingenic,tcu.txt | 138 ----------
>>   .../bindings/timer/ingenic,tcu.yaml           | 235 
>> ++++++++++++++++++
>>   2 files changed, 235 insertions(+), 138 deletions(-)
>>   delete mode 100644 
>> Documentation/devicetree/bindings/timer/ingenic,tcu.txt
>>   create mode 100644 
>> Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> 
> 
>>  diff --git 
>> a/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml 
>> b/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
>>  new file mode 100644
>>  index 000000000000..1ded3b4762bb
>>  --- /dev/null
>>  +++ b/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
>>  @@ -0,0 +1,235 @@
>>  +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>  +%YAML 1.2
>>  +---
>>  +$id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml#
>>  +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>  +
>>  +title: Ingenic SoCs Timer/Counter Unit (TCU) devicetree bindings
>>  +
>>  +description: |
>>  +  For a description of the TCU hardware and drivers, have a look at
>>  +  Documentation/mips/ingenic-tcu.rst.
>>  +
>>  +maintainers:
>>  +  - Paul Cercueil <paul@crapouillou.net>
>>  +
>>  +properties:
>>  +  $nodename:
>>  +    pattern: "^timer@.*"
> 
> '.*' is redundant.
> 
>>  +
>>  +  "#address-cells":
>>  +    const: 1
>>  +
>>  +  "#size-cells":
>>  +    const: 1
>>  +
>>  +  "#clock-cells":
>>  +    const: 1
>>  +
>>  +  "#interrupt-cells":
>>  +    const: 1
>>  +
>>  +  interrupt-controller: true
>>  +
>>  +  ranges: true
>>  +
>>  +  compatible:
>>  +    items:
>>  +      - enum:
>>  +        - ingenic,jz4740-tcu
>>  +        - ingenic,jz4725b-tcu
>>  +        - ingenic,jz4770-tcu
>>  +        - ingenic,x1000-tcu
>>  +      - const: simple-mfd
> 
> This breaks several examples in dt_binding_check because this schema
> will be applied to every 'simple-mfd' node. You need a custom select
> entry that excludes 'simple-mfd'. There should be several examples in
> tree to copy.

Why would it be applied to all 'single-mfd' nodes? Doesn't what I wrote 
specify that it needs one of ingenic,*-tcu _and_ simple-mfd?

I'm not sure I understand what you mean.

I did grep for 'single-mfd' in all YAML files in Documentation/ and 
nothing really stands out.

-Paul

>>  +
>>  +  reg:
>>  +    maxItems: 1
>>  +
>>  +  clocks:
>>  +    items:
>>  +      - description: RTC clock
>>  +      - description: EXT clock
>>  +      - description: PCLK clock
>>  +      - description: TCU clock
>>  +    minItems: 3
>>  +
>>  +  clock-names:
>>  +    items:
>>  +      - const: rtc
>>  +      - const: ext
>>  +      - const: pclk
>>  +      - const: tcu
>>  +    minItems: 3
>>  +
>>  +  interrupts:
>>  +    minItems: 1
>>  +    maxItems: 3
> 
> You need to define what each one is.
> 
>>  +
>>  +  ingenic,pwm-channels-mask:
>>  +    description: Bitmask of TCU channels reserved for PWM use.
>>  +    allOf:
>>  +      - $ref: /schemas/types.yaml#/definitions/uint32
>>  +      - minimum: 0x00
>>  +      - maximum: 0xff
>>  +      - default: 0xfc
>>  +
>>  +patternProperties:
>>  +  "^watchdog@[a-f0-9]+$":
>>  +    type: object
>>  +    allOf: [ $ref: ../watchdog/watchdog.yaml# ]
>>  +    properties:
>>  +      compatible:
>>  +        oneOf:
>>  +          - enum:
>>  +            - ingenic,jz4740-watchdog
>>  +            - ingenic,jz4780-watchdog
>>  +          - items:
>>  +            - const: ingenic,jz4770-watchdog
>>  +            - const: ingenic,jz4740-watchdog
>>  +
>>  +      clocks:
>>  +        maxItems: 1
>>  +
>>  +      clock-names:
>>  +        const: wdt
>>  +
>>  +    required:
>>  +      - compatible
>>  +      - clocks
>>  +      - clock-names
>>  +
>>  +  "^pwm@[a-f0-9]+$":
>>  +    type: object
>>  +    allOf: [ $ref: ../pwm/pwm.yaml# ]
>>  +    properties:
>>  +      compatible:
>>  +        oneOf:
>>  +          - enum:
>>  +            - ingenic,jz4740-pwm
>>  +          - items:
>>  +            - enum:
>>  +              - ingenic,jz4770-pwm
>>  +              - ingenic,jz4780-pwm
>>  +            - const: ingenic,jz4740-pwm
>>  +
>>  +      clocks:
>>  +        minItems: 6
>>  +        maxItems: 8
>>  +
>>  +      clock-names:
>>  +        items:
>>  +          - const: timer0
>>  +          - const: timer1
>>  +          - const: timer2
>>  +          - const: timer3
>>  +          - const: timer4
>>  +          - const: timer5
>>  +          - const: timer6
>>  +          - const: timer7
>>  +        minItems: 6
>>  +
>>  +    required:
>>  +      - compatible
>>  +      - clocks
>>  +      - clock-names
>>  +
>>  +  "^timer@[a-f0-9]+":
>>  +    type: object
>>  +    properties:
>>  +      compatible:
>>  +        oneOf:
>>  +          - enum:
>>  +            - ingenic,jz4725b-ost
>>  +            - ingenic,jz4770-ost
>>  +          - items:
>>  +            - const: ingenic,jz4780-ost
>>  +            - const: ingenic,jz4770-ost
>>  +
>>  +
>>  +      clocks:
>>  +        maxItems: 1
>>  +
>>  +      clock-names:
>>  +        const: ost
>>  +
>>  +      interrupts:
>>  +        maxItems: 1
>>  +
>>  +    required:
>>  +      - compatible
>>  +      - clocks
>>  +      - clock-names
>>  +      - interrupts
>>  +
>>  +required:
>>  +  - "#clock-cells"
>>  +  - "#interrupt-cells"
>>  +  - interrupt-controller
>>  +  - compatible
>>  +  - reg
>>  +  - clocks
>>  +  - clock-names
>>  +  - interrupts
>>  +
>>  +additionalProperties: false
>>  +
>>  +examples:
>>  +  - |
>>  +    #include <dt-bindings/clock/jz4770-cgu.h>
>>  +    #include <dt-bindings/clock/ingenic,tcu.h>
>>  +    tcu: timer@10002000 {
>>  +      compatible = "ingenic,jz4770-tcu", "simple-mfd";
>>  +      reg = <0x10002000 0x1000>;
>>  +      #address-cells = <1>;
>>  +      #size-cells = <1>;
>>  +      ranges = <0x0 0x10002000 0x1000>;
>>  +
>>  +      #clock-cells = <1>;
>>  +
>>  +      clocks = <&cgu JZ4770_CLK_RTC>,
>>  +               <&cgu JZ4770_CLK_EXT>,
>>  +               <&cgu JZ4770_CLK_PCLK>;
>>  +      clock-names = "rtc", "ext", "pclk";
>>  +
>>  +      interrupt-controller;
>>  +      #interrupt-cells = <1>;
>>  +
>>  +      interrupt-parent = <&intc>;
>>  +      interrupts = <27 26 25>;
>>  +
>>  +      watchdog: watchdog@0 {
>>  +        compatible = "ingenic,jz4770-watchdog", 
>> "ingenic,jz4740-watchdog";
>>  +        reg = <0x0 0xc>;
>>  +
>>  +        clocks = <&tcu TCU_CLK_WDT>;
>>  +        clock-names = "wdt";
>>  +      };
>>  +
>>  +      pwm: pwm@40 {
>>  +        compatible = "ingenic,jz4770-pwm", "ingenic,jz4740-pwm";
>>  +        reg = <0x40 0x80>;
>>  +
>>  +        #pwm-cells = <3>;
>>  +
>>  +        clocks = <&tcu TCU_CLK_TIMER0>,
>>  +                 <&tcu TCU_CLK_TIMER1>,
>>  +                 <&tcu TCU_CLK_TIMER2>,
>>  +                 <&tcu TCU_CLK_TIMER3>,
>>  +                 <&tcu TCU_CLK_TIMER4>,
>>  +                 <&tcu TCU_CLK_TIMER5>,
>>  +                 <&tcu TCU_CLK_TIMER6>,
>>  +                 <&tcu TCU_CLK_TIMER7>;
>>  +        clock-names = "timer0", "timer1", "timer2", "timer3",
>>  +                "timer4", "timer5", "timer6", "timer7";
>>  +      };
>>  +
>>  +      ost: timer@e0 {
>>  +        compatible = "ingenic,jz4770-ost";
>>  +        reg = <0xe0 0x20>;
>>  +
>>  +        clocks = <&tcu TCU_CLK_OST>;
>>  +        clock-names = "ost";
>>  +
>>  +        interrupts = <15>;
>>  +      };
>>  +    };
>>  --
>>  2.25.1
>> 



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/1] dt-bindings: timer: Convert ingenic,tcu.txt to YAML
  2020-03-02 18:24     ` Paul Cercueil
@ 2020-03-02 19:07       ` Rob Herring
  2020-03-02 19:35         ` Paul Cercueil
  0 siblings, 1 reply; 8+ messages in thread
From: Rob Herring @ 2020-03-02 19:07 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Daniel Lezcano, Thomas Gleixner, Mark Rutland,
	周琰杰,
	od, linux-kernel, devicetree

On Mon, Mar 2, 2020 at 12:25 PM Paul Cercueil <paul@crapouillou.net> wrote:
>
> Hi Rob,
>
>
> Le lun., mars 2, 2020 at 11:06, Rob Herring <robh+dt@kernel.org> a
> écrit :
> > On Sun, Mar 1, 2020 at 11:47 AM Paul Cercueil <paul@crapouillou.net>
> > wrote:
> >>
> >
> > Well, this flew into linux-next quickly and breaks 'make
> > dt_binding_check'... Please drop, revert or fix quickly.
>
> For my defense I said to merge "provided Rob acks it" ;)
>
> >>  Convert the ingenic,tcu.txt file to YAML.
> >>
> >>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> >>  ---
> >>   .../devicetree/bindings/timer/ingenic,tcu.txt | 138 ----------
> >>   .../bindings/timer/ingenic,tcu.yaml           | 235
> >> ++++++++++++++++++
> >>   2 files changed, 235 insertions(+), 138 deletions(-)
> >>   delete mode 100644
> >> Documentation/devicetree/bindings/timer/ingenic,tcu.txt
> >>   create mode 100644
> >> Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> >
> >
> >>  diff --git
> >> a/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> >> b/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> >>  new file mode 100644
> >>  index 000000000000..1ded3b4762bb
> >>  --- /dev/null
> >>  +++ b/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> >>  @@ -0,0 +1,235 @@
> >>  +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> >>  +%YAML 1.2
> >>  +---
> >>  +$id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml#
> >>  +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >>  +
> >>  +title: Ingenic SoCs Timer/Counter Unit (TCU) devicetree bindings
> >>  +
> >>  +description: |
> >>  +  For a description of the TCU hardware and drivers, have a look at
> >>  +  Documentation/mips/ingenic-tcu.rst.
> >>  +
> >>  +maintainers:
> >>  +  - Paul Cercueil <paul@crapouillou.net>
> >>  +
> >>  +properties:
> >>  +  $nodename:
> >>  +    pattern: "^timer@.*"
> >
> > '.*' is redundant.
> >
> >>  +
> >>  +  "#address-cells":
> >>  +    const: 1
> >>  +
> >>  +  "#size-cells":
> >>  +    const: 1
> >>  +
> >>  +  "#clock-cells":
> >>  +    const: 1
> >>  +
> >>  +  "#interrupt-cells":
> >>  +    const: 1
> >>  +
> >>  +  interrupt-controller: true
> >>  +
> >>  +  ranges: true
> >>  +
> >>  +  compatible:
> >>  +    items:
> >>  +      - enum:
> >>  +        - ingenic,jz4740-tcu
> >>  +        - ingenic,jz4725b-tcu
> >>  +        - ingenic,jz4770-tcu
> >>  +        - ingenic,x1000-tcu
> >>  +      - const: simple-mfd
> >
> > This breaks several examples in dt_binding_check because this schema
> > will be applied to every 'simple-mfd' node. You need a custom select
> > entry that excludes 'simple-mfd'. There should be several examples in
> > tree to copy.
>
> Why would it be applied to all 'single-mfd' nodes?

single-mfd?

The way the tool decides to apply a schema or not is my matching on
any of the compatible strings (or node name if no compatible
specified). You can override this with 'select'.

> Doesn't what I wrote
> specify that it needs one of ingenic,*-tcu _and_ simple-mfd?

Yes, but matching is on any of them. You need to add:

select:
  properties:
    compatible:
      contains:
        enum:
          - ingenic,jz4740-tcu
          - ingenic,jz4725b-tcu
          - ingenic,jz4770-tcu
          - ingenic,x1000-tcu
  required:
    - compatible

> I'm not sure I understand what you mean.
>
> I did grep for 'single-mfd' in all YAML files in Documentation/ and
> nothing really stands out.

I guess even without the typo it was harder to find an example than I thought.

Note that I think I'll make the tool exclude 'simple-mfd', but it will
take some time for users to update so you still need to fix this.

Rob

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/1] dt-bindings: timer: Convert ingenic,tcu.txt to YAML
  2020-03-02 19:07       ` Rob Herring
@ 2020-03-02 19:35         ` Paul Cercueil
  2020-03-02 19:59           ` Rob Herring
  0 siblings, 1 reply; 8+ messages in thread
From: Paul Cercueil @ 2020-03-02 19:35 UTC (permalink / raw)
  To: Rob Herring
  Cc: Daniel Lezcano, Thomas Gleixner, Mark Rutland,
	周琰杰,
	od, linux-kernel, devicetree



Le lun., mars 2, 2020 at 13:07, Rob Herring <robh+dt@kernel.org> a 
écrit :
> On Mon, Mar 2, 2020 at 12:25 PM Paul Cercueil <paul@crapouillou.net> 
> wrote:
>> 
>>  Hi Rob,
>> 
>> 
>>  Le lun., mars 2, 2020 at 11:06, Rob Herring <robh+dt@kernel.org> a
>>  écrit :
>>  > On Sun, Mar 1, 2020 at 11:47 AM Paul Cercueil 
>> <paul@crapouillou.net>
>>  > wrote:
>>  >>
>>  >
>>  > Well, this flew into linux-next quickly and breaks 'make
>>  > dt_binding_check'... Please drop, revert or fix quickly.
>> 
>>  For my defense I said to merge "provided Rob acks it" ;)
>> 
>>  >>  Convert the ingenic,tcu.txt file to YAML.
>>  >>
>>  >>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
>>  >>  ---
>>  >>   .../devicetree/bindings/timer/ingenic,tcu.txt | 138 ----------
>>  >>   .../bindings/timer/ingenic,tcu.yaml           | 235
>>  >> ++++++++++++++++++
>>  >>   2 files changed, 235 insertions(+), 138 deletions(-)
>>  >>   delete mode 100644
>>  >> Documentation/devicetree/bindings/timer/ingenic,tcu.txt
>>  >>   create mode 100644
>>  >> Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
>>  >
>>  >
>>  >>  diff --git
>>  >> a/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
>>  >> b/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
>>  >>  new file mode 100644
>>  >>  index 000000000000..1ded3b4762bb
>>  >>  --- /dev/null
>>  >>  +++ b/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
>>  >>  @@ -0,0 +1,235 @@
>>  >>  +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>  >>  +%YAML 1.2
>>  >>  +---
>>  >>  +$id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml#
>>  >>  +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>  >>  +
>>  >>  +title: Ingenic SoCs Timer/Counter Unit (TCU) devicetree 
>> bindings
>>  >>  +
>>  >>  +description: |
>>  >>  +  For a description of the TCU hardware and drivers, have a 
>> look at
>>  >>  +  Documentation/mips/ingenic-tcu.rst.
>>  >>  +
>>  >>  +maintainers:
>>  >>  +  - Paul Cercueil <paul@crapouillou.net>
>>  >>  +
>>  >>  +properties:
>>  >>  +  $nodename:
>>  >>  +    pattern: "^timer@.*"
>>  >
>>  > '.*' is redundant.
>>  >
>>  >>  +
>>  >>  +  "#address-cells":
>>  >>  +    const: 1
>>  >>  +
>>  >>  +  "#size-cells":
>>  >>  +    const: 1
>>  >>  +
>>  >>  +  "#clock-cells":
>>  >>  +    const: 1
>>  >>  +
>>  >>  +  "#interrupt-cells":
>>  >>  +    const: 1
>>  >>  +
>>  >>  +  interrupt-controller: true
>>  >>  +
>>  >>  +  ranges: true
>>  >>  +
>>  >>  +  compatible:
>>  >>  +    items:
>>  >>  +      - enum:
>>  >>  +        - ingenic,jz4740-tcu
>>  >>  +        - ingenic,jz4725b-tcu
>>  >>  +        - ingenic,jz4770-tcu
>>  >>  +        - ingenic,x1000-tcu
>>  >>  +      - const: simple-mfd
>>  >
>>  > This breaks several examples in dt_binding_check because this 
>> schema
>>  > will be applied to every 'simple-mfd' node. You need a custom 
>> select
>>  > entry that excludes 'simple-mfd'. There should be several 
>> examples in
>>  > tree to copy.
>> 
>>  Why would it be applied to all 'single-mfd' nodes?
> 
> single-mfd?

simple-mfd* of course, sorry.

> The way the tool decides to apply a schema or not is my matching on
> any of the compatible strings (or node name if no compatible
> specified). You can override this with 'select'.
> 
>>  Doesn't what I wrote
>>  specify that it needs one of ingenic,*-tcu _and_ simple-mfd?
> 
> Yes, but matching is on any of them. You need to add:

Alright, will do. Is there a reason why it's done that way? It sounds a 
bit counter-intuitive.

> select:
>   properties:
>     compatible:
>       contains:
>         enum:
>           - ingenic,jz4740-tcu
>           - ingenic,jz4725b-tcu
>           - ingenic,jz4770-tcu
>           - ingenic,x1000-tcu
>   required:
>     - compatible
> 
>>  I'm not sure I understand what you mean.
>> 
>>  I did grep for 'single-mfd' in all YAML files in Documentation/ and
>>  nothing really stands out.
> 
> I guess even without the typo it was harder to find an example than I 
> thought.
> 
> Note that I think I'll make the tool exclude 'simple-mfd', but it will
> take some time for users to update so you still need to fix this.

Alright, thanks for the help.

-Paul



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/1] dt-bindings: timer: Convert ingenic,tcu.txt to YAML
  2020-03-02 19:35         ` Paul Cercueil
@ 2020-03-02 19:59           ` Rob Herring
  0 siblings, 0 replies; 8+ messages in thread
From: Rob Herring @ 2020-03-02 19:59 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Daniel Lezcano, Thomas Gleixner, Mark Rutland,
	周琰杰,
	od, linux-kernel, devicetree

On Mon, Mar 2, 2020 at 1:35 PM Paul Cercueil <paul@crapouillou.net> wrote:
>
>
>
> Le lun., mars 2, 2020 at 13:07, Rob Herring <robh+dt@kernel.org> a
> écrit :
> > On Mon, Mar 2, 2020 at 12:25 PM Paul Cercueil <paul@crapouillou.net>
> > wrote:
> >>
> >>  Hi Rob,
> >>
> >>
> >>  Le lun., mars 2, 2020 at 11:06, Rob Herring <robh+dt@kernel.org> a
> >>  écrit :
> >>  > On Sun, Mar 1, 2020 at 11:47 AM Paul Cercueil
> >> <paul@crapouillou.net>
> >>  > wrote:
> >>  >>
> >>  >
> >>  > Well, this flew into linux-next quickly and breaks 'make
> >>  > dt_binding_check'... Please drop, revert or fix quickly.
> >>
> >>  For my defense I said to merge "provided Rob acks it" ;)
> >>
> >>  >>  Convert the ingenic,tcu.txt file to YAML.
> >>  >>
> >>  >>  Signed-off-by: Paul Cercueil <paul@crapouillou.net>
> >>  >>  ---
> >>  >>   .../devicetree/bindings/timer/ingenic,tcu.txt | 138 ----------
> >>  >>   .../bindings/timer/ingenic,tcu.yaml           | 235
> >>  >> ++++++++++++++++++
> >>  >>   2 files changed, 235 insertions(+), 138 deletions(-)
> >>  >>   delete mode 100644
> >>  >> Documentation/devicetree/bindings/timer/ingenic,tcu.txt
> >>  >>   create mode 100644
> >>  >> Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> >>  >
> >>  >
> >>  >>  diff --git
> >>  >> a/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> >>  >> b/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> >>  >>  new file mode 100644
> >>  >>  index 000000000000..1ded3b4762bb
> >>  >>  --- /dev/null
> >>  >>  +++ b/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> >>  >>  @@ -0,0 +1,235 @@
> >>  >>  +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> >>  >>  +%YAML 1.2
> >>  >>  +---
> >>  >>  +$id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml#
> >>  >>  +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >>  >>  +
> >>  >>  +title: Ingenic SoCs Timer/Counter Unit (TCU) devicetree
> >> bindings
> >>  >>  +
> >>  >>  +description: |
> >>  >>  +  For a description of the TCU hardware and drivers, have a
> >> look at
> >>  >>  +  Documentation/mips/ingenic-tcu.rst.
> >>  >>  +
> >>  >>  +maintainers:
> >>  >>  +  - Paul Cercueil <paul@crapouillou.net>
> >>  >>  +
> >>  >>  +properties:
> >>  >>  +  $nodename:
> >>  >>  +    pattern: "^timer@.*"
> >>  >
> >>  > '.*' is redundant.
> >>  >
> >>  >>  +
> >>  >>  +  "#address-cells":
> >>  >>  +    const: 1
> >>  >>  +
> >>  >>  +  "#size-cells":
> >>  >>  +    const: 1
> >>  >>  +
> >>  >>  +  "#clock-cells":
> >>  >>  +    const: 1
> >>  >>  +
> >>  >>  +  "#interrupt-cells":
> >>  >>  +    const: 1
> >>  >>  +
> >>  >>  +  interrupt-controller: true
> >>  >>  +
> >>  >>  +  ranges: true
> >>  >>  +
> >>  >>  +  compatible:
> >>  >>  +    items:
> >>  >>  +      - enum:
> >>  >>  +        - ingenic,jz4740-tcu
> >>  >>  +        - ingenic,jz4725b-tcu
> >>  >>  +        - ingenic,jz4770-tcu
> >>  >>  +        - ingenic,x1000-tcu
> >>  >>  +      - const: simple-mfd
> >>  >
> >>  > This breaks several examples in dt_binding_check because this
> >> schema
> >>  > will be applied to every 'simple-mfd' node. You need a custom
> >> select
> >>  > entry that excludes 'simple-mfd'. There should be several
> >> examples in
> >>  > tree to copy.
> >>
> >>  Why would it be applied to all 'single-mfd' nodes?
> >
> > single-mfd?
>
> simple-mfd* of course, sorry.
>
> > The way the tool decides to apply a schema or not is my matching on
> > any of the compatible strings (or node name if no compatible
> > specified). You can override this with 'select'.
> >
> >>  Doesn't what I wrote
> >>  specify that it needs one of ingenic,*-tcu _and_ simple-mfd?
> >
> > Yes, but matching is on any of them. You need to add:
>
> Alright, will do. Is there a reason why it's done that way? It sounds a
> bit counter-intuitive.

I'm not sure how we could do it differently. We need some way to
express 'apply this schema to a node if ...'. If we just matched on
'compatible' schema as is, then we'd get silence if there's any error
in 'compatible'. That can still happen, but it's reduced in the cases
where there's more than one compatible string as only 1 has to be
right. It's also very common that valid combinations of compatible
strings are not documented clearly or followed correctly, so we can
catch these errors. I wasn't a fan of having to list out compatible
strings twice, so the tool does it for you in the common case.

Rob

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-03-02 20:00 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-01 17:46 [PATCH 0/1] Convert ingenic,tcu.txt to YAML Paul Cercueil
2020-03-01 17:46 ` [PATCH 1/1] dt-bindings: timer: " Paul Cercueil
2020-03-02 17:06   ` Rob Herring
2020-03-02 17:41     ` Daniel Lezcano
2020-03-02 18:24     ` Paul Cercueil
2020-03-02 19:07       ` Rob Herring
2020-03-02 19:35         ` Paul Cercueil
2020-03-02 19:59           ` Rob Herring

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.