Message ID | 20211009104309.45117-1-david@ixit.cz (mailing list archive) |
---|---|
State | RFC |
Headers | show |
Series | WIP: dt-bindings: arm: hwmon: gpio-fan: Convert txt bindings to yaml | expand |
On Sat, 09 Oct 2021 12:43:09 +0200, David Heidelberg wrote: > Convert fan devices connected to GPIOs to the YAML syntax. > > Signed-off-by: David Heidelberg <david@ixit.cz> > --- > .../devicetree/bindings/hwmon/gpio-fan.txt | 41 ----------- > .../devicetree/bindings/hwmon/gpio-fan.yaml | 69 +++++++++++++++++++ > 2 files changed, 69 insertions(+), 41 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/hwmon/gpio-fan.txt > create mode 100644 Documentation/devicetree/bindings/hwmon/gpio-fan.yaml > Running 'make dtbs_check' with the schema in this patch gives the following warnings. Consider if they are expected or the schema is incorrect. These may not be new warnings. Note that it is not yet a requirement to have 0 warnings for dtbs_check. This will change in the future. Full log is available here: https://patchwork.ozlabs.org/patch/1538743 fan: 'gpio-fan,speed-map' is a required property arch/arm/boot/dts/kirkwood-nas2big.dt.yaml arch/arm/boot/dts/kirkwood-net2big.dt.yaml gpio-fan: gpio-fan,speed-map: 'anyOf' conditional failed, one must be fixed: arch/arm/boot/dts/gemini-dlink-dir-685.dt.yaml arch/arm/boot/dts/gemini-dlink-dns-313.dt.yaml gpio_fan: gpio-fan,speed-map: 'anyOf' conditional failed, one must be fixed: arch/arm/boot/dts/am57xx-beagle-x15.dt.yaml arch/arm/boot/dts/am57xx-beagle-x15-revb1.dt.yaml arch/arm/boot/dts/am57xx-beagle-x15-revc.dt.yaml gpio-fan: gpio-fan,speed-map: 'oneOf' conditional failed, one must be fixed: arch/arm/boot/dts/gemini-dlink-dir-685.dt.yaml arch/arm/boot/dts/gemini-dlink-dns-313.dt.yaml gpio_fan: gpio-fan,speed-map: 'oneOf' conditional failed, one must be fixed: arch/arm/boot/dts/am57xx-beagle-x15.dt.yaml arch/arm/boot/dts/am57xx-beagle-x15-revb1.dt.yaml arch/arm/boot/dts/am57xx-beagle-x15-revc.dt.yaml
On Sun, Oct 10 2021 at 14:31:56 -0500, Rob Herring <robh@kernel.org> wrote: > On Sat, 09 Oct 2021 12:43:09 +0200, David Heidelberg wrote: >> Convert fan devices connected to GPIOs to the YAML syntax. >> >> Signed-off-by: David Heidelberg <david@ixit.cz> >> --- >> .../devicetree/bindings/hwmon/gpio-fan.txt | 41 ----------- >> .../devicetree/bindings/hwmon/gpio-fan.yaml | 69 >> +++++++++++++++++++ >> 2 files changed, 69 insertions(+), 41 deletions(-) >> delete mode 100644 >> Documentation/devicetree/bindings/hwmon/gpio-fan.txt >> create mode 100644 >> Documentation/devicetree/bindings/hwmon/gpio-fan.yaml >> > > Running 'make dtbs_check' with the schema in this patch gives the > following warnings. Consider if they are expected or the schema is > incorrect. These may not be new warnings. > > Note that it is not yet a requirement to have 0 warnings for > dtbs_check. > This will change in the future. > > Full log is available here: https://patchwork.ozlabs.org/patch/1538743 > > > fan: 'gpio-fan,speed-map' is a required property > arch/arm/boot/dts/kirkwood-nas2big.dt.yaml > arch/arm/boot/dts/kirkwood-net2big.dt.yaml This sounds correct. > > gpio-fan: gpio-fan,speed-map: 'anyOf' conditional failed, one must be > fixed: > arch/arm/boot/dts/gemini-dlink-dir-685.dt.yaml > arch/arm/boot/dts/gemini-dlink-dns-313.dt.yaml > Look like two arrays instead one expected. > gpio_fan: gpio-fan,speed-map: 'anyOf' conditional failed, one must be > fixed: > arch/arm/boot/dts/am57xx-beagle-x15.dt.yaml > arch/arm/boot/dts/am57xx-beagle-x15-revb1.dt.yaml > arch/arm/boot/dts/am57xx-beagle-x15-revc.dt.yaml Look like two arrays instead one expected. > > gpio-fan: gpio-fan,speed-map: 'oneOf' conditional failed, one must be > fixed: > arch/arm/boot/dts/gemini-dlink-dir-685.dt.yaml > arch/arm/boot/dts/gemini-dlink-dns-313.dt.yaml > Look like three arrays instead one expected. > gpio_fan: gpio-fan,speed-map: 'oneOf' conditional failed, one must be > fixed: > arch/arm/boot/dts/am57xx-beagle-x15.dt.yaml > arch/arm/boot/dts/am57xx-beagle-x15-revb1.dt.yaml > arch/arm/boot/dts/am57xx-beagle-x15-revc.dt.yaml > Look like two arrays instead one expected. I can send patches to solve these warnings. David >
On Sun, Oct 10, 2021 at 4:50 PM David Heidelberg <david@ixit.cz> wrote: > > > > > On Sun, Oct 10 2021 at 14:31:56 -0500, Rob Herring <robh@kernel.org> > wrote: > > On Sat, 09 Oct 2021 12:43:09 +0200, David Heidelberg wrote: > >> Convert fan devices connected to GPIOs to the YAML syntax. > >> > >> Signed-off-by: David Heidelberg <david@ixit.cz> > >> --- > >> .../devicetree/bindings/hwmon/gpio-fan.txt | 41 ----------- > >> .../devicetree/bindings/hwmon/gpio-fan.yaml | 69 > >> +++++++++++++++++++ > >> 2 files changed, 69 insertions(+), 41 deletions(-) > >> delete mode 100644 > >> Documentation/devicetree/bindings/hwmon/gpio-fan.txt > >> create mode 100644 > >> Documentation/devicetree/bindings/hwmon/gpio-fan.yaml > >> > > > > Running 'make dtbs_check' with the schema in this patch gives the > > following warnings. Consider if they are expected or the schema is > > incorrect. These may not be new warnings. > > > > Note that it is not yet a requirement to have 0 warnings for > > dtbs_check. > > This will change in the future. > > > > Full log is available here: https://patchwork.ozlabs.org/patch/1538743 > > > > > > fan: 'gpio-fan,speed-map' is a required property > > arch/arm/boot/dts/kirkwood-nas2big.dt.yaml > > arch/arm/boot/dts/kirkwood-net2big.dt.yaml > This sounds correct. > > > > > gpio-fan: gpio-fan,speed-map: 'anyOf' conditional failed, one must be > > fixed: > > arch/arm/boot/dts/gemini-dlink-dir-685.dt.yaml > > arch/arm/boot/dts/gemini-dlink-dns-313.dt.yaml > > > Look like two arrays instead one expected. > > > gpio_fan: gpio-fan,speed-map: 'anyOf' conditional failed, one must be > > fixed: > > arch/arm/boot/dts/am57xx-beagle-x15.dt.yaml > > arch/arm/boot/dts/am57xx-beagle-x15-revb1.dt.yaml > > arch/arm/boot/dts/am57xx-beagle-x15-revc.dt.yaml > Look like two arrays instead one expected. > > > > > gpio-fan: gpio-fan,speed-map: 'oneOf' conditional failed, one must be > > fixed: > > arch/arm/boot/dts/gemini-dlink-dir-685.dt.yaml > > arch/arm/boot/dts/gemini-dlink-dns-313.dt.yaml > > > Look like three arrays instead one expected. > > > gpio_fan: gpio-fan,speed-map: 'oneOf' conditional failed, one must be > > fixed: > > arch/arm/boot/dts/am57xx-beagle-x15.dt.yaml > > arch/arm/boot/dts/am57xx-beagle-x15-revb1.dt.yaml > > arch/arm/boot/dts/am57xx-beagle-x15-revc.dt.yaml > > > Look like two arrays instead one expected. > > I can send patches to solve these warnings. Certainly not required, but would be nice. I sent it more for whether anything in the schema should change. Rob
On Sat, Oct 09, 2021 at 12:43:09PM +0200, David Heidelberg wrote: > Convert fan devices connected to GPIOs to the YAML syntax. > > Signed-off-by: David Heidelberg <david@ixit.cz> > --- > .../devicetree/bindings/hwmon/gpio-fan.txt | 41 ----------- > .../devicetree/bindings/hwmon/gpio-fan.yaml | 69 +++++++++++++++++++ > 2 files changed, 69 insertions(+), 41 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/hwmon/gpio-fan.txt > create mode 100644 Documentation/devicetree/bindings/hwmon/gpio-fan.yaml > > diff --git a/Documentation/devicetree/bindings/hwmon/gpio-fan.txt b/Documentation/devicetree/bindings/hwmon/gpio-fan.txt > deleted file mode 100644 > index f4cfa350f6a1..000000000000 > --- a/Documentation/devicetree/bindings/hwmon/gpio-fan.txt > +++ /dev/null > @@ -1,41 +0,0 @@ > -Bindings for fan connected to GPIO lines > - > -Required properties: > -- compatible : "gpio-fan" > - > -Optional properties: > -- gpios: Specifies the pins that map to bits in the control value, > - ordered MSB-->LSB. > -- gpio-fan,speed-map: A mapping of possible fan RPM speeds and the > - control value that should be set to achieve them. This array > - must have the RPM values in ascending order. > -- alarm-gpios: This pin going active indicates something is wrong with > - the fan, and a udev event will be fired. > -- #cooling-cells: If used as a cooling device, must be <2> > - Also see: > - Documentation/devicetree/bindings/thermal/thermal-cooling-devices.yaml > - min and max states are derived from the speed-map of the fan. > - > -Note: At least one the "gpios" or "alarm-gpios" properties must be set. > - > -Examples: > - > - gpio_fan { > - compatible = "gpio-fan"; > - gpios = <&gpio1 14 1 > - &gpio1 13 1>; > - gpio-fan,speed-map = <0 0 > - 3000 1 > - 6000 2>; > - alarm-gpios = <&gpio1 15 1>; > - }; > - gpio_fan_cool: gpio_fan { > - compatible = "gpio-fan"; > - gpios = <&gpio2 14 1 > - &gpio2 13 1>; > - gpio-fan,speed-map = <0 0>, > - <3000 1>, > - <6000 2>; > - alarm-gpios = <&gpio2 15 1>; > - #cooling-cells = <2>; /* min followed by max */ > - }; > diff --git a/Documentation/devicetree/bindings/hwmon/gpio-fan.yaml b/Documentation/devicetree/bindings/hwmon/gpio-fan.yaml > new file mode 100644 > index 000000000000..e2db65d58a92 > --- /dev/null > +++ b/Documentation/devicetree/bindings/hwmon/gpio-fan.yaml > @@ -0,0 +1,69 @@ > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: "http://devicetree.org/schemas/hwmon/gpio-fan.yaml#" > +$schema: "http://devicetree.org/meta-schemas/core.yaml#" > + > +title: Bindings for fan connected to GPIO lines > + > +maintainers: > + - Rob Herring <robh+dt@kernel.org> Just robh@kernel.org > + > +properties: > + compatible: > + const: gpio-fan > + > + gpios: > + description: | > + Specifies the pins that map to bits in the control value, > + ordered MSB-->LSB. minItems: 1 maxItems: 7 ? > + > + gpio-fan,speed-map: > + $ref: /schemas/types.yaml#/definitions/uint32-array > + minItems: 4 > + maxItems: 254 > + description: | > + A mapping of possible fan RPM speeds and the > + control value that should be set to achieve them. This array > + must have the RPM values in ascending order. Really this should be a uint32-matrix with this schema: items: minItems: 2 maxItems: 127 items: - description: fan speed in RPMs - description: control value > + > + alarm-gpios: > + description: | > + This pin going active indicates something is wrong with > + the fan, and a udev event will be fired. maxItems: 1 udev is a linuxism and shouldn't be in the binding. > + > + '#cooling-cells': > + const: 2 > + > +required: > + - compatible > + - gpio-fan,speed-map > + > +anyOf: > + - required: [gpios] How is 'gpios' not always required? > + - required: [alarm-gpios] > + > +additionalProperties: false > + > +examples: > + - | > + gpio_fan { > + compatible = "gpio-fan"; > + gpios = <&gpio1 14 1 > + &gpio1 13 1>; > + gpio-fan,speed-map = <0 0 > + 3000 1 > + 6000 2>; Brackets needed around each pair. > + alarm-gpios = <&gpio1 15 1>; > + }; > + - | > + gpio_fan_cool: gpio_fan { > + compatible = "gpio-fan"; > + gpios = <&gpio2 14 1 > + &gpio2 13 1>; > + gpio-fan,speed-map = <0 0 > + 3000 1 > + 6000 2>; > + alarm-gpios = <&gpio2 15 1>; > + #cooling-cells = <2>; /* min followed by max */ > + }; > -- > 2.33.0 > >
On Tue, Oct 19 2021 at 16:35:17 -0500, Rob Herring <robh@kernel.org> wrote: > On Sat, Oct 09, 2021 at 12:43:09PM +0200, David Heidelberg wrote: >> Convert fan devices connected to GPIOs to the YAML syntax. >> >> Signed-off-by: David Heidelberg <david@ixit.cz> >> --- >> .../devicetree/bindings/hwmon/gpio-fan.txt | 41 ----------- >> .../devicetree/bindings/hwmon/gpio-fan.yaml | 69 >> +++++++++++++++++++ >> 2 files changed, 69 insertions(+), 41 deletions(-) >> delete mode 100644 >> Documentation/devicetree/bindings/hwmon/gpio-fan.txt >> create mode 100644 >> Documentation/devicetree/bindings/hwmon/gpio-fan.yaml >> >> diff --git a/Documentation/devicetree/bindings/hwmon/gpio-fan.txt >> b/Documentation/devicetree/bindings/hwmon/gpio-fan.txt >> deleted file mode 100644 >> index f4cfa350f6a1..000000000000 >> --- a/Documentation/devicetree/bindings/hwmon/gpio-fan.txt >> +++ /dev/null >> @@ -1,41 +0,0 @@ >> -Bindings for fan connected to GPIO lines >> - >> -Required properties: >> -- compatible : "gpio-fan" >> - >> -Optional properties: >> -- gpios: Specifies the pins that map to bits in the control value, >> - ordered MSB-->LSB. >> -- gpio-fan,speed-map: A mapping of possible fan RPM speeds and the >> - control value that should be set to achieve them. This array >> - must have the RPM values in ascending order. >> -- alarm-gpios: This pin going active indicates something is wrong >> with >> - the fan, and a udev event will be fired. >> -- #cooling-cells: If used as a cooling device, must be <2> >> - Also see: >> - >> Documentation/devicetree/bindings/thermal/thermal-cooling-devices.yaml >> - min and max states are derived from the speed-map of the fan. >> - >> -Note: At least one the "gpios" or "alarm-gpios" properties must be >> set. >> - >> -Examples: >> - >> - gpio_fan { >> - compatible = "gpio-fan"; >> - gpios = <&gpio1 14 1 >> - &gpio1 13 1>; >> - gpio-fan,speed-map = <0 0 >> - 3000 1 >> - 6000 2>; >> - alarm-gpios = <&gpio1 15 1>; >> - }; >> - gpio_fan_cool: gpio_fan { >> - compatible = "gpio-fan"; >> - gpios = <&gpio2 14 1 >> - &gpio2 13 1>; >> - gpio-fan,speed-map = <0 0>, >> - <3000 1>, >> - <6000 2>; >> - alarm-gpios = <&gpio2 15 1>; >> - #cooling-cells = <2>; /* min followed by max */ >> - }; >> diff --git a/Documentation/devicetree/bindings/hwmon/gpio-fan.yaml >> b/Documentation/devicetree/bindings/hwmon/gpio-fan.yaml >> new file mode 100644 >> index 000000000000..e2db65d58a92 >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/hwmon/gpio-fan.yaml >> @@ -0,0 +1,69 @@ >> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) >> +%YAML 1.2 >> +--- >> +$id: "http://devicetree.org/schemas/hwmon/gpio-fan.yaml#" >> +$schema: "http://devicetree.org/meta-schemas/core.yaml#" >> + >> +title: Bindings for fan connected to GPIO lines >> + >> +maintainers: >> + - Rob Herring <robh+dt@kernel.org> > > Just robh@kernel.org > >> + >> +properties: >> + compatible: >> + const: gpio-fan >> + >> + gpios: >> + description: | >> + Specifies the pins that map to bits in the control value, >> + ordered MSB-->LSB. > > minItems: 1 > maxItems: 7 ? > >> + >> + gpio-fan,speed-map: >> + $ref: /schemas/types.yaml#/definitions/uint32-array >> + minItems: 4 >> + maxItems: 254 >> + description: | >> + A mapping of possible fan RPM speeds and the >> + control value that should be set to achieve them. This array >> + must have the RPM values in ascending order. > > Really this should be a uint32-matrix with this schema: > > items: > minItems: 2 > maxItems: 127 > items: > - description: fan speed in RPMs > - description: control value > >> + >> + alarm-gpios: >> + description: | >> + This pin going active indicates something is wrong with >> + the fan, and a udev event will be fired. > > maxItems: 1 > > udev is a linuxism and shouldn't be in the binding. > >> + >> + '#cooling-cells': >> + const: 2 >> + >> +required: >> + - compatible >> + - gpio-fan,speed-map >> + >> +anyOf: >> + - required: [gpios] > > How is 'gpios' not always required? > >> + - required: [alarm-gpios] >> + >> +additionalProperties: false >> + >> +examples: >> + - | >> + gpio_fan { >> + compatible = "gpio-fan"; >> + gpios = <&gpio1 14 1 >> + &gpio1 13 1>; >> + gpio-fan,speed-map = <0 0 >> + 3000 1 >> + 6000 2>; > > Brackets needed around each pair. Well, that's the issue. I would love to use u32-matrix, but all the drivers use < x1 x2 y1 x2 ... z1 z2 > syntax and driver suggests it's the right solution. * Speed map is in the form <RPM ctrl_val RPM ctrl_val ...> Someone had to rewrite the driver and the DTS files to fix it. We could mark old format as deprecated and use u32-matrix, but for now with current drivers it's not a solution. What you think? Should I document it as it is (so u32-array)? David > >> + alarm-gpios = <&gpio1 15 1>; >> + }; >> + - | >> + gpio_fan_cool: gpio_fan { >> + compatible = "gpio-fan"; >> + gpios = <&gpio2 14 1 >> + &gpio2 13 1>; >> + gpio-fan,speed-map = <0 0 >> + 3000 1 >> + 6000 2>; >> + alarm-gpios = <&gpio2 15 1>; >> + #cooling-cells = <2>; /* min followed by max */ >> + }; >> -- >> 2.33.0 >> >>
diff --git a/Documentation/devicetree/bindings/hwmon/gpio-fan.txt b/Documentation/devicetree/bindings/hwmon/gpio-fan.txt deleted file mode 100644 index f4cfa350f6a1..000000000000 --- a/Documentation/devicetree/bindings/hwmon/gpio-fan.txt +++ /dev/null @@ -1,41 +0,0 @@ -Bindings for fan connected to GPIO lines - -Required properties: -- compatible : "gpio-fan" - -Optional properties: -- gpios: Specifies the pins that map to bits in the control value, - ordered MSB-->LSB. -- gpio-fan,speed-map: A mapping of possible fan RPM speeds and the - control value that should be set to achieve them. This array - must have the RPM values in ascending order. -- alarm-gpios: This pin going active indicates something is wrong with - the fan, and a udev event will be fired. -- #cooling-cells: If used as a cooling device, must be <2> - Also see: - Documentation/devicetree/bindings/thermal/thermal-cooling-devices.yaml - min and max states are derived from the speed-map of the fan. - -Note: At least one the "gpios" or "alarm-gpios" properties must be set. - -Examples: - - gpio_fan { - compatible = "gpio-fan"; - gpios = <&gpio1 14 1 - &gpio1 13 1>; - gpio-fan,speed-map = <0 0 - 3000 1 - 6000 2>; - alarm-gpios = <&gpio1 15 1>; - }; - gpio_fan_cool: gpio_fan { - compatible = "gpio-fan"; - gpios = <&gpio2 14 1 - &gpio2 13 1>; - gpio-fan,speed-map = <0 0>, - <3000 1>, - <6000 2>; - alarm-gpios = <&gpio2 15 1>; - #cooling-cells = <2>; /* min followed by max */ - }; diff --git a/Documentation/devicetree/bindings/hwmon/gpio-fan.yaml b/Documentation/devicetree/bindings/hwmon/gpio-fan.yaml new file mode 100644 index 000000000000..e2db65d58a92 --- /dev/null +++ b/Documentation/devicetree/bindings/hwmon/gpio-fan.yaml @@ -0,0 +1,69 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: "http://devicetree.org/schemas/hwmon/gpio-fan.yaml#" +$schema: "http://devicetree.org/meta-schemas/core.yaml#" + +title: Bindings for fan connected to GPIO lines + +maintainers: + - Rob Herring <robh+dt@kernel.org> + +properties: + compatible: + const: gpio-fan + + gpios: + description: | + Specifies the pins that map to bits in the control value, + ordered MSB-->LSB. + + gpio-fan,speed-map: + $ref: /schemas/types.yaml#/definitions/uint32-array + minItems: 4 + maxItems: 254 + description: | + A mapping of possible fan RPM speeds and the + control value that should be set to achieve them. This array + must have the RPM values in ascending order. + + alarm-gpios: + description: | + This pin going active indicates something is wrong with + the fan, and a udev event will be fired. + + '#cooling-cells': + const: 2 + +required: + - compatible + - gpio-fan,speed-map + +anyOf: + - required: [gpios] + - required: [alarm-gpios] + +additionalProperties: false + +examples: + - | + gpio_fan { + compatible = "gpio-fan"; + gpios = <&gpio1 14 1 + &gpio1 13 1>; + gpio-fan,speed-map = <0 0 + 3000 1 + 6000 2>; + alarm-gpios = <&gpio1 15 1>; + }; + - | + gpio_fan_cool: gpio_fan { + compatible = "gpio-fan"; + gpios = <&gpio2 14 1 + &gpio2 13 1>; + gpio-fan,speed-map = <0 0 + 3000 1 + 6000 2>; + alarm-gpios = <&gpio2 15 1>; + #cooling-cells = <2>; /* min followed by max */ + };
Convert fan devices connected to GPIOs to the YAML syntax. Signed-off-by: David Heidelberg <david@ixit.cz> --- .../devicetree/bindings/hwmon/gpio-fan.txt | 41 ----------- .../devicetree/bindings/hwmon/gpio-fan.yaml | 69 +++++++++++++++++++ 2 files changed, 69 insertions(+), 41 deletions(-) delete mode 100644 Documentation/devicetree/bindings/hwmon/gpio-fan.txt create mode 100644 Documentation/devicetree/bindings/hwmon/gpio-fan.yaml