Message ID | 20221005-mdm9615-sx1509q-yaml-v3-0-e8b349eb1900@linaro.org |
---|---|
State | New |
Headers | show |
Series | [v3] dt-bindings: pinctrl: convert semtech,sx150xq bindings to dt-schema | expand |
On Tue, Nov 15, 2022 at 11:06 AM Neil Armstrong <neil.armstrong@linaro.org> wrote: > This converts the Semtech SX150Xq bindings to dt-schemas, add necessary > bindings documentation to cover all differences between HW variants > and current bindings usage. > > Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> > Reviewed-by: Rob Herring <robh@kernel.org> The binding is a piece of art. Excellent work! Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Yours, Linus Walleij
On Tue, Nov 15, 2022 at 11:06 AM Neil Armstrong <neil.armstrong@linaro.org> wrote: > This converts the Semtech SX150Xq bindings to dt-schemas, add necessary > bindings documentation to cover all differences between HW variants > and current bindings usage. > > Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> > Reviewed-by: Rob Herring <robh@kernel.org> Patch applied! Yours, Linus Walleij
On 17/11/2022 09:56, Linus Walleij wrote: > On Tue, Nov 15, 2022 at 11:06 AM Neil Armstrong > <neil.armstrong@linaro.org> wrote: > >> This converts the Semtech SX150Xq bindings to dt-schemas, add necessary >> bindings documentation to cover all differences between HW variants >> and current bindings usage. >> >> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> >> Reviewed-by: Rob Herring <robh@kernel.org> > > The binding is a piece of art. Excellent work! Thanks ! Actually it was fun to write ! > Reviewed-by: Linus Walleij <linus.walleij@linaro.org> > > Yours, > Linus Walleij
Hi, On Tue, 2022-11-15 at 11:06 +0100, Neil Armstrong wrote: > This converts the Semtech SX150Xq bindings to dt-schemas, add necessary > bindings documentation to cover all differences between HW variants > and current bindings usage. > > Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> > Reviewed-by: Rob Herring <robh@kernel.org> > --- > To: Linus Walleij <linus.walleij@linaro.org> > To: Rob Herring <robh+dt@kernel.org> > To: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org> > Cc: linux-gpio@vger.kernel.org > Cc: devicetree@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > --- > Changes in v3: > - Resent with missing To: Linus Walleij > - Link to v2: https://lore.kernel.org/r/20221005-mdm9615-sx1509q-yaml-v2-0-a4a5b8eecc7b@linaro.org > > Changes in v2: > - fixed rob comments > - added rob's Reviewed-by > - Link to v1: https://lore.kernel.org/r/20221005-mdm9615-sx1509q-yaml-v1-0-0c26649b637c@linaro.org > --- [snip] > + - if: > + properties: > + compatible: > + contains: > + enum: > + - semtech,sx1503q > + - semtech,sx1506q > + then: > + patternProperties: > + '-cfg$': > + properties: > + pins: > + items: > + pattern: '^gpio[0-15]$' [snip] > + - if: > + properties: > + compatible: > + contains: > + const: semtech,sx1509q > + then: > + patternProperties: > + '-cfg$': > + properties: > + pins: > + items: > + pattern: '^(oscio|gpio[0-15])$' Sorry to be so late to reply, but don't these patterns only match "gpio0", "gpio1", and "gpio5"? A quick search for some datasheets turned up the SX1503 and SX1509Q with 16 GPIOs, so I assume the intention was to match "gpio0" to "gpio15". I think this should be "^(gpio[0-9]|gpio1[0-5])$" (or something equivalent). Best, Sander
On 18/11/2022 16:19, Sander Vanheule wrote: > Hi, > > On Tue, 2022-11-15 at 11:06 +0100, Neil Armstrong wrote: >> This converts the Semtech SX150Xq bindings to dt-schemas, add necessary >> bindings documentation to cover all differences between HW variants >> and current bindings usage. >> >> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> >> Reviewed-by: Rob Herring <robh@kernel.org> >> --- >> To: Linus Walleij <linus.walleij@linaro.org> >> To: Rob Herring <robh+dt@kernel.org> >> To: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org> >> Cc: linux-gpio@vger.kernel.org >> Cc: devicetree@vger.kernel.org >> Cc: linux-kernel@vger.kernel.org >> --- >> Changes in v3: >> - Resent with missing To: Linus Walleij >> - Link to v2: https://lore.kernel.org/r/20221005-mdm9615-sx1509q-yaml-v2-0-a4a5b8eecc7b@linaro.org >> >> Changes in v2: >> - fixed rob comments >> - added rob's Reviewed-by >> - Link to v1: https://lore.kernel.org/r/20221005-mdm9615-sx1509q-yaml-v1-0-0c26649b637c@linaro.org >> --- > > [snip] > >> + - if: >> + properties: >> + compatible: >> + contains: >> + enum: >> + - semtech,sx1503q >> + - semtech,sx1506q >> + then: >> + patternProperties: >> + '-cfg$': >> + properties: >> + pins: >> + items: >> + pattern: '^gpio[0-15]$' > > [snip] > >> + - if: >> + properties: >> + compatible: >> + contains: >> + const: semtech,sx1509q >> + then: >> + patternProperties: >> + '-cfg$': >> + properties: >> + pins: >> + items: >> + pattern: '^(oscio|gpio[0-15])$' > > Sorry to be so late to reply, but don't these patterns only match "gpio0", "gpio1", and "gpio5"? > > A quick search for some datasheets turned up the SX1503 and SX1509Q with 16 GPIOs, so I assume the > intention was to match "gpio0" to "gpio15". I think this should be "^(gpio[0-9]|gpio1[0-5])$" (or > something equivalent). Damn you're right, Linus should I resend or send a fixup ? Thanks, Neil > > Best, > Sander
On Fri, Nov 18, 2022 at 4:23 PM Neil Armstrong <neil.armstrong@linaro.org> wrote: > > A quick search for some datasheets turned up the SX1503 and SX1509Q with 16 GPIOs, so I assume the > > intention was to match "gpio0" to "gpio15". I think this should be "^(gpio[0-9]|gpio1[0-5])$" (or > > something equivalent). > > Damn you're right, Linus should I resend or send a fixup ? Just send a fixup on top of my devel branch please! Yours, Linus Walleij
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-sx150x.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-sx150x.txt deleted file mode 100644 index 4023bad2fe39..000000000000 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-sx150x.txt +++ /dev/null @@ -1,72 +0,0 @@ -SEMTECH SX150x GPIO expander bindings - -Please refer to pinctrl-bindings.txt, ../gpio/gpio.txt, and -../interrupt-controller/interrupts.txt for generic information regarding -pin controller, GPIO, and interrupt bindings. - -Required properties: -- compatible: should be one of : - "semtech,sx1501q", - "semtech,sx1502q", - "semtech,sx1503q", - "semtech,sx1504q", - "semtech,sx1505q", - "semtech,sx1506q", - "semtech,sx1507q", - "semtech,sx1508q", - "semtech,sx1509q". - -- reg: The I2C slave address for this device. - -- #gpio-cells: Should be 2. The first cell is the GPIO number and the - second cell is used to specify optional parameters: - bit 0: polarity (0: normal, 1: inverted) - -- gpio-controller: Marks the device as a GPIO controller. - -Optional properties : -- interrupts: Interrupt specifier for the controllers interrupt. - -- interrupt-controller: Marks the device as a interrupt controller. - -- semtech,probe-reset: Will trigger a reset of the GPIO expander on probe, - only for sx1507q, sx1508q and sx1509q - -The GPIO expander can optionally be used as an interrupt controller, in -which case it uses the default two cell specifier. - -Required properties for pin configuration sub-nodes: - - pins: List of pins to which the configuration applies. - -Optional properties for pin configuration sub-nodes: ----------------------------------------------------- - - bias-disable: disable any pin bias, except the OSCIO pin - - bias-pull-up: pull up the pin, except the OSCIO pin - - bias-pull-down: pull down the pin, except the OSCIO pin - - bias-pull-pin-default: use pin-default pull state, except the OSCIO pin - - drive-push-pull: drive actively high and low - - drive-open-drain: drive with open drain only for sx1507q, sx1508q and sx1509q and except the OSCIO pin - - output-low: set the pin to output mode with low level - - output-high: set the pin to output mode with high level - -Example: - - i2c0gpio-expander@20{ - #gpio-cells = <2>; - #interrupt-cells = <2>; - compatible = "semtech,sx1506q"; - reg = <0x20>; - interrupt-parent = <&gpio_1>; - interrupts = <16 0>; - - gpio-controller; - interrupt-controller; - - pinctrl-names = "default"; - pinctrl-0 = <&gpio1_cfg_pins>; - - gpio1_cfg_pins: gpio1-cfg { - pins = "gpio1"; - bias-pull-up; - }; - }; diff --git a/Documentation/devicetree/bindings/pinctrl/semtech,sx1501q.yaml b/Documentation/devicetree/bindings/pinctrl/semtech,sx1501q.yaml new file mode 100644 index 000000000000..df429a396ba3 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/semtech,sx1501q.yaml @@ -0,0 +1,208 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright 2022 Linaro Ltd. +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/semtech,sx1501q.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Semtech SX150x GPIO expander + +maintainers: + - Neil Armstrong <neil.armstrong@linaro.org> + +properties: + compatible: + enum: + - semtech,sx1501q + - semtech,sx1502q + - semtech,sx1503q + - semtech,sx1504q + - semtech,sx1505q + - semtech,sx1506q + - semtech,sx1507q + - semtech,sx1508q + - semtech,sx1509q + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + '#interrupt-cells': + const: 2 + + interrupt-controller: true + + '#gpio-cells': + const: 2 + + gpio-controller: true + + semtech,probe-reset: + description: Will trigger a reset of the GPIO expander on probe + type: boolean + +patternProperties: + '-cfg$': + type: object + properties: + pins: true + + bias-disable: true + bias-pull-up: true + bias-pull-down: true + bias-pull-pin-default: true + drive-push-pull: true + output-low: true + output-high: true + drive-open-drain: true + + required: + - pins + + allOf: + - $ref: "pincfg-node.yaml#" + - $ref: "pinmux-node.yaml#" + - if: + properties: + pins: + contains: + const: oscio + then: + properties: + bias-disable: false + bias-pull-up: false + bias-pull-down: false + bias-pull-pin-default: false + drive-open-drain: false + + additionalProperties: false + +required: + - compatible + - reg + - '#gpio-cells' + - gpio-controller + +allOf: + - $ref: "pinctrl.yaml#" + - if: + not: + properties: + compatible: + contains: + enum: + - semtech,sx1507q + - semtech,sx1508q + - semtech,sx1509q + then: + properties: + semtech,probe-reset: false + - if: + properties: + compatible: + contains: + enum: + - semtech,sx1501q + - semtech,sx1504q + then: + patternProperties: + '-cfg$': + properties: + pins: + items: + pattern: '^gpio[0-3]$' + - if: + properties: + compatible: + contains: + enum: + - semtech,sx1502q + - semtech,sx1505q + then: + patternProperties: + '-cfg$': + properties: + pins: + items: + pattern: '^gpio[0-7]$' + - if: + properties: + compatible: + contains: + enum: + - semtech,sx1503q + - semtech,sx1506q + then: + patternProperties: + '-cfg$': + properties: + pins: + items: + pattern: '^gpio[0-15]$' + - if: + properties: + compatible: + contains: + const: semtech,sx1507q + then: + patternProperties: + '-cfg$': + properties: + pins: + items: + pattern: '^(oscio|gpio[0-3])$' + - if: + properties: + compatible: + contains: + const: semtech,sx1508q + then: + patternProperties: + '-cfg$': + properties: + pins: + items: + pattern: '^(oscio|gpio[0-7])$' + - if: + properties: + compatible: + contains: + const: semtech,sx1509q + then: + patternProperties: + '-cfg$': + properties: + pins: + items: + pattern: '^(oscio|gpio[0-15])$' + +additionalProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/irq.h> + i2c@1000 { + reg = <0x1000 0x80>; + #address-cells = <1>; + #size-cells = <0>; + + pinctrl@20 { + compatible = "semtech,sx1501q"; + reg = <0x20>; + + #gpio-cells = <2>; + #interrupt-cells = <2>; + + interrupts = <16 IRQ_TYPE_EDGE_FALLING>; + + gpio-controller; + interrupt-controller; + + gpio1-cfg { + pins = "gpio1"; + bias-pull-up; + }; + }; + };