Message ID | 285b7b4b-4fd4-be5f-266c-96b1ee6f4cbf@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3] dt-bindings: pinctrl: Convert Amlogic Meson pinctrl binding | expand |
On Mon, Jan 30, 2023 at 10:00:24PM +0100, Heiner Kallweit wrote: > Convert Amlogic Meson pinctrl binding to yaml. > > Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> > --- > v2: > - consider that more than one compatible can be set > - remove bus part from example > v3: > - remove minItem/maxItem properties for compatible > --- > .../pinctrl/amlogic,meson-pinctrl.yaml | 122 ++++++++++++++++++ > .../bindings/pinctrl/meson,pinctrl.txt | 94 -------------- > 2 files changed, 122 insertions(+), 94 deletions(-) > create mode 100644 Documentation/devicetree/bindings/pinctrl/amlogic,meson-pinctrl.yaml > delete mode 100644 Documentation/devicetree/bindings/pinctrl/meson,pinctrl.txt > > diff --git a/Documentation/devicetree/bindings/pinctrl/amlogic,meson-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/amlogic,meson-pinctrl.yaml > new file mode 100644 > index 000000000..7aaae606b > --- /dev/null > +++ b/Documentation/devicetree/bindings/pinctrl/amlogic,meson-pinctrl.yaml > @@ -0,0 +1,122 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/pinctrl/amlogic,meson-pinctrl.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Amlogic Meson pinmux controller > + > +maintainers: > + - Neil Armstrong <neil.armstrong@linaro.org> > + > +allOf: > + - $ref: pinctrl.yaml# > + > +properties: > + compatible: > + oneOf: > + - items: > + - enum: > + - amlogic,meson8-cbus-pinctrl > + - amlogic,meson8b-cbus-pinctrl > + - amlogic,meson8m2-cbus-pinctrl > + - amlogic,meson8-aobus-pinctrl > + - amlogic,meson8b-aobus-pinctrl > + - amlogic,meson8m2-aobus-pinctrl > + - amlogic,meson-gxbb-periphs-pinctrl > + - amlogic,meson-gxbb-aobus-pinctrl > + - amlogic,meson-gxl-periphs-pinctrl > + - amlogic,meson-gxl-aobus-pinctrl > + - amlogic,meson-axg-periphs-pinctrl > + - amlogic,meson-axg-aobus-pinctrl > + - amlogic,meson-g12a-periphs-pinctrl > + - amlogic,meson-g12a-aobus-pinctrl > + - amlogic,meson-a1-periphs-pinctrl > + - amlogic,meson-s4-periphs-pinctrl > + - items: > + - const: amlogic,meson8m2-aobus-pinctrl > + - const: amlogic,meson8-aobus-pinctrl > + - items: > + - const: amlogic,meson8m2-cbus-pinctrl > + - const: amlogic,meson8-cbus-pinctrl Again, can't have both with and without the fallback allowed. > + > + ranges: true > + > + "#address-cells": > + enum: [1, 2] > + > + "#size-cells": > + enum: [1, 2] > + > +required: > + - compatible > + - ranges > + - "#address-cells" > + - "#size-cells" > + > +additionalProperties: > + anyOf: Don't need anyOf. > + - type: object > + allOf: > + - $ref: pincfg-node.yaml# > + - $ref: pinmux-node.yaml# > + > +patternProperties: > + "^bank@[0-9]$": Unit addresses are hex. > + type: object > + properties: > + reg: > + minItems: 5 > + maxItems: 5 > + > + reg-names: > + items: > + - const: gpio > + - const: pull > + - const: pull-enable > + - const: mux > + - const: ds > + > + gpio-controller: true > + > + "#gpio-cells": > + const: 2 > + > + gpio-ranges: > + $ref: /schemas/types.yaml#/definitions/phandle Wrong type and gpio-ranges already has a type. > + > + required: > + - reg > + - reg-names > + - gpio-controller > + - "#gpio-cells" > + - gpio-ranges > + > +examples: > + - | > + pinctrl { > + compatible = "amlogic,meson-g12a-periphs-pinctrl"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + > + bank@40 { > + reg = <0x0 0x40 0x0 0x4c>, > + <0x0 0xe8 0x0 0x18>, > + <0x0 0x120 0x0 0x18>, > + <0x0 0x2c0 0x0 0x40>, > + <0x0 0x340 0x0 0x1c>; > + reg-names = "gpio", "pull", "pull-enable", "mux", "ds"; > + gpio-controller; > + #gpio-cells = <2>; > + gpio-ranges = <&periphs_pinctrl 0 0 86>; > + }; > + > + cec_ao_a_h_pins: cec_ao_a_h { > + mux { > + groups = "cec_ao_a_h"; > + function = "cec_ao_a_h"; > + bias-disable; > + }; > + }; > + };
Hi Heiner, On 30/01/2023 22:00, Heiner Kallweit wrote: > Convert Amlogic Meson pinctrl binding to yaml. > > Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> > --- > v2: > - consider that more than one compatible can be set > - remove bus part from example > v3: > - remove minItem/maxItem properties for compatible > --- > .../pinctrl/amlogic,meson-pinctrl.yaml | 122 ++++++++++++++++++ > .../bindings/pinctrl/meson,pinctrl.txt | 94 -------------- > 2 files changed, 122 insertions(+), 94 deletions(-) > create mode 100644 Documentation/devicetree/bindings/pinctrl/amlogic,meson-pinctrl.yaml > delete mode 100644 Documentation/devicetree/bindings/pinctrl/meson,pinctrl.txt > <snip> Please send new versions as separate threads, or keep the same thread structure othwerwise it highly confuses humans & b4 when applying the patches... Assuming new revision: v2 ([PATCH v2] dt-bindings: pwm: Convert Amlogic Meson PWM binding) Assuming new revision: v4 ([PATCH v3] dt-bindings: pinctrl: Convert Amlogic Meson pinctrl binding) Assuming new revision: v5 ([PATCH v2] dt-bindings: interrupt-controller: Convert Amlogic Meson GPIO interrupt controller binding) Assuming new revision: v6 ([PATCH v3] dt-bindings: interrupt-controller: Convert Amlogic Meson GPIO interrupt controller binding) Assuming new revision: v7 ([PATCH v2] dt-bindings: pinctrl: Convert Amlogic Meson pinctrl binding) Thanks, Neil
On 01.02.2023 03:06, Rob Herring wrote: > On Mon, Jan 30, 2023 at 10:00:24PM +0100, Heiner Kallweit wrote: >> Convert Amlogic Meson pinctrl binding to yaml. >> >> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> >> --- >> v2: >> - consider that more than one compatible can be set >> - remove bus part from example >> v3: >> - remove minItem/maxItem properties for compatible >> --- >> .../pinctrl/amlogic,meson-pinctrl.yaml | 122 ++++++++++++++++++ >> .../bindings/pinctrl/meson,pinctrl.txt | 94 -------------- >> 2 files changed, 122 insertions(+), 94 deletions(-) >> create mode 100644 Documentation/devicetree/bindings/pinctrl/amlogic,meson-pinctrl.yaml >> delete mode 100644 Documentation/devicetree/bindings/pinctrl/meson,pinctrl.txt >> >> diff --git a/Documentation/devicetree/bindings/pinctrl/amlogic,meson-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/amlogic,meson-pinctrl.yaml >> new file mode 100644 >> index 000000000..7aaae606b >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/pinctrl/amlogic,meson-pinctrl.yaml >> @@ -0,0 +1,122 @@ >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/pinctrl/amlogic,meson-pinctrl.yaml# >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: Amlogic Meson pinmux controller >> + >> +maintainers: >> + - Neil Armstrong <neil.armstrong@linaro.org> >> + >> +allOf: >> + - $ref: pinctrl.yaml# >> + >> +properties: >> + compatible: >> + oneOf: >> + - items: >> + - enum: >> + - amlogic,meson8-cbus-pinctrl >> + - amlogic,meson8b-cbus-pinctrl >> + - amlogic,meson8m2-cbus-pinctrl >> + - amlogic,meson8-aobus-pinctrl >> + - amlogic,meson8b-aobus-pinctrl >> + - amlogic,meson8m2-aobus-pinctrl >> + - amlogic,meson-gxbb-periphs-pinctrl >> + - amlogic,meson-gxbb-aobus-pinctrl >> + - amlogic,meson-gxl-periphs-pinctrl >> + - amlogic,meson-gxl-aobus-pinctrl >> + - amlogic,meson-axg-periphs-pinctrl >> + - amlogic,meson-axg-aobus-pinctrl >> + - amlogic,meson-g12a-periphs-pinctrl >> + - amlogic,meson-g12a-aobus-pinctrl >> + - amlogic,meson-a1-periphs-pinctrl >> + - amlogic,meson-s4-periphs-pinctrl >> + - items: >> + - const: amlogic,meson8m2-aobus-pinctrl >> + - const: amlogic,meson8-aobus-pinctrl >> + - items: >> + - const: amlogic,meson8m2-cbus-pinctrl >> + - const: amlogic,meson8-cbus-pinctrl > > Again, can't have both with and without the fallback allowed. > Hi Martin, meson8m2 is the only chip version having a fallback for the pinctrl compatible. Is this fallback really needed? Looking at the driver it seems that both compatibles are handled identically.
Hi Heiner, On Wed, Feb 1, 2023 at 11:13 PM Heiner Kallweit <hkallweit1@gmail.com> wrote: [...] > >> + - items: > >> + - const: amlogic,meson8m2-aobus-pinctrl > >> + - const: amlogic,meson8-aobus-pinctrl > >> + - items: > >> + - const: amlogic,meson8m2-cbus-pinctrl > >> + - const: amlogic,meson8-cbus-pinctrl > > > > Again, can't have both with and without the fallback allowed. > > > Hi Martin, > > meson8m2 is the only chip version having a fallback for the > pinctrl compatible. Is this fallback really needed? > Looking at the driver it seems that both compatibles > are handled identically. Back in the day we decided to duplicate the Meson8 driver code just to add four new pin functions that are added by the Meson8m2 SoC generation: "eth_rxd2", "eth_rxd3", "eth_txd2", "eth_txd3" The compatible string was defined with a similar approach: since Meson8m2 just adds a few bits to the Meson8 pin controller it's backwards compatible. If the fallback has to be removed then I'm okay with that but I would like to understand it first. So far I thought that Rob basically asked to remove the following two compatible strings from the enum (as they're listed separately with their fallbacks): - amlogic,meson8m2-cbus-pinctrl - amlogic,meson8m2-aobus-pinctrl Best regards, Martin
On 04.02.2023 23:56, Martin Blumenstingl wrote: > Hi Heiner, > > On Wed, Feb 1, 2023 at 11:13 PM Heiner Kallweit <hkallweit1@gmail.com> wrote: > [...] >>>> + - items: >>>> + - const: amlogic,meson8m2-aobus-pinctrl >>>> + - const: amlogic,meson8-aobus-pinctrl >>>> + - items: >>>> + - const: amlogic,meson8m2-cbus-pinctrl >>>> + - const: amlogic,meson8-cbus-pinctrl >>> >>> Again, can't have both with and without the fallback allowed. >>> >> Hi Martin, >> >> meson8m2 is the only chip version having a fallback for the >> pinctrl compatible. Is this fallback really needed? >> Looking at the driver it seems that both compatibles >> are handled identically. > Back in the day we decided to duplicate the Meson8 driver code just to > add four new pin functions that are added by the Meson8m2 SoC > generation: > "eth_rxd2", "eth_rxd3", "eth_txd2", "eth_txd3" > > The compatible string was defined with a similar approach: since > Meson8m2 just adds a few bits to the Meson8 pin controller it's > backwards compatible. > > If the fallback has to be removed then I'm okay with that but I would > like to understand it first. > So far I thought that Rob basically asked to remove the following two > compatible strings from the enum (as they're listed separately with > their fallbacks): > - amlogic,meson8m2-cbus-pinctrl > - amlogic,meson8m2-aobus-pinctrl > Right, this should be sufficient. There's no place where the 8m2 pinctrl compatibles are used w/o fallback. Then the hopefully final version of the binding is almost ready. I'm just still checking whether there's any way in yaml to specify a reg-names list with mandatory and optional names. Doesn't seem so. > > Best regards, > Martin Heiner
> Le 5 févr. 2023 à 01:05, Heiner Kallweit <hkallweit1@gmail.com> a écrit : > > On 04.02.2023 23:56, Martin Blumenstingl wrote: >> Hi Heiner, >> >> On Wed, Feb 1, 2023 at 11:13 PM Heiner Kallweit <hkallweit1@gmail.com> wrote: >> [...] >>>>> + - items: >>>>> + - const: amlogic,meson8m2-aobus-pinctrl >>>>> + - const: amlogic,meson8-aobus-pinctrl >>>>> + - items: >>>>> + - const: amlogic,meson8m2-cbus-pinctrl >>>>> + - const: amlogic,meson8-cbus-pinctrl >>>> >>>> Again, can't have both with and without the fallback allowed. >>>> >>> Hi Martin, >>> >>> meson8m2 is the only chip version having a fallback for the >>> pinctrl compatible. Is this fallback really needed? >>> Looking at the driver it seems that both compatibles >>> are handled identically. >> Back in the day we decided to duplicate the Meson8 driver code just to >> add four new pin functions that are added by the Meson8m2 SoC >> generation: >> "eth_rxd2", "eth_rxd3", "eth_txd2", "eth_txd3" >> >> The compatible string was defined with a similar approach: since >> Meson8m2 just adds a few bits to the Meson8 pin controller it's >> backwards compatible. >> >> If the fallback has to be removed then I'm okay with that but I would >> like to understand it first. >> So far I thought that Rob basically asked to remove the following two >> compatible strings from the enum (as they're listed separately with >> their fallbacks): >> - amlogic,meson8m2-cbus-pinctrl >> - amlogic,meson8m2-aobus-pinctrl >> > Right, this should be sufficient. There's no place where the 8m2 pinctrl > compatibles are used w/o fallback. > > Then the hopefully final version of the binding is almost ready. > I'm just still checking whether there's any way in yaml to specify > a reg-names list with mandatory and optional names. Doesn't seem so. It’s possible with minItems/maxItems and allOf:if/else to specify different min/max for each compatible Neil > >> >> Best regards, >> Martin > > Heiner
On 05.02.2023 08:57, Neil Armstrong wrote: > >> Le 5 févr. 2023 à 01:05, Heiner Kallweit <hkallweit1@gmail.com> a écrit : >> >> On 04.02.2023 23:56, Martin Blumenstingl wrote: >>> Hi Heiner, >>> >>> On Wed, Feb 1, 2023 at 11:13 PM Heiner Kallweit <hkallweit1@gmail.com> wrote: >>> [...] >>>>>> + - items: >>>>>> + - const: amlogic,meson8m2-aobus-pinctrl >>>>>> + - const: amlogic,meson8-aobus-pinctrl >>>>>> + - items: >>>>>> + - const: amlogic,meson8m2-cbus-pinctrl >>>>>> + - const: amlogic,meson8-cbus-pinctrl >>>>> >>>>> Again, can't have both with and without the fallback allowed. >>>>> >>>> Hi Martin, >>>> >>>> meson8m2 is the only chip version having a fallback for the >>>> pinctrl compatible. Is this fallback really needed? >>>> Looking at the driver it seems that both compatibles >>>> are handled identically. >>> Back in the day we decided to duplicate the Meson8 driver code just to >>> add four new pin functions that are added by the Meson8m2 SoC >>> generation: >>> "eth_rxd2", "eth_rxd3", "eth_txd2", "eth_txd3" >>> >>> The compatible string was defined with a similar approach: since >>> Meson8m2 just adds a few bits to the Meson8 pin controller it's >>> backwards compatible. >>> >>> If the fallback has to be removed then I'm okay with that but I would >>> like to understand it first. >>> So far I thought that Rob basically asked to remove the following two >>> compatible strings from the enum (as they're listed separately with >>> their fallbacks): >>> - amlogic,meson8m2-cbus-pinctrl >>> - amlogic,meson8m2-aobus-pinctrl >>> >> Right, this should be sufficient. There's no place where the 8m2 pinctrl >> compatibles are used w/o fallback. >> >> Then the hopefully final version of the binding is almost ready. >> I'm just still checking whether there's any way in yaml to specify >> a reg-names list with mandatory and optional names. Doesn't seem so. > > It’s possible with minItems/maxItems and allOf:if/else to specify different min/max for each compatible > I have a problem here because reg-names is in the gpio-controller child node and compatible is in the pinctrl parent node. An expression under patternProperties doesn't see the compatible property of the parent node. It would have been better to place regs/reg-names in the pinctrl node. Not sure how to deal with this. The easiest would be to just have minItems:2 and maxItems:5 as criteria for regs and reg-names.
On 05/02/2023 17:54, Heiner Kallweit wrote: > On 05.02.2023 08:57, Neil Armstrong wrote: >> >>> Le 5 févr. 2023 à 01:05, Heiner Kallweit <hkallweit1@gmail.com> a écrit : >>> >>> On 04.02.2023 23:56, Martin Blumenstingl wrote: >>>> Hi Heiner, >>>> >>>> On Wed, Feb 1, 2023 at 11:13 PM Heiner Kallweit <hkallweit1@gmail.com> wrote: >>>> [...] >>>>>>> + - items: >>>>>>> + - const: amlogic,meson8m2-aobus-pinctrl >>>>>>> + - const: amlogic,meson8-aobus-pinctrl >>>>>>> + - items: >>>>>>> + - const: amlogic,meson8m2-cbus-pinctrl >>>>>>> + - const: amlogic,meson8-cbus-pinctrl >>>>>> >>>>>> Again, can't have both with and without the fallback allowed. >>>>>> >>>>> Hi Martin, >>>>> >>>>> meson8m2 is the only chip version having a fallback for the >>>>> pinctrl compatible. Is this fallback really needed? >>>>> Looking at the driver it seems that both compatibles >>>>> are handled identically. >>>> Back in the day we decided to duplicate the Meson8 driver code just to >>>> add four new pin functions that are added by the Meson8m2 SoC >>>> generation: >>>> "eth_rxd2", "eth_rxd3", "eth_txd2", "eth_txd3" >>>> >>>> The compatible string was defined with a similar approach: since >>>> Meson8m2 just adds a few bits to the Meson8 pin controller it's >>>> backwards compatible. >>>> >>>> If the fallback has to be removed then I'm okay with that but I would >>>> like to understand it first. >>>> So far I thought that Rob basically asked to remove the following two >>>> compatible strings from the enum (as they're listed separately with >>>> their fallbacks): >>>> - amlogic,meson8m2-cbus-pinctrl >>>> - amlogic,meson8m2-aobus-pinctrl >>>> >>> Right, this should be sufficient. There's no place where the 8m2 pinctrl >>> compatibles are used w/o fallback. >>> >>> Then the hopefully final version of the binding is almost ready. >>> I'm just still checking whether there's any way in yaml to specify >>> a reg-names list with mandatory and optional names. Doesn't seem so. >> >> It’s possible with minItems/maxItems and allOf:if/else to specify different min/max for each compatible >> > I have a problem here because reg-names is in the gpio-controller child node and compatible is in the > pinctrl parent node. An expression under patternProperties doesn't see the compatible property of the > parent node. It would have been better to place regs/reg-names in the pinctrl node. > Not sure how to deal with this. The easiest would be to just have minItems:2 and maxItems:5 as criteria > for regs and reg-names. > In this case, either you add 2 yaml bindings with perhaps a common yaml using allOf:ref or you add some complex matching but I think you should split it in 3 files like: ================================================================ amlogic,meson-pinctrl-common.yaml: ... properties: ranges: true "#address-cells": enum: [1, 2] "#size-cells": enum: [1, 2] patternProperties: "-state$": allOf: - $ref: pincfg-node.yaml# - $ref: pinmux-node.yaml# allOf: - $ref: pinctrl.yaml# required: - compatible - ranges - "#address-cells" - "#size-cells" additionalProperties: true $defs: meson-gpio: type: object properties: gpio-controller: true "#gpio-cells": const: 2 gpio-ranges: $ref: /schemas/types.yaml#/definitions/phandle required: - gpio-controller - "#gpio-cells" - gpio-ranges ... ================================================================ amlogic,meson8-cbus-pinctrl.yaml: ... $ref: amlogic,meson-pinctrl-common.yaml# properties: compatible: oneOf: - items: - enum: - amlogic,meson8-cbus-pinctrl - amlogic,meson8b-cbus-pinctrl - amlogic,meson8-aobus-pinctrl - amlogic,meson8b-aobus-pinctrl - items: - const: amlogic,meson8m2-aobus-pinctrl - const: amlogic,meson8-aobus-pinctrl - items: - const: amlogic,meson8m2-cbus-pinctrl - const: amlogic,meson8-cbus-pinctrl required: - compatible patternProperties: "^bank@[0-9]$": $ref: "#/$defs/meson-gpio" properties: reg: maxItems: 2 reg-names: items: - const: gpio - const: pull required: - reg - reg-names ... ================================================================ amlogic,meson-gxbb-periphs-pinctrl.yaml: ... $ref: amlogic,meson-pinctrl-common.yaml# properties: compatible: items: - enum: - amlogic,meson-gxbb-periphs-pinctrl - amlogic,meson-gxbb-aobus-pinctrl - amlogic,meson-gxl-periphs-pinctrl - amlogic,meson-gxl-aobus-pinctrl - amlogic,meson-axg-periphs-pinctrl - amlogic,meson-axg-aobus-pinctrl - amlogic,meson-g12a-periphs-pinctrl - amlogic,meson-g12a-aobus-pinctrl - amlogic,meson-a1-periphs-pinctrl - amlogic,meson-s4-periphs-pinctrl required: - compatible patternProperties: "^bank@[0-9]$": $ref: "#/$defs/meson-gpio" properties: reg: minItems: 5 reg-names: items: - const: gpio - const: pull - const: pull-enable - const: mux - const: ds required: - reg - reg-names ... ================================================================ You may even add a 4th file for G12/A1 is reg-names need a different count. Neil
diff --git a/Documentation/devicetree/bindings/pinctrl/amlogic,meson-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/amlogic,meson-pinctrl.yaml new file mode 100644 index 000000000..7aaae606b --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/amlogic,meson-pinctrl.yaml @@ -0,0 +1,122 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/amlogic,meson-pinctrl.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Amlogic Meson pinmux controller + +maintainers: + - Neil Armstrong <neil.armstrong@linaro.org> + +allOf: + - $ref: pinctrl.yaml# + +properties: + compatible: + oneOf: + - items: + - enum: + - amlogic,meson8-cbus-pinctrl + - amlogic,meson8b-cbus-pinctrl + - amlogic,meson8m2-cbus-pinctrl + - amlogic,meson8-aobus-pinctrl + - amlogic,meson8b-aobus-pinctrl + - amlogic,meson8m2-aobus-pinctrl + - amlogic,meson-gxbb-periphs-pinctrl + - amlogic,meson-gxbb-aobus-pinctrl + - amlogic,meson-gxl-periphs-pinctrl + - amlogic,meson-gxl-aobus-pinctrl + - amlogic,meson-axg-periphs-pinctrl + - amlogic,meson-axg-aobus-pinctrl + - amlogic,meson-g12a-periphs-pinctrl + - amlogic,meson-g12a-aobus-pinctrl + - amlogic,meson-a1-periphs-pinctrl + - amlogic,meson-s4-periphs-pinctrl + - items: + - const: amlogic,meson8m2-aobus-pinctrl + - const: amlogic,meson8-aobus-pinctrl + - items: + - const: amlogic,meson8m2-cbus-pinctrl + - const: amlogic,meson8-cbus-pinctrl + + ranges: true + + "#address-cells": + enum: [1, 2] + + "#size-cells": + enum: [1, 2] + +required: + - compatible + - ranges + - "#address-cells" + - "#size-cells" + +additionalProperties: + anyOf: + - type: object + allOf: + - $ref: pincfg-node.yaml# + - $ref: pinmux-node.yaml# + +patternProperties: + "^bank@[0-9]$": + type: object + properties: + reg: + minItems: 5 + maxItems: 5 + + reg-names: + items: + - const: gpio + - const: pull + - const: pull-enable + - const: mux + - const: ds + + gpio-controller: true + + "#gpio-cells": + const: 2 + + gpio-ranges: + $ref: /schemas/types.yaml#/definitions/phandle + + required: + - reg + - reg-names + - gpio-controller + - "#gpio-cells" + - gpio-ranges + +examples: + - | + pinctrl { + compatible = "amlogic,meson-g12a-periphs-pinctrl"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + + bank@40 { + reg = <0x0 0x40 0x0 0x4c>, + <0x0 0xe8 0x0 0x18>, + <0x0 0x120 0x0 0x18>, + <0x0 0x2c0 0x0 0x40>, + <0x0 0x340 0x0 0x1c>; + reg-names = "gpio", "pull", "pull-enable", "mux", "ds"; + gpio-controller; + #gpio-cells = <2>; + gpio-ranges = <&periphs_pinctrl 0 0 86>; + }; + + cec_ao_a_h_pins: cec_ao_a_h { + mux { + groups = "cec_ao_a_h"; + function = "cec_ao_a_h"; + bias-disable; + }; + }; + }; diff --git a/Documentation/devicetree/bindings/pinctrl/meson,pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/meson,pinctrl.txt deleted file mode 100644 index 8146193bd..000000000 --- a/Documentation/devicetree/bindings/pinctrl/meson,pinctrl.txt +++ /dev/null @@ -1,94 +0,0 @@ -== Amlogic Meson pinmux controller == - -Required properties for the root node: - - compatible: one of "amlogic,meson8-cbus-pinctrl" - "amlogic,meson8b-cbus-pinctrl" - "amlogic,meson8m2-cbus-pinctrl" - "amlogic,meson8-aobus-pinctrl" - "amlogic,meson8b-aobus-pinctrl" - "amlogic,meson8m2-aobus-pinctrl" - "amlogic,meson-gxbb-periphs-pinctrl" - "amlogic,meson-gxbb-aobus-pinctrl" - "amlogic,meson-gxl-periphs-pinctrl" - "amlogic,meson-gxl-aobus-pinctrl" - "amlogic,meson-axg-periphs-pinctrl" - "amlogic,meson-axg-aobus-pinctrl" - "amlogic,meson-g12a-periphs-pinctrl" - "amlogic,meson-g12a-aobus-pinctrl" - "amlogic,meson-a1-periphs-pinctrl" - "amlogic,meson-s4-periphs-pinctrl" - - reg: address and size of registers controlling irq functionality - -=== GPIO sub-nodes === - -The GPIO bank for the controller is represented as a sub-node and it acts as a -GPIO controller. - -Required properties for sub-nodes are: - - reg: should contain a list of address and size, one tuple for each entry - in reg-names. - - reg-names: an array of strings describing the "reg" entries. - Must contain "mux" and "gpio". - May contain "pull", "pull-enable" and "ds" when appropriate. - - gpio-controller: identifies the node as a gpio controller - - #gpio-cells: must be 2 - -=== Other sub-nodes === - -Child nodes without the "gpio-controller" represent some desired -configuration for a pin or a group. Those nodes can be pinmux nodes or -configuration nodes. - -Required properties for pinmux nodes are: - - groups: a list of pinmux groups. The list of all available groups - depends on the SoC and can be found in driver sources. - - function: the name of a function to activate for the specified set - of groups. The list of all available functions depends on the SoC - and can be found in driver sources. - -Required properties for configuration nodes: - - pins: a list of pin names - -Configuration nodes support the following generic properties, as -described in file pinctrl-bindings.txt: - - "bias-disable" - - "bias-pull-up" - - "bias-pull-down" - - "output-enable" - - "output-disable" - - "output-low" - - "output-high" - -Optional properties : - - drive-strength-microamp: Drive strength for the specified pins in uA. - This property is only valid for G12A and newer. - -=== Example === - - pinctrl: pinctrl@c1109880 { - compatible = "amlogic,meson8-cbus-pinctrl"; - reg = <0xc1109880 0x10>; - #address-cells = <1>; - #size-cells = <1>; - ranges; - - gpio: banks@c11080b0 { - reg = <0xc11080b0 0x28>, - <0xc11080e8 0x18>, - <0xc1108120 0x18>, - <0xc1108030 0x30>; - reg-names = "mux", "pull", "pull-enable", "gpio"; - gpio-controller; - #gpio-cells = <2>; - }; - - nand { - mux { - groups = "nand_io", "nand_io_ce0", "nand_io_ce1", - "nand_io_rb0", "nand_ale", "nand_cle", - "nand_wen_clk", "nand_ren_clk", "nand_dqs", - "nand_ce2", "nand_ce3"; - function = "nand"; - }; - }; - };
Convert Amlogic Meson pinctrl binding to yaml. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> --- v2: - consider that more than one compatible can be set - remove bus part from example v3: - remove minItem/maxItem properties for compatible --- .../pinctrl/amlogic,meson-pinctrl.yaml | 122 ++++++++++++++++++ .../bindings/pinctrl/meson,pinctrl.txt | 94 -------------- 2 files changed, 122 insertions(+), 94 deletions(-) create mode 100644 Documentation/devicetree/bindings/pinctrl/amlogic,meson-pinctrl.yaml delete mode 100644 Documentation/devicetree/bindings/pinctrl/meson,pinctrl.txt