Message ID | 20220314213143.2404162-2-chris.packham@alliedtelesis.co.nz (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | arm64: mvebu: Support for Marvell 98DX2530 (and variants) | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Guessing tree name failed - patch did not apply |
> + properties: > + marvell,function: > + $ref: "/schemas/types.yaml#/definitions/string" > + description: > + Indicates the function to select. > + enum: [ gpio, i2c0, i2c1, nand, sdio, spi0, spi1, uart0, uart1, uart2, uart3 ] > + > + marvell,pins: > + $ref: /schemas/types.yaml#/definitions/string-array > + description: > + Array of MPP pins to be used for the given function. > + minItems: 1 Now that i've looked at the .txt files, i'm wondering if this should be split into a marvell,mvebu-pinctrl.yaml and marvell,ac5-pinctrl.yaml? I don't know yaml well enough to know if this is possible. All the mvebu pinctrl drivers have marvell,function and marvell,pins. The enum will differ, this ethernet switch SoC does not have sata, audio etc, where as the general purpose Socs do. Can that be represented in yaml? Andrew
On 15/03/22 13:07, Andrew Lunn wrote: >> + properties: >> + marvell,function: >> + $ref: "/schemas/types.yaml#/definitions/string" >> + description: >> + Indicates the function to select. >> + enum: [ gpio, i2c0, i2c1, nand, sdio, spi0, spi1, uart0, uart1, uart2, uart3 ] >> + >> + marvell,pins: >> + $ref: /schemas/types.yaml#/definitions/string-array >> + description: >> + Array of MPP pins to be used for the given function. >> + minItems: 1 > Now that i've looked at the .txt files, i'm wondering if this should > be split into a marvell,mvebu-pinctrl.yaml and > marvell,ac5-pinctrl.yaml? > > I don't know yaml well enough to know if this is possible. All the > mvebu pinctrl drivers have marvell,function and marvell,pins. The enum > will differ, this ethernet switch SoC does not have sata, audio etc, > where as the general purpose Socs do. Can that be represented in yaml? I think it can. I vaguely remember seeing conditional clauses based on compatible strings in other yaml bindings. I started a new binding document because I expected adding significant additions to the existing .txt files would be rejected. If I get some cycles I could look at converting the existing docs from txt to yaml. I'm not sure that there will be much in the way of a common mvebu-pinctrl.yaml as you'd end up repeating most of the common stuff to make things conditional anyway. > > Andrew
> I think it can. I vaguely remember seeing conditional clauses based on > compatible strings in other yaml bindings. > > I started a new binding document because I expected adding significant > additions to the existing .txt files would be rejected. If I get some > cycles I could look at converting the existing docs from txt to yaml. > > I'm not sure that there will be much in the way of a common > mvebu-pinctrl.yaml as you'd end up repeating most of the common stuff to > make things conditional anyway. We should wait for Rob to comment. But is suspect you are right, there will not be much savings. Andrew
On 14/03/2022 22:31, Chris Packham wrote: > Add JSON schema for marvell,ac5-pinctrl present on the Marvell 98DX2530 > SoC. > > Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz> > --- > > Notes: > Changes in v2: > - Remove syscon and simple-mfd compatibles > > .../bindings/pinctrl/marvell,ac5-pinctrl.yaml | 70 +++++++++++++++++++ > 1 file changed, 70 insertions(+) > create mode 100644 Documentation/devicetree/bindings/pinctrl/marvell,ac5-pinctrl.yaml > > diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,ac5-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/marvell,ac5-pinctrl.yaml > new file mode 100644 > index 000000000000..65af1d5f5fe0 > --- /dev/null > +++ b/Documentation/devicetree/bindings/pinctrl/marvell,ac5-pinctrl.yaml > @@ -0,0 +1,70 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/pinctrl/marvell,ac5-pinctrl.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Marvell AC5 pin controller > + > +maintainers: > + - Chris Packham <chris.packham@alliedtelesis.co.nz> > + > +description: > + Bindings for Marvell's AC5 memory-mapped pin controller. > + > +properties: > + compatible: > + const: marvell,ac5-pinctrl > + > +patternProperties: > + '-pins$': > + type: object > + $ref: pinmux-node.yaml# > + > + properties: > + marvell,function: > + $ref: "/schemas/types.yaml#/definitions/string" > + description: > + Indicates the function to select. > + enum: [ gpio, i2c0, i2c1, nand, sdio, spi0, spi1, uart0, uart1, uart2, uart3 ] > + > + marvell,pins: > + $ref: /schemas/types.yaml#/definitions/string-array > + description: > + Array of MPP pins to be used for the given function. > + minItems: 1 > + items: > + enum: [ mpp0, mpp1, mpp2, mpp3, mpp4, mpp5, mpp6, mpp7, mpp8, mpp9, > + mpp10, mpp11, mpp12, mpp13, mpp14, mpp15, mpp16, mpp17, mpp18, mpp19, > + mpp20, mpp21, mpp22, mpp23, mpp24, mpp25, mpp26, mpp27, mpp28, mpp29, > + mpp30, mpp31, mpp32, mpp33, mpp34, mpp35, mpp36, mpp37, mpp38, mpp39, > + mpp40, mpp41, mpp42, mpp43, mpp44, mpp45 ] > + > +allOf: > + - $ref: "pinctrl.yaml#" > + > +required: > + - compatible > + > +additionalProperties: false > + > +examples: > + - | > + system-controller@80020100 { > + compatible = "syscon", "simple-mfd"; > + reg = <0x80020000 0x20>; This is unusual. Usually the pinctrl should be a device @80020100, not child of syscon node. Why do you need it? In v1 you mentioned that vendor sources do like this, but it's not correct to copy wrong DTS. :) Best regards, Krzysztof
On Tue, Mar 15, 2022 at 01:27:48AM +0100, Andrew Lunn wrote: > > I think it can. I vaguely remember seeing conditional clauses based on > > compatible strings in other yaml bindings. > > > > I started a new binding document because I expected adding significant > > additions to the existing .txt files would be rejected. If I get some > > cycles I could look at converting the existing docs from txt to yaml. > > > > I'm not sure that there will be much in the way of a common > > mvebu-pinctrl.yaml as you'd end up repeating most of the common stuff to > > make things conditional anyway. > > We should wait for Rob to comment. But is suspect you are right, there > will not be much savings. It's always a judgement call of amount of if/then schema vs. duplicating the common parts. If it's the function/pin parts that vary, then that's probably best as separate schema for each case. Otherwise, I'm not sure without seeing something. Rob
diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,ac5-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/marvell,ac5-pinctrl.yaml new file mode 100644 index 000000000000..65af1d5f5fe0 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/marvell,ac5-pinctrl.yaml @@ -0,0 +1,70 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/marvell,ac5-pinctrl.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Marvell AC5 pin controller + +maintainers: + - Chris Packham <chris.packham@alliedtelesis.co.nz> + +description: + Bindings for Marvell's AC5 memory-mapped pin controller. + +properties: + compatible: + const: marvell,ac5-pinctrl + +patternProperties: + '-pins$': + type: object + $ref: pinmux-node.yaml# + + properties: + marvell,function: + $ref: "/schemas/types.yaml#/definitions/string" + description: + Indicates the function to select. + enum: [ gpio, i2c0, i2c1, nand, sdio, spi0, spi1, uart0, uart1, uart2, uart3 ] + + marvell,pins: + $ref: /schemas/types.yaml#/definitions/string-array + description: + Array of MPP pins to be used for the given function. + minItems: 1 + items: + enum: [ mpp0, mpp1, mpp2, mpp3, mpp4, mpp5, mpp6, mpp7, mpp8, mpp9, + mpp10, mpp11, mpp12, mpp13, mpp14, mpp15, mpp16, mpp17, mpp18, mpp19, + mpp20, mpp21, mpp22, mpp23, mpp24, mpp25, mpp26, mpp27, mpp28, mpp29, + mpp30, mpp31, mpp32, mpp33, mpp34, mpp35, mpp36, mpp37, mpp38, mpp39, + mpp40, mpp41, mpp42, mpp43, mpp44, mpp45 ] + +allOf: + - $ref: "pinctrl.yaml#" + +required: + - compatible + +additionalProperties: false + +examples: + - | + system-controller@80020100 { + compatible = "syscon", "simple-mfd"; + reg = <0x80020000 0x20>; + + pinctrl0: pinctrl { + compatible = "marvell,ac5-pinctrl"; + + i2c0_pins: i2c0-pins { + marvell,pins = "mpp26", "mpp27"; + marvell,function = "i2c0"; + }; + + i2c0_gpio: i2c0-gpio-pins { + marvell,pins = "mpp26", "mpp27"; + marvell,function = "gpio"; + }; + }; + };
Add JSON schema for marvell,ac5-pinctrl present on the Marvell 98DX2530 SoC. Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz> --- Notes: Changes in v2: - Remove syscon and simple-mfd compatibles .../bindings/pinctrl/marvell,ac5-pinctrl.yaml | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/marvell,ac5-pinctrl.yaml