Message ID | 20200207145712.24898-1-benjamin.gaignard@st.com |
---|---|
State | New |
Headers | show |
Series | [v2] dt-bindings: mfd: Convert stmfx bindings to json-schema | expand |
On Fri, Feb 07, 2020 at 03:57:12PM +0100, Benjamin Gaignard wrote: > Convert stmfx bindings to json-schema > > Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com> > --- > version 2: > - fix description indentation > - change pin controller node name to pinctrl > - document pinctrl subnode properties > - add pinctrl subnode example > > Documentation/devicetree/bindings/mfd/stmfx.txt | 28 ----- > Documentation/devicetree/bindings/mfd/stmfx.yaml | 120 +++++++++++++++++++++ > .../devicetree/bindings/pinctrl/pinctrl-stmfx.txt | 116 -------------------- > 3 files changed, 120 insertions(+), 144 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/mfd/stmfx.txt > create mode 100644 Documentation/devicetree/bindings/mfd/stmfx.yaml > delete mode 100644 Documentation/devicetree/bindings/pinctrl/pinctrl-stmfx.txt > > diff --git a/Documentation/devicetree/bindings/mfd/stmfx.txt b/Documentation/devicetree/bindings/mfd/stmfx.txt > deleted file mode 100644 > index f0c2f7fcf5c7..000000000000 > --- a/Documentation/devicetree/bindings/mfd/stmfx.txt > +++ /dev/null > @@ -1,28 +0,0 @@ > -STMicroelectonics Multi-Function eXpander (STMFX) Core bindings > - > -ST Multi-Function eXpander (STMFX) is a slave controller using I2C for > -communication with the main MCU. Its main features are GPIO expansion, main > -MCU IDD measurement (IDD is the amount of current that flows through VDD) and > -resistive touchscreen controller. > - > -Required properties: > -- compatible: should be "st,stmfx-0300". > -- reg: I2C slave address of the device. > -- interrupts: interrupt specifier triggered by MFX_IRQ_OUT signal. > - Please refer to ../interrupt-controller/interrupt.txt > - > -Optional properties: > -- drive-open-drain: configure MFX_IRQ_OUT as open drain. > -- vdd-supply: phandle of the regulator supplying STMFX. > - > -Example: > - > - stmfx: stmfx@42 { > - compatible = "st,stmfx-0300"; > - reg = <0x42>; > - interrupts = <8 IRQ_TYPE_EDGE_RISING>; > - interrupt-parent = <&gpioi>; > - vdd-supply = <&v3v3>; > - }; > - > -Please refer to ../pinctrl/pinctrl-stmfx.txt for STMFX GPIO expander function bindings. > diff --git a/Documentation/devicetree/bindings/mfd/stmfx.yaml b/Documentation/devicetree/bindings/mfd/stmfx.yaml > new file mode 100644 > index 000000000000..1af906fb876f > --- /dev/null > +++ b/Documentation/devicetree/bindings/mfd/stmfx.yaml > @@ -0,0 +1,120 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/mfd/stmfx.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: STMicroelectonics Multi-Function eXpander (STMFX) bindings > + > +description: ST Multi-Function eXpander (STMFX) is a slave controller using I2C for > + communication with the main MCU. Its main features are GPIO expansion, > + main MCU IDD measurement (IDD is the amount of current that flows > + through VDD) and resistive touchscreen controller. > + > +maintainers: > + - Amelie Delaunay <amelie.delaunay@st.com> > + > +properties: > + compatible: > + const: st,stmfx-0300 > + > + reg: > + enum: [ 0x42, 0x43 ] > + > + interrupts: > + maxItems: 1 > + > + drive-open-drain: true > + > + vdd-supply: > + maxItems: 1 > + > + pinctrl: > + type: object > + > + $ref: ../pinctrl/pincfg-node.yaml allOf needed here. However, this is not in the right spot. > + > + properties: > + compatible: > + const: st,stmfx-0300-pinctrl > + > + "#gpio-cells": > + const: 2 > + > + "#interrupt-cells": > + const: 2 > + > + gpio-controller: true > + > + interrupt-controller: true > + > + gpio-ranges: > + description: if all STMFX pins[24:0] are available (no other STMFX function in use), > + you should use gpio-ranges = <&stmfx_pinctrl 0 0 24>; > + if agpio[3:0] are not available (STMFX Touchscreen function in use), > + you should use gpio-ranges = <&stmfx_pinctrl 0 0 16>, <&stmfx_pinctrl 20 20 4>; > + if agpio[7:4] are not available (STMFX IDD function in use), > + you should use gpio-ranges = <&stmfx_pinctrl 0 0 20>; > + maxItems: 1 > + > + patternProperties: > + "^[a-zA-Z][a-zA-Z0-9_]+$": I'm surprised this works because it is going to match on most of the other properties in this node. You really need a node name pattern you can match on like '-pins$'. Otherwise, you have to do: if: type: object then: ... I'd rather see the dts files fixed. > + type: object > + $ref: ../pinctrl/pinmux-node.yaml Actually, this is why it doesn't error. With no 'allOf', 'type: object' is ignored. > + > + properties: > + pins: true > + bias-disable: true > + bias-pull-up: true > + bias-pull-pin-default: true > + bias-pull-down: true > + drive-open-drain: true > + drive-push-pull: true > + output-high: true > + output-low: true 'additionalProperties: false' needed here. > + > + required: > + - compatible > + - "#gpio-cells" > + - "#interrupt-cells" > + - gpio-controller > + - interrupt-controller > + - gpio-ranges > + > +additionalProperties: false > + > +required: > + - compatible > + - reg > + - interrupts > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + i2c@0 { > + #address-cells = <1>; > + #size-cells = <0>; > + stmfx@42 { > + compatible = "st,stmfx-0300"; > + reg = <0x42>; > + interrupts = <8 IRQ_TYPE_EDGE_RISING>; > + interrupt-parent = <&gpioi>; > + vdd-supply = <&v3v3>; > + > + stmfx_pinctrl: pinctrl { > + compatible = "st,stmfx-0300-pinctrl"; > + #gpio-cells = <2>; > + #interrupt-cells = <2>; > + gpio-controller; > + interrupt-controller; > + gpio-ranges = <&stmfx_pinctrl 0 0 24>; > + > + joystick_pins: joystick { > + pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4"; > + drive-push-pull; > + bias-pull-up; > + }; > + }; > + }; > + }; > +... > diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-stmfx.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-stmfx.txt > deleted file mode 100644 > index c1b4c1819b84..000000000000 > --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-stmfx.txt > +++ /dev/null > @@ -1,116 +0,0 @@ > -STMicroelectronics Multi-Function eXpander (STMFX) GPIO expander bindings > - > -ST Multi-Function eXpander (STMFX) offers up to 24 GPIOs expansion. > -Please refer to ../mfd/stmfx.txt for STMFX Core bindings. > - > -Required properties: > -- compatible: should be "st,stmfx-0300-pinctrl". > -- #gpio-cells: should be <2>, the first cell is the GPIO number and the second > - cell is the gpio flags in accordance with <dt-bindings/gpio/gpio.h>. > -- gpio-controller: marks the device as a GPIO controller. > -- #interrupt-cells: should be <2>, the first cell is the GPIO number and the > - second cell is the interrupt flags in accordance with > - <dt-bindings/interrupt-controller/irq.h>. > -- interrupt-controller: marks the device as an interrupt controller. > -- gpio-ranges: specifies the mapping between gpio controller and pin > - controller pins. Check "Concerning gpio-ranges property" below. > -Please refer to ../gpio/gpio.txt. > - > -Please refer to pinctrl-bindings.txt for pin configuration. > - > -Required properties for pin configuration sub-nodes: > -- pins: list of pins to which the configuration applies. > - > -Optional properties for pin configuration sub-nodes (pinconf-generic ones): > -- bias-disable: disable any bias on the pin. > -- bias-pull-up: the pin will be pulled up. > -- bias-pull-pin-default: use the pin-default pull state. > -- bias-pull-down: the pin will be pulled down. > -- drive-open-drain: the pin will be driven with open drain. > -- drive-push-pull: the pin will be driven actively high and low. > -- output-high: the pin will be configured as an output driving high level. > -- output-low: the pin will be configured as an output driving low level. > - > -Note that STMFX pins[15:0] are called "gpio[15:0]", and STMFX pins[23:16] are > -called "agpio[7:0]". Example, to refer to pin 18 of STMFX, use "agpio2". > - > -Concerning gpio-ranges property: > -- if all STMFX pins[24:0] are available (no other STMFX function in use), you > - should use gpio-ranges = <&stmfx_pinctrl 0 0 24>; > -- if agpio[3:0] are not available (STMFX Touchscreen function in use), you > - should use gpio-ranges = <&stmfx_pinctrl 0 0 16>, <&stmfx_pinctrl 20 20 4>; > -- if agpio[7:4] are not available (STMFX IDD function in use), you > - should use gpio-ranges = <&stmfx_pinctrl 0 0 20>; > - > - > -Example: > - > - stmfx: stmfx@42 { > - ... > - > - stmfx_pinctrl: stmfx-pin-controller { > - compatible = "st,stmfx-0300-pinctrl"; > - #gpio-cells = <2>; > - #interrupt-cells = <2>; > - gpio-controller; > - interrupt-controller; > - gpio-ranges = <&stmfx_pinctrl 0 0 24>; > - > - joystick_pins: joystick { > - pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4"; > - drive-push-pull; > - bias-pull-up; > - }; > - }; > - }; > - > -Example of STMFX GPIO consumers: > - > - joystick { > - compatible = "gpio-keys"; > - #address-cells = <1>; > - #size-cells = <0>; > - pinctrl-0 = <&joystick_pins>; > - pinctrl-names = "default"; > - button-0 { > - label = "JoySel"; > - linux,code = <KEY_ENTER>; > - interrupt-parent = <&stmfx_pinctrl>; > - interrupts = <0 IRQ_TYPE_EDGE_RISING>; > - }; > - button-1 { > - label = "JoyDown"; > - linux,code = <KEY_DOWN>; > - interrupt-parent = <&stmfx_pinctrl>; > - interrupts = <1 IRQ_TYPE_EDGE_RISING>; > - }; > - button-2 { > - label = "JoyLeft"; > - linux,code = <KEY_LEFT>; > - interrupt-parent = <&stmfx_pinctrl>; > - interrupts = <2 IRQ_TYPE_EDGE_RISING>; > - }; > - button-3 { > - label = "JoyRight"; > - linux,code = <KEY_RIGHT>; > - interrupt-parent = <&stmfx_pinctrl>; > - interrupts = <3 IRQ_TYPE_EDGE_RISING>; > - }; > - button-4 { > - label = "JoyUp"; > - linux,code = <KEY_UP>; > - interrupt-parent = <&stmfx_pinctrl>; > - interrupts = <4 IRQ_TYPE_EDGE_RISING>; > - }; > - }; > - > - leds { > - compatible = "gpio-leds"; > - orange { > - gpios = <&stmfx_pinctrl 17 1>; > - }; > - > - blue { > - gpios = <&stmfx_pinctrl 19 1>; > - }; > - } > -- > 2.15.0 >
diff --git a/Documentation/devicetree/bindings/mfd/stmfx.txt b/Documentation/devicetree/bindings/mfd/stmfx.txt deleted file mode 100644 index f0c2f7fcf5c7..000000000000 --- a/Documentation/devicetree/bindings/mfd/stmfx.txt +++ /dev/null @@ -1,28 +0,0 @@ -STMicroelectonics Multi-Function eXpander (STMFX) Core bindings - -ST Multi-Function eXpander (STMFX) is a slave controller using I2C for -communication with the main MCU. Its main features are GPIO expansion, main -MCU IDD measurement (IDD is the amount of current that flows through VDD) and -resistive touchscreen controller. - -Required properties: -- compatible: should be "st,stmfx-0300". -- reg: I2C slave address of the device. -- interrupts: interrupt specifier triggered by MFX_IRQ_OUT signal. - Please refer to ../interrupt-controller/interrupt.txt - -Optional properties: -- drive-open-drain: configure MFX_IRQ_OUT as open drain. -- vdd-supply: phandle of the regulator supplying STMFX. - -Example: - - stmfx: stmfx@42 { - compatible = "st,stmfx-0300"; - reg = <0x42>; - interrupts = <8 IRQ_TYPE_EDGE_RISING>; - interrupt-parent = <&gpioi>; - vdd-supply = <&v3v3>; - }; - -Please refer to ../pinctrl/pinctrl-stmfx.txt for STMFX GPIO expander function bindings. diff --git a/Documentation/devicetree/bindings/mfd/stmfx.yaml b/Documentation/devicetree/bindings/mfd/stmfx.yaml new file mode 100644 index 000000000000..1af906fb876f --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/stmfx.yaml @@ -0,0 +1,120 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mfd/stmfx.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: STMicroelectonics Multi-Function eXpander (STMFX) bindings + +description: ST Multi-Function eXpander (STMFX) is a slave controller using I2C for + communication with the main MCU. Its main features are GPIO expansion, + main MCU IDD measurement (IDD is the amount of current that flows + through VDD) and resistive touchscreen controller. + +maintainers: + - Amelie Delaunay <amelie.delaunay@st.com> + +properties: + compatible: + const: st,stmfx-0300 + + reg: + enum: [ 0x42, 0x43 ] + + interrupts: + maxItems: 1 + + drive-open-drain: true + + vdd-supply: + maxItems: 1 + + pinctrl: + type: object + + $ref: ../pinctrl/pincfg-node.yaml + + properties: + compatible: + const: st,stmfx-0300-pinctrl + + "#gpio-cells": + const: 2 + + "#interrupt-cells": + const: 2 + + gpio-controller: true + + interrupt-controller: true + + gpio-ranges: + description: if all STMFX pins[24:0] are available (no other STMFX function in use), + you should use gpio-ranges = <&stmfx_pinctrl 0 0 24>; + if agpio[3:0] are not available (STMFX Touchscreen function in use), + you should use gpio-ranges = <&stmfx_pinctrl 0 0 16>, <&stmfx_pinctrl 20 20 4>; + if agpio[7:4] are not available (STMFX IDD function in use), + you should use gpio-ranges = <&stmfx_pinctrl 0 0 20>; + maxItems: 1 + + patternProperties: + "^[a-zA-Z][a-zA-Z0-9_]+$": + type: object + $ref: ../pinctrl/pinmux-node.yaml + + properties: + pins: true + bias-disable: true + bias-pull-up: true + bias-pull-pin-default: true + bias-pull-down: true + drive-open-drain: true + drive-push-pull: true + output-high: true + output-low: true + + required: + - compatible + - "#gpio-cells" + - "#interrupt-cells" + - gpio-controller + - interrupt-controller + - gpio-ranges + +additionalProperties: false + +required: + - compatible + - reg + - interrupts + +examples: + - | + #include <dt-bindings/interrupt-controller/arm-gic.h> + i2c@0 { + #address-cells = <1>; + #size-cells = <0>; + stmfx@42 { + compatible = "st,stmfx-0300"; + reg = <0x42>; + interrupts = <8 IRQ_TYPE_EDGE_RISING>; + interrupt-parent = <&gpioi>; + vdd-supply = <&v3v3>; + + stmfx_pinctrl: pinctrl { + compatible = "st,stmfx-0300-pinctrl"; + #gpio-cells = <2>; + #interrupt-cells = <2>; + gpio-controller; + interrupt-controller; + gpio-ranges = <&stmfx_pinctrl 0 0 24>; + + joystick_pins: joystick { + pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4"; + drive-push-pull; + bias-pull-up; + }; + }; + }; + }; +... diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-stmfx.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-stmfx.txt deleted file mode 100644 index c1b4c1819b84..000000000000 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-stmfx.txt +++ /dev/null @@ -1,116 +0,0 @@ -STMicroelectronics Multi-Function eXpander (STMFX) GPIO expander bindings - -ST Multi-Function eXpander (STMFX) offers up to 24 GPIOs expansion. -Please refer to ../mfd/stmfx.txt for STMFX Core bindings. - -Required properties: -- compatible: should be "st,stmfx-0300-pinctrl". -- #gpio-cells: should be <2>, the first cell is the GPIO number and the second - cell is the gpio flags in accordance with <dt-bindings/gpio/gpio.h>. -- gpio-controller: marks the device as a GPIO controller. -- #interrupt-cells: should be <2>, the first cell is the GPIO number and the - second cell is the interrupt flags in accordance with - <dt-bindings/interrupt-controller/irq.h>. -- interrupt-controller: marks the device as an interrupt controller. -- gpio-ranges: specifies the mapping between gpio controller and pin - controller pins. Check "Concerning gpio-ranges property" below. -Please refer to ../gpio/gpio.txt. - -Please refer to pinctrl-bindings.txt for pin configuration. - -Required properties for pin configuration sub-nodes: -- pins: list of pins to which the configuration applies. - -Optional properties for pin configuration sub-nodes (pinconf-generic ones): -- bias-disable: disable any bias on the pin. -- bias-pull-up: the pin will be pulled up. -- bias-pull-pin-default: use the pin-default pull state. -- bias-pull-down: the pin will be pulled down. -- drive-open-drain: the pin will be driven with open drain. -- drive-push-pull: the pin will be driven actively high and low. -- output-high: the pin will be configured as an output driving high level. -- output-low: the pin will be configured as an output driving low level. - -Note that STMFX pins[15:0] are called "gpio[15:0]", and STMFX pins[23:16] are -called "agpio[7:0]". Example, to refer to pin 18 of STMFX, use "agpio2". - -Concerning gpio-ranges property: -- if all STMFX pins[24:0] are available (no other STMFX function in use), you - should use gpio-ranges = <&stmfx_pinctrl 0 0 24>; -- if agpio[3:0] are not available (STMFX Touchscreen function in use), you - should use gpio-ranges = <&stmfx_pinctrl 0 0 16>, <&stmfx_pinctrl 20 20 4>; -- if agpio[7:4] are not available (STMFX IDD function in use), you - should use gpio-ranges = <&stmfx_pinctrl 0 0 20>; - - -Example: - - stmfx: stmfx@42 { - ... - - stmfx_pinctrl: stmfx-pin-controller { - compatible = "st,stmfx-0300-pinctrl"; - #gpio-cells = <2>; - #interrupt-cells = <2>; - gpio-controller; - interrupt-controller; - gpio-ranges = <&stmfx_pinctrl 0 0 24>; - - joystick_pins: joystick { - pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4"; - drive-push-pull; - bias-pull-up; - }; - }; - }; - -Example of STMFX GPIO consumers: - - joystick { - compatible = "gpio-keys"; - #address-cells = <1>; - #size-cells = <0>; - pinctrl-0 = <&joystick_pins>; - pinctrl-names = "default"; - button-0 { - label = "JoySel"; - linux,code = <KEY_ENTER>; - interrupt-parent = <&stmfx_pinctrl>; - interrupts = <0 IRQ_TYPE_EDGE_RISING>; - }; - button-1 { - label = "JoyDown"; - linux,code = <KEY_DOWN>; - interrupt-parent = <&stmfx_pinctrl>; - interrupts = <1 IRQ_TYPE_EDGE_RISING>; - }; - button-2 { - label = "JoyLeft"; - linux,code = <KEY_LEFT>; - interrupt-parent = <&stmfx_pinctrl>; - interrupts = <2 IRQ_TYPE_EDGE_RISING>; - }; - button-3 { - label = "JoyRight"; - linux,code = <KEY_RIGHT>; - interrupt-parent = <&stmfx_pinctrl>; - interrupts = <3 IRQ_TYPE_EDGE_RISING>; - }; - button-4 { - label = "JoyUp"; - linux,code = <KEY_UP>; - interrupt-parent = <&stmfx_pinctrl>; - interrupts = <4 IRQ_TYPE_EDGE_RISING>; - }; - }; - - leds { - compatible = "gpio-leds"; - orange { - gpios = <&stmfx_pinctrl 17 1>; - }; - - blue { - gpios = <&stmfx_pinctrl 19 1>; - }; - }
Convert stmfx bindings to json-schema Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com> --- version 2: - fix description indentation - change pin controller node name to pinctrl - document pinctrl subnode properties - add pinctrl subnode example Documentation/devicetree/bindings/mfd/stmfx.txt | 28 ----- Documentation/devicetree/bindings/mfd/stmfx.yaml | 120 +++++++++++++++++++++ .../devicetree/bindings/pinctrl/pinctrl-stmfx.txt | 116 -------------------- 3 files changed, 120 insertions(+), 144 deletions(-) delete mode 100644 Documentation/devicetree/bindings/mfd/stmfx.txt create mode 100644 Documentation/devicetree/bindings/mfd/stmfx.yaml delete mode 100644 Documentation/devicetree/bindings/pinctrl/pinctrl-stmfx.txt