Message ID | 20220419071503.1596423-2-patrick.rudolph@9elements.com |
---|---|
State | New |
Headers | show |
Series | Add support for cy8c95x0 pinctrl | expand |
On 19/04/2022 09:15, Patrick Rudolph wrote: > Added device tree binding documentation for > Cypress CY8C95x0 I2C pin-controller. > Thank you for your patch. There is something to discuss/improve. (...) > + reg: > + maxItems: 1 > + > + gpio-controller: true > + > + '#gpio-cells': > + description: > + The first cell is the pin number and the second cell is used > + to specify optional parameters. > + const: 2 > + > + gpio-reserved-ranges: true > + > + interrupts: > + maxItems: 1 > + > + interrupt-controller: true > + > + '#interrupt-cells': > + description: > + Specifies the pin number and flags, as defined in > + include/dt-bindings/interrupt-controller/irq.h Skip description, it's obvious. > + const: 2 > + > + ngpios: > + minimum: 1 > + maximum: 60 > + > + gpio-line-names: > + minItems: 1 > + maxItems: 60 > + > + vdd-supply: > + description: > + Optional power supply. > + > +patternProperties: > + '-pins$': > + type: object > + description: > + Pinctrl node's client devices use subnodes for desired pin configuration. > + Client device subnodes use below standard properties. > + $ref: "/schemas/pinctrl/pincfg-node.yaml" > + > + properties: > + pins: > + description: > + List of gpio pins affected by the properties specified in this > + subnode. > + items: > + oneOf: Why do you need oneOf here? > + - pattern: "^gp([0-7][0-7])$" > + minItems: 1 > + maxItems: 60 > + > + function: > + enum: [ gpio, pwm ] > + No need for blank line. In other cases you put description before the property constraints, so do it consistently here as well. > + description: > + Specify the alternative function to be configured for the specified > + pins. > + > + bias-pull-down: true > + > + bias-pull-up: true > + > + bias-disable: true > + > + output-high: true > + > + output-low: true > + > + drive-push-pull: true > + > + drive-open-drain: true > + > + drive-open-source: true > + > + required: > + - pins > + - function > + > + additionalProperties: false > + > +required: > + - compatible > + - reg > + - interrupts > + - interrupt-controller > + - '#interrupt-cells' > + - gpio-controller > + - '#gpio-cells' no allOf referencing pinctrl.yaml? Include it unless there is some reason not to. Best regards, Krzysztof
Hi Patrick, thanks for your patch! On Tue, Apr 19, 2022 at 9:17 AM Patrick Rudolph <patrick.rudolph@9elements.com> wrote: > Added device tree binding documentation for > Cypress CY8C95x0 I2C pin-controller. > > Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> > + '#gpio-cells': > + description: > + The first cell is the pin number and the second cell is used > + to specify optional parameters. > + const: 2 Maybe specify that the second cell uses the standard GPIO parameters in <dt-bindings/gpio/gpio.h>? The driver is quite elaborate, you can probably list which parameters you support on this hardware even if the driver don't even implement them yet: it's just a binding after all. > + ngpios: > + minimum: 1 > + maximum: 60 Why? Isn't it obvious from the compatible how many pins the GPIO chip has? Then use that instead. Write under the compatible as description: for each chip how many gpios it has. > +patternProperties: > + '-pins$': > + type: object > + description: > + Pinctrl node's client devices use subnodes for desired pin configuration. > + Client device subnodes use below standard properties. > + $ref: "/schemas/pinctrl/pincfg-node.yaml" This is impressive. It's quite advanced to use the pin config props for elaborate pin config control. Yours, LInus Walleij
diff --git a/Documentation/devicetree/bindings/pinctrl/cypress,cy8c95x0.yaml b/Documentation/devicetree/bindings/pinctrl/cypress,cy8c95x0.yaml new file mode 100644 index 000000000000..41219f10bf26 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/cypress,cy8c95x0.yaml @@ -0,0 +1,139 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/cypress,cy8c95x0.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Cypress CY8C95X0 I2C GPIO expander + +maintainers: + - Patrick Rudolph <patrick.rudolph@9elements.com> + +description: | + This supports the 20/40/60 pin Cypress CYC95x0 GPIO I2C expanders. + Pin function configuration is performed on a per-pin basis. + +properties: + compatible: + enum: + - cypress,cy8c9520 + - cypress,cy8c9540 + - cypress,cy8c9560 + + reg: + maxItems: 1 + + gpio-controller: true + + '#gpio-cells': + description: + The first cell is the pin number and the second cell is used + to specify optional parameters. + const: 2 + + gpio-reserved-ranges: true + + interrupts: + maxItems: 1 + + interrupt-controller: true + + '#interrupt-cells': + description: + Specifies the pin number and flags, as defined in + include/dt-bindings/interrupt-controller/irq.h + const: 2 + + ngpios: + minimum: 1 + maximum: 60 + + gpio-line-names: + minItems: 1 + maxItems: 60 + + vdd-supply: + description: + Optional power supply. + +patternProperties: + '-pins$': + type: object + description: + Pinctrl node's client devices use subnodes for desired pin configuration. + Client device subnodes use below standard properties. + $ref: "/schemas/pinctrl/pincfg-node.yaml" + + properties: + pins: + description: + List of gpio pins affected by the properties specified in this + subnode. + items: + oneOf: + - pattern: "^gp([0-7][0-7])$" + minItems: 1 + maxItems: 60 + + function: + enum: [ gpio, pwm ] + + description: + Specify the alternative function to be configured for the specified + pins. + + bias-pull-down: true + + bias-pull-up: true + + bias-disable: true + + output-high: true + + output-low: true + + drive-push-pull: true + + drive-open-drain: true + + drive-open-source: true + + required: + - pins + - function + + additionalProperties: false + +required: + - compatible + - reg + - interrupts + - interrupt-controller + - '#interrupt-cells' + - gpio-controller + - '#gpio-cells' + +additionalProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/arm-gic.h> + #include <dt-bindings/interrupt-controller/irq.h> + + i2c0 { + #address-cells = <1>; + #size-cells = <0>; + + pinctrl@20 { + compatible = "cypress,cy8c9520"; + reg = <0x20>; + gpio-controller; + #gpio-cells = <2>; + #interrupt-cells = <2>; + interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>; + interrupt-controller; + vdd-supply = <&p3v3>; + ngpios = <16>; + gpio-reserved-ranges = <5 1>; + }; + };
Added device tree binding documentation for Cypress CY8C95x0 I2C pin-controller. Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> --- .../bindings/pinctrl/cypress,cy8c95x0.yaml | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/cypress,cy8c95x0.yaml