pcf857x: DTS fixes and DT binding to json-schema conversion
Subsystems (3)
cover pcf857x: DTS fixes and DT binding to json-schema conversion
Hi all,
This patch series converts the PCF857x-compatible I/O expanders Device Tree binding documentation to json-schema, after fixing a few issues in DTS files.
Thanks for your comments!
Geert Uytterhoeven (3):
ARM: dts: dra7x-evm: Align GPIO hog names with dt-schema
ARM: dts: imx: emcon-avari: Fix nxp,pca8574 #gpio-cells
dt-bindings: gpio: pcf857x: Convert to json-schema
.../devicetree/bindings/gpio/gpio-pcf857x.txt | 69 ---------- .../devicetree/bindings/gpio/nxp,pcf8575.yaml | 120 ++++++++++++++++++ arch/arm/boot/dts/dra7-evm.dts | 2 +- arch/arm/boot/dts/dra71-evm.dts | 2 +- arch/arm/boot/dts/dra72-evm-common.dtsi | 2 +- arch/arm/boot/dts/dra76-evm.dts | 2 +- arch/arm/boot/dts/imx6qdl-emcon-avari.dtsi | 2 +- 7 files changed, 125 insertions(+), 74 deletions(-) delete mode 100644 Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt create mode 100644 Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml
Signature · 1 line
2.25.1
PATCH 1/3 ARM: dts: dra7x-evm: Align GPIO hog names with dt-schema
The dt-schema for nxp,pcf8575 expects GPIO hogs node names to end with a 'hog' suffix.
--- arch/arm/boot/dts/dra7-evm.dts | 2 +- arch/arm/boot/dts/dra71-evm.dts | 2 +- arch/arm/boot/dts/dra72-evm-common.dtsi | 2 +- arch/arm/boot/dts/dra76-evm.dts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-)
arch/arm/boot/dts/dra7-evm.dts +1 -1
@@ -366,7 +366,7 @@ pcf_hdmi: gpio@26 { reg = <0x26>; gpio-controller; #gpio-cells = <2>; - p1 { + hdmi-audio-hog { /* vin6_sel_s0: high: VIN6, low: audio */ gpio-hog; gpios = <1 GPIO_ACTIVE_HIGH>;
arch/arm/boot/dts/dra71-evm.dts +1 -1
@@ -187,7 +187,7 @@ &pcf_gpio_21 { }; &pcf_hdmi { - p0 { + hdmi-i2c-disable-hog { /* * PM_OEn to High: Disable routing I2C3 to PM_I2C * With this PM_SEL(p3) should not matter
arch/arm/boot/dts/dra72-evm-common.dtsi +1 -1
@@ -268,7 +268,7 @@ pcf_hdmi: pcf8575@26 { */ lines-initial-states = <0x0f2b>; - p1 { + hdmi-audio-hog { /* vin6_sel_s0: high: VIN6, low: audio */ gpio-hog; gpios = <1 GPIO_ACTIVE_HIGH>;
arch/arm/boot/dts/dra76-evm.dts +1 -1
@@ -381,7 +381,7 @@ pcf_hdmi: pcf8575@26 { reg = <0x26>; gpio-controller; #gpio-cells = <2>; - p1 { + hdmi-audio-hog { /* vin6_sel_s0: high: VIN6, low: audio */ gpio-hog; gpios = <1 GPIO_ACTIVE_HIGH>;
Signature · 1 line
2.25.1
Re: [PATCH 1/3] ARM: dts: dra7x-evm: Align GPIO hog names with dt-schema
Hi Geert,
Thank you for the patch.
Quoted 4 lines · Geert Uytterhoeven
The dt-schema for nxp,pcf8575 expects GPIO hogs node names to end with a 'hog' suffix.
Signed-off-by Geert Uytterhoeven <[email protected]>
Quoted 59 lines
--- arch/arm/boot/dts/dra7-evm.dts | 2 +- arch/arm/boot/dts/dra71-evm.dts | 2 +- arch/arm/boot/dts/dra72-evm-common.dtsi | 2 +- arch/arm/boot/dts/dra76-evm.dts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-)arch/arm/boot/dts/dra7-evm.dts +1
-1@@ -366,7 +366,7 @@ pcf_hdmi: gpio@26 { reg = <0x26>; gpio-controller; #gpio-cells = <2>; - p1 { + hdmi-audio-hog { /* vin6_sel_s0: high: VIN6, low: audio */ gpio-hog; gpios = <1 GPIO_ACTIVE_HIGH>;arch/arm/boot/dts/dra71-evm.dts +1
-1@@ -187,7 +187,7 @@ &pcf_gpio_21 { }; &pcf_hdmi { - p0 { + hdmi-i2c-disable-hog { /* * PM_OEn to High: Disable routing I2C3 to PM_I2C * With this PM_SEL(p3) should not matterarch/arm/boot/dts/dra72-evm-common.dtsi +1
-1@@ -268,7 +268,7 @@ pcf_hdmi: pcf8575@26 { */ lines-initial-states = <0x0f2b>; - p1 { + hdmi-audio-hog { /* vin6_sel_s0: high: VIN6, low: audio */ gpio-hog; gpios = <1 GPIO_ACTIVE_HIGH>;arch/arm/boot/dts/dra76-evm.dts +1
-1@@ -381,7 +381,7 @@ pcf_hdmi: pcf8575@26 { reg = <0x26>; gpio-controller; #gpio-cells = <2>; - p1 { + hdmi-audio-hog { /* vin6_sel_s0: high: VIN6, low: audio */ gpio-hog; gpios = <1 GPIO_ACTIVE_HIGH>;
Signature · 3 lines
Regards, Laurent Pinchart
Re: [PATCH 1/3] ARM: dts: dra7x-evm: Align GPIO hog names with dt-schema
In reply to Geert UytterhoevenQuoted 2 lines · Geert Uytterhoeven
The dt-schema for nxp,pcf8575 expects GPIO hogs node names to end with a 'hog' suffix.
Picking up this patch into omap-for-v5.14/dt thanks.
Tony
PATCH 2/3 ARM: dts: imx: emcon-avari: Fix nxp,pca8574 #gpio-cells
In reply to Geert UytterhoevenAccording to the DT bindings, #gpio-cells must be two.
--- arch/arm/boot/dts/imx6qdl-emcon-avari.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/imx6qdl-emcon-avari.dtsi +1 -1
@@ -126,7 +126,7 @@ boardid: gpio@3a { compatible = "nxp,pca8574"; reg = <0x3a>; gpio-controller; - #gpio-cells = <1>; + #gpio-cells = <2>; }; };
Signature · 1 line
2.25.1
Re: [PATCH 2/3] ARM: dts: imx: emcon-avari: Fix nxp,pca8574 #gpio-cells
Hi Geert,
Thank you for the patch.
Quoted 4 lines · Geert Uytterhoeven
According to the DT bindings, #gpio-cells must be two.
Fixes 63e71fedc07c4ece ("ARM: dts: Add support for emtrion emCON-MX6 series")Signed-off-by Geert Uytterhoeven <[email protected]>
Quoted 17 lines
--- arch/arm/boot/dts/imx6qdl-emcon-avari.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)arch/arm/boot/dts/imx6qdl-emcon-avari.dtsi +1
-1@@ -126,7 +126,7 @@ boardid: gpio@3a { compatible = "nxp,pca8574"; reg = <0x3a>; gpio-controller; - #gpio-cells = <1>; + #gpio-cells = <2>; }; };
Signature · 3 lines
Regards, Laurent Pinchart
Shawn Guo
AppliedRe: [PATCH 2/3] ARM: dts: imx: emcon-avari: Fix nxp,pca8574 #gpio-cells
In reply to Geert UytterhoevenQuoted 4 lines · Geert Uytterhoeven
According to the DT bindings, #gpio-cells must be two.
Fixes 63e71fedc07c4ece ("ARM: dts: Add support for emtrion emCON-MX6 series")Signed-off-by Geert Uytterhoeven <[email protected]>
Applied, thanks.
PATCH 3/3 dt-bindings: gpio: pcf857x: Convert to json-schema
In reply to Geert UytterhoevenConvert the PCF857x-compatible I/O expanders Device Tree binding documentation to json-schema.
Document missing compatible values, properties, and gpio hogs.
---
Perhaps the "ti,pcf8575" construct should be removed, and the few users fixed instead?
I have listed Laurent as the maintainer, as he wrote the original bindings. Laurent: Please scream if this is inappropriate ;-)
--- .../devicetree/bindings/gpio/gpio-pcf857x.txt | 69 ---------- .../devicetree/bindings/gpio/nxp,pcf8575.yaml | 120 ++++++++++++++++++ 2 files changed, 120 insertions(+), 69 deletions(-) delete mode 100644 Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt create mode 100644 Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml
Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt deleted +0 -69
@@ -1,69 +0,0 @@ -* PCF857x-compatible I/O expanders - -The PCF857x-compatible chips have "quasi-bidirectional" I/O lines that can be -driven high by a pull-up current source or driven low to ground. This combines -the direction and output level into a single bit per line, which can't be read -back. We can't actually know at initialization time whether a line is configured -(a) as output and driving the signal low/high, or (b) as input and reporting a -low/high value, without knowing the last value written since the chip came out -of reset (if any). The only reliable solution for setting up line direction is -thus to do it explicitly. - -Required Properties: - - - compatible: should be one of the following. - - "maxim,max7328": For the Maxim MAX7378 - - "maxim,max7329": For the Maxim MAX7329 - - "nxp,pca8574": For the NXP PCA8574 - - "nxp,pca8575": For the NXP PCA8575 - - "nxp,pca9670": For the NXP PCA9670 - - "nxp,pca9671": For the NXP PCA9671 - - "nxp,pca9672": For the NXP PCA9672 - - "nxp,pca9673": For the NXP PCA9673 - - "nxp,pca9674": For the NXP PCA9674 - - "nxp,pca9675": For the NXP PCA9675 - - "nxp,pcf8574": For the NXP PCF8574 - - "nxp,pcf8574a": For the NXP PCF8574A - - "nxp,pcf8575": For the NXP PCF8575 - - - reg: I2C slave address. - - - gpio-controller: Marks the device node as a gpio controller. - - #gpio-cells: Should be 2. The first cell is the GPIO number and the second - cell specifies GPIO flags, as defined in <dt-bindings/gpio/gpio.h>. Only the - GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported. - -Optional Properties: - - - lines-initial-states: Bitmask that specifies the initial state of each - line. When a bit is set to zero, the corresponding line will be initialized to - the input (pulled-up) state. When the bit is set to one, the line will be - initialized the low-level output state. If the property is not specified - all lines will be initialized to the input state. - - The I/O expander can detect input state changes, and thus optionally act as - an interrupt controller. When the expander interrupt line is connected all the - following properties must be set. For more information please see the - interrupt controller device tree bindings documentation available at - Documentation/devicetree/bindings/interrupt-controller/interrupts.txt. - - - interrupt-controller: Identifies the node as an interrupt controller. - - #interrupt-cells: Number of cells to encode an interrupt source, shall be 2. - - interrupts: Interrupt specifier for the controllers interrupt. - - -Please refer to gpio.txt in this directory for details of the common GPIO -bindings used by client devices. - -Example: PCF8575 I/O expander node - - pcf8575: gpio@20 { - compatible = "nxp,pcf8575"; - reg = <0x20>; - interrupt-parent = <&irqpin2>; - interrupts = <3 0>; - gpio-controller; - #gpio-cells = <2>; - interrupt-controller; - #interrupt-cells = <2>; - };
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml new file +120 -0
120 lines not on this page · raw message
Signature · 1 line
2.25.1
Re: [PATCH 3/3] dt-bindings: gpio: pcf857x: Convert to json-schema
Quoted 6 lines · Geert Uytterhoeven
Convert the PCF857x-compatible I/O expanders Device Tree binding documentation to json-schema.
Document missing compatible values, properties, and gpio hogs.
Signed-off-by Geert Uytterhoeven <[email protected]>
(...)
Quoted 2 lines
Perhaps the "ti,pcf8575" construct should be removed, and the few users fixed instead?
You would rather list it as deprecated I think?
It is ABI...
Quoted 1 line
+ gpio-controller: true
So this is implicitly using the generic schema in
/dtschema/schemas/gpio/gpio.yaml
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml line 66
Quoted 10 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml new file +10
-0+ lines-initial-states: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Bitmask that specifies the initial state of each line. + When a bit is set to zero, the corresponding line will be initialized to + the input (pulled-up) state. + When the bit is set to one, the line will be initialized to the + low-level output state. + If the property is not specified all lines will be initialized to the + input state.
Is this something we standardized or something that should actually be a custom "nxp," property we just missed it? (Looks like the latter... oh well, now it is there.)
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml line 80
Quoted 3 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml new file +3
-0+patternProperties: + "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$": + type: object
But this is already in /dtschema/schemas/gpio/gpio-hog.yaml
for nodename, isn't that where it properly belongs?
I'm however confused here Rob will know what to do.
Quoted 3 lines
required:
- gpio-hog
- gpios
This is already in
/dtschema/schemas/gpio/gpio-hog.yaml
as well?
Yours,
Linus Walleij
Re: [PATCH 3/3] dt-bindings: gpio: pcf857x: Convert to json-schema
Hi Linus,
Quoted 7 lines · Linus Walleij
Quoted 5 lines · Geert Uytterhoeven
Convert the PCF857x-compatible I/O expanders Device Tree binding documentation to json-schema.
Document missing compatible values, properties, and gpio hogs.
Quoted 8 lines
Quoted 1 line
Signed-off-by Geert Uytterhoeven <[email protected]>(...)
Quoted 2 lines
Perhaps the "ti,pcf8575" construct should be removed, and the few users fixed instead?
You would rather list it as deprecated I think?
It is ABI...
All DTS files use the "nxp,pcf8575" fallback, except for arch/x86/platform/ce4100/falconfalls.dts.
The latter ain't working with Linux, as the Linux driver doesn't match against "ti,pcf8575"...
Quoted 4 lines
Quoted 1 line
+ gpio-controller: true
So this is implicitly using the generic schema in
/dtschema/schemas/gpio/gpio.yaml
if you leave it out:
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml: ignoring,
error in schema: properties
warning: no schema found in file:Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml:
properties: 'gpio-controller' is a dependency of '#gpio-cells'
from schema $id: http://devicetree.org/meta-schemas/gpios.yaml#
Quoted 11 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml line 66
Quoted 10 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml new file +10
-0+ lines-initial-states: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Bitmask that specifies the initial state of each line. + When a bit is set to zero, the corresponding line will be initialized to + the input (pulled-up) state. + When the bit is set to one, the line will be initialized to the + low-level output state. + If the property is not specified all lines will be initialized to the + input state.
Quoted 3 lines
Is this something we standardized or something that should actually be a custom "nxp," property we just missed it? (Looks like the latter... oh well, now it is there.)
Too late for an "nxp," prefix.
See the NOTE in drivers/gpio/gpio-pcf857x.c:
/* NOTE: these chips have strange "quasi-bidirectional" I/O pins.
* We can't actually know whether a pin is configured (a) as output
* and driving the signal low, or (b) as input and reporting a low
* value ... without knowing the last value written since the chip
* came out of reset (if any). We can't read the latched output. *
* In short, the only reliable solution for setting up pin direction
* is to do it explicitly. The setup() method can do that, but it
* may cause transient glitching since it can't know the last value
* written (some pins may need to be driven low).
*
* Using n_latch avoids that trouble. When left initialized to zero,
* our software copy of the "latch" then matches the chip's all-ones
* reset state. Otherwise it flags pins to be driven low. */
Quoted 9 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml line 80
Quoted 3 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml new file +3
-0+patternProperties: + "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$": + type: objectBut this is already in /dtschema/schemas/gpio/gpio-hog.yaml
for nodename, isn't that where it properly belongs?I'm however confused here Rob will know what to do.
If we leave this out, something still has to refer to it? I see no other binding doing that...
Gr{oetje,eeting}s,
Geert
Signature · 5 lines
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Rob Herring
maintainerRe: [PATCH 3/3] dt-bindings: gpio: pcf857x: Convert to json-schema
Quoted 16 lines · Geert Uytterhoeven
Hi Linus,
Quoted 13 lines · Linus Walleij
Quoted 6 lines · Geert Uytterhoeven
Convert the PCF857x-compatible I/O expanders Device Tree binding documentation to json-schema.
Document missing compatible values, properties, and gpio hogs.
Signed-off-by Geert Uytterhoeven <[email protected]>(...)
Quoted 2 lines
Perhaps the "ti,pcf8575" construct should be removed, and the few users fixed instead?
Quoted 7 lines
Quoted 2 lines
You would rather list it as deprecated I think?
It is ABI...All DTS files use the "nxp,pcf8575" fallback, except for
arch/x86/platform/ce4100/falconfalls.dts.
The latter ain't working with Linux, as the Linux driver doesn't match against "ti,pcf8575"...
Perhaps can it just be removed?
Quoted 34 lines
Quoted 5 lines
Quoted 2 lines
+ gpio-controller: true
So this is implicitly using the generic schema in
/dtschema/schemas/gpio/gpio.yamlif you leave it out:
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml: ignoring,
error in schema: properties
warning: no schema found in file:Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml:
properties: 'gpio-controller' is a dependency of '#gpio-cells'
from schema $id: http://devicetree.org/meta-schemas/gpios.yaml#Quoted 11 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml line 66
Quoted 10 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml new file +10
-0+ lines-initial-states: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Bitmask that specifies the initial state of each line. + When a bit is set to zero, the corresponding line will be initialized to + the input (pulled-up) state. + When the bit is set to one, the line will be initialized to the + low-level output state. + If the property is not specified all lines will be initialized to the + input state.Quoted 3 lines
Is this something we standardized or something that should actually be a custom "nxp," property we just missed it? (Looks like the latter... oh well, now it is there.)
Too late for an "nxp," prefix.
See the NOTE indrivers/gpio/gpio-pcf857x.c:
Quoted 25 lines
/* NOTE: these chips have strange "quasi-bidirectional" I/O pins.
* We can't actually know whether a pin is configured (a) as output
* and driving the signal low, or (b) as input and reporting a low
* value ... without knowing the last value written since the chip
* came out of reset (if any). We can't read the latched output. *
* In short, the only reliable solution for setting up pin direction
* is to do it explicitly. Thesetup()method can do that, but it
* may cause transient glitching since it can't know the last value
* written (some pins may need to be driven low).
*
* Usingn_latchavoids that trouble. When left initialized to zero,
* our software copy of the "latch" then matches the chip's all-ones
* reset state. Otherwise it flags pins to be driven low. */Quoted 9 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml line 80
Quoted 3 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml new file +3
-0+patternProperties: + "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$": + type: objectBut this is already in /dtschema/schemas/gpio/gpio-hog.yaml
for nodename, isn't that where it properly belongs?I'm however confused here Rob will know what to do.
This one is a bit odd.
Quoted 2 lines
If we leave this out, something still has to refer to it? I see no other binding doing that...
It's selected by 'gpio-hog' being present, but here you need to make sure that's the case.
And I would hope you could define the node name to be just 1 of the 2 cases.
Rob
Re: [PATCH 3/3] dt-bindings: gpio: pcf857x: Convert to json-schema
Hi Rob,
Quoted 15 lines · Rob Herring
Quoted 14 lines · Geert Uytterhoeven
Quoted 13 lines · Linus Walleij
Quoted 6 lines · Geert Uytterhoeven
Convert the PCF857x-compatible I/O expanders Device Tree binding documentation to json-schema.
Document missing compatible values, properties, and gpio hogs.
Signed-off-by Geert Uytterhoeven <[email protected]>(...)
Quoted 2 lines
Perhaps the "ti,pcf8575" construct should be removed, and the few users fixed instead?
Quoted 7 lines
Quoted 7 lines
Quoted 2 lines
You would rather list it as deprecated I think?
It is ABI...All DTS files use the "nxp,pcf8575" fallback, except for
arch/x86/platform/ce4100/falconfalls.dts.
The latter ain't working with Linux, as the Linux driver doesn't match against "ti,pcf8575"...
Correction: i2c_device_id-based matching ignores the vendor part of the compatible value. One day this is gonna bite us...
Quoted 1 line
Perhaps can it just be removed?
I think so. All other users of similar I2C GPIO expanders just use the compatible values of the original NXP parts.
Quoted 10 lines
Quoted 9 lines
Quoted 9 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml line 80
Quoted 3 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml new file +3
-0+patternProperties: + "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$": + type: objectBut this is already in /dtschema/schemas/gpio/gpio-hog.yaml
for nodename, isn't that where it properly belongs?I'm however confused here Rob will know what to do.
Quoted 7 lines
This one is a bit odd.
Quoted 2 lines
If we leave this out, something still has to refer to it? I see no other binding doing that...
It's selected by 'gpio-hog' being present, but here you need to make sure that's the case.
OK. Fixed.
Quoted 2 lines
And I would hope you could define the node name to be just 1 of the 2 cases.
Yep, the latter is fine.
Gr{oetje,eeting}s,
Geert
Signature · 5 lines
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Re: [PATCH 3/3] dt-bindings: gpio: pcf857x: Convert to json-schema
In reply to Geert UytterhoevenHi Geert,
Quoted 9 lines · Geert Uytterhoeven
Convert the PCF857x-compatible I/O expanders Device Tree binding documentation to json-schema.
Document missing compatible values, properties, and gpio hogs.
Signed-off-by Geert Uytterhoeven <[email protected]>---
Perhaps the "ti,pcf8575" construct should be removed, and the few users fixed instead?
Given that the driver doesn't match against it, that could be done, if you're confident enough that there's no difference between the TI and NXP versions that would need to be taken into account.
Quoted 2 lines
I have listed Laurent as the maintainer, as he wrote the original bindings. Laurent: Please scream if this is inappropriate ;-)
I'm sure I'll regret it later, but I don't mind :-)
Quoted 144 lines
--- .../devicetree/bindings/gpio/gpio-pcf857x.txt | 69 ---------- .../devicetree/bindings/gpio/nxp,pcf8575.yaml | 120 ++++++++++++++++++ 2 files changed, 120 insertions(+), 69 deletions(-) delete mode 100644 Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt create mode 100644 Documentation/devicetree/bindings/gpio/nxp,pcf8575.yamlDocumentation/devicetree/bindings/gpio/gpio-pcf857x.txt deleted +0
-69@@ -1,69 +0,0 @@ -* PCF857x-compatible I/O expanders - -The PCF857x-compatible chips have "quasi-bidirectional" I/O lines that can be -driven high by a pull-up current source or driven low to ground. This combines -the direction and output level into a single bit per line, which can't be read -back. We can't actually know at initialization time whether a line is configured -(a) as output and driving the signal low/high, or (b) as input and reporting a -low/high value, without knowing the last value written since the chip came out -of reset (if any). The only reliable solution for setting up line direction is -thus to do it explicitly. - -Required Properties: - - - compatible: should be one of the following. - - "maxim,max7328": For the Maxim MAX7378 - - "maxim,max7329": For the Maxim MAX7329 - - "nxp,pca8574": For the NXP PCA8574 - - "nxp,pca8575": For the NXP PCA8575 - - "nxp,pca9670": For the NXP PCA9670 - - "nxp,pca9671": For the NXP PCA9671 - - "nxp,pca9672": For the NXP PCA9672 - - "nxp,pca9673": For the NXP PCA9673 - - "nxp,pca9674": For the NXP PCA9674 - - "nxp,pca9675": For the NXP PCA9675 - - "nxp,pcf8574": For the NXP PCF8574 - - "nxp,pcf8574a": For the NXP PCF8574A - - "nxp,pcf8575": For the NXP PCF8575 - - - reg: I2C slave address. - - - gpio-controller: Marks the device node as a gpio controller. - - #gpio-cells: Should be 2. The first cell is the GPIO number and the second - cell specifies GPIO flags, as defined in <dt-bindings/gpio/gpio.h>. Only the - GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported. - -Optional Properties: - - - lines-initial-states: Bitmask that specifies the initial state of each - line. When a bit is set to zero, the corresponding line will be initialized to - the input (pulled-up) state. When the bit is set to one, the line will be - initialized the low-level output state. If the property is not specified - all lines will be initialized to the input state. - - The I/O expander can detect input state changes, and thus optionally act as - an interrupt controller. When the expander interrupt line is connected all the - following properties must be set. For more information please see the - interrupt controller device tree bindings documentation available at - Documentation/devicetree/bindings/interrupt-controller/interrupts.txt. - - - interrupt-controller: Identifies the node as an interrupt controller. - - #interrupt-cells: Number of cells to encode an interrupt source, shall be 2. - - interrupts: Interrupt specifier for the controllers interrupt. - - -Please refer to gpio.txt in this directory for details of the common GPIO -bindings used by client devices. - -Example: PCF8575 I/O expander node - - pcf8575: gpio@20 { - compatible = "nxp,pcf8575"; - reg = <0x20>; - interrupt-parent = <&irqpin2>; - interrupts = <3 0>; - gpio-controller; - #gpio-cells = <2>; - interrupt-controller; - #interrupt-cells = <2>; - };Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml new file +56
-0@@ -0,0 +1,120 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/gpio/nxp,pcf8575.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: PCF857x-compatible I/O expanders + +maintainers: + - Laurent Pinchart <[email protected]> + +description: + The PCF857x-compatible chips have "quasi-bidirectional" I/O lines that can be + driven high by a pull-up current source or driven low to ground. This + combines the direction and output level into a single bit per line, which + can't be read back. We can't actually know at initialization time whether a + line is configured (a) as output and driving the signal low/high, or (b) as + input and reporting a low/high value, without knowing the last value written + since the chip came out of reset (if any). The only reliable solution for + setting up line direction is thus to do it explicitly. + +properties: + compatible: + oneOf: + - items: + - enum: + - ti,pcf8575 + - const: nxp,pcf8575 + + - enum: + - maxim,max7328 + - maxim,max7329 + - nxp,pca8574 + - nxp,pca8575 + - nxp,pca9670 + - nxp,pca9671 + - nxp,pca9672 + - nxp,pca9673 + - nxp,pca9674 + - nxp,pca9675 + - nxp,pcf8574 + - nxp,pcf8574a + - nxp,pcf8575 + + reg: + maxItems: 1 + + gpio-controller: true + + '#gpio-cells': + const: 2 + description: + The first cell is the GPIO number and the second cell specifies GPIO + flags, as defined in <dt-bindings/gpio/gpio.h>. Only the GPIO_ACTIVE_HIGH + and GPIO_ACTIVE_LOW flags are supported. +
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml line 66
Quoted 10 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml new file +10
-0+ lines-initial-states: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Bitmask that specifies the initial state of each line. + When a bit is set to zero, the corresponding line will be initialized to + the input (pulled-up) state. + When the bit is set to one, the line will be initialized to the + low-level output state. + If the property is not specified all lines will be initialized to the + input state.
The line wrapping is weird.
Quoted 54 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml new file +54
-0+ + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + const: 2 + + wakeup-source: true + +patternProperties: + "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$": + type: object + + properties: + gpio-hog: true + gpios: true + input: true + output-high: true + output-low: true + line-name: true + + required: + - gpio-hog + - gpios + + additionalProperties: false + +required: + - compatible + - reg + - gpio-controller + - '#gpio-cells' + +additionalProperties: false + +examples: + - | + i2c { + #address-cells = <1>; + #size-cells = <0>; + + pcf8575: gpio@20 { + compatible = "nxp,pcf8575"; + reg = <0x20>; + interrupt-parent = <&irqpin2>; + interrupts = <3 0>; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + }; + };
Signature · 3 lines
Regards, Laurent Pinchart
Re: [PATCH 3/3] dt-bindings: gpio: pcf857x: Convert to json-schema
Hi Laurent,
Quoted 6 lines · Laurent Pinchart
Quoted 5 lines · Geert Uytterhoeven
Convert the PCF857x-compatible I/O expanders Device Tree binding documentation to json-schema.
Document missing compatible values, properties, and gpio hogs.
Quoted 8 lines
Quoted 4 lines
Signed-off-by Geert Uytterhoeven <[email protected]>---
Perhaps the "ti,pcf8575" construct should be removed, and the few users fixed instead?Given that the driver doesn't match against it, that could be done, if you're confident enough that there's no difference between the TI and NXP versions that would need to be taken into account.
I've just checked the datasheets, and they're identical modulo shuffling. Probably TI is the mandatory second source for the NXP (née Philips) part.
Quoted 4 lines
Quoted 2 lines
I have listed Laurent as the maintainer, as he wrote the original bindings. Laurent: Please scream if this is inappropriate ;-)
I'm sure I'll regret it later, but I don't mind :-)
Thanks!
Quoted 11 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml line 66
Quoted 10 lines
Documentation/devicetree/bindings/gpio/nxp,pcf8575.yaml new file +10
-0+ lines-initial-states: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Bitmask that specifies the initial state of each line. + When a bit is set to zero, the corresponding line will be initialized to + the input (pulled-up) state. + When the bit is set to one, the line will be initialized to the + low-level output state. + If the property is not specified all lines will be initialized to the + input state.
Quoted 1 line
The line wrapping is weird.
Is it? The different cases just start on a new line. Which makes no difference, as there's no "|".
Gr{oetje,eeting}s,
Geert
Signature · 5 lines
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds