[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1583173481.3.0@crapouillou.net>
Date: Mon, 02 Mar 2020 15:24:41 -0300
From: Paul Cercueil <paul@...pouillou.net>
To: Rob Herring <robh+dt@...nel.org>
Cc: Daniel Lezcano <daniel.lezcano@...aro.org>,
Thomas Gleixner <tglx@...utronix.de>,
Mark Rutland <mark.rutland@....com>,
周琰杰 <zhouyanjie@...yeetech.com>, od@...c.me,
linux-kernel@...r.kernel.org, devicetree@...r.kernel.org
Subject: Re: [PATCH 1/1] dt-bindings: timer: Convert ingenic,tcu.txt to YAML
Hi Rob,
Le lun., mars 2, 2020 at 11:06, Rob Herring <robh+dt@...nel.org> a
écrit :
> On Sun, Mar 1, 2020 at 11:47 AM Paul Cercueil <paul@...pouillou.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@...pouillou.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@...pouillou.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@...02000 {
>> + 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
>>
Powered by blists - more mailing lists