On Sat, Feb 10, 2024 at 02:18:06AM +0100, Sebastian Reichel wrote: > Convert the i.MX Wireless External Interface Module binding to YAML. > > Signed-off-by: Sebastian Reichel <sre@xxxxxxxxxx> > --- > .../devicetree/bindings/bus/fsl,imx-weim.yaml | 225 ++++++++++++++++++ > .../devicetree/bindings/bus/imx-weim.txt | 117 --------- > 2 files changed, 225 insertions(+), 117 deletions(-) > create mode 100644 Documentation/devicetree/bindings/bus/fsl,imx-weim.yaml > delete mode 100644 Documentation/devicetree/bindings/bus/imx-weim.txt > > diff --git a/Documentation/devicetree/bindings/bus/fsl,imx-weim.yaml b/Documentation/devicetree/bindings/bus/fsl,imx-weim.yaml > new file mode 100644 > index 000000000000..3d27bdaef304 > --- /dev/null > +++ b/Documentation/devicetree/bindings/bus/fsl,imx-weim.yaml > @@ -0,0 +1,225 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/bus/fsl,imx-weim.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: i.MX Wireless External Interface Module (WEIM) > + > +maintainers: > + - Shawn Guo <shawnguo@xxxxxxxxxx> > + - Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> > + > +description: > + The term "wireless" does not imply that the WEIM is literally an interface > + without wires. It simply means that this module was originally designed for > + wireless and mobile applications that use low-power technology. The actual > + devices are instantiated from the child nodes of a WEIM node. > + > +properties: > + compatible: > + oneOf: > + - enum: > + - fsl,imx1-weim > + - fsl,imx27-weim > + - fsl,imx50-weim > + - fsl,imx51-weim > + - fsl,imx6q-weim > + - items: > + - enum: > + - fsl,imx31-weim > + - fsl,imx35-weim > + - const: fsl,imx27-weim > + - items: > + - enum: > + - fsl,imx6sx-weim > + - fsl,imx6ul-weim > + - const: fsl,imx6q-weim > + > + reg: > + maxItems: 1 > + > + clocks: > + maxItems: 1 > + > + interrupts: > + maxItems: 1 > + > + '#address-cells': > + const: 2 > + > + '#size-cells': > + const: 1 > + > + ranges: true > + > + fsl,weim-cs-gpr: > + $ref: /schemas/types.yaml#/definitions/phandle > + description: | > + Phandle to the system General Purpose Register controller that contains > + WEIM CS GPR register, e.g. IOMUXC_GPR1 on i.MX6Q. IOMUXC_GPR1[11:0] > + should be set up as one of the following 4 possible values depending on > + the CS space configuration. > + > + IOMUXC_GPR1[11:0] CS0 CS1 CS2 CS3 > + --------------------------------------------- > + 05 128M 0M 0M 0M > + 033 64M 64M 0M 0M > + 0113 64M 32M 32M 0M > + 01111 32M 32M 32M 32M > + > + In case that the property is absent, the reset value or what bootloader > + sets up in IOMUXC_GPR1[11:0] will be used. > + > + fsl,burst-clk-enable: > + type: boolean > + description: > + The presence of this property indicates that the weim bus should operate > + in Burst Clock Mode. > + > + fsl,continuous-burst-clk: > + type: boolean > + description: > + Make Burst Clock to output continuous clock. Without this option Burst > + Clock will output clock only when necessary. > + > +patternProperties: > + "^.*@[0-7],[0-9a-f]+$": > + description: Devices attached to chip selects are represented as subnodes. > + type: object > + additionalProperties: true > + properties: > + fsl,weim-cs-timing: > + $ref: /schemas/types.yaml#/definitions/uint32-array > + description: > + Timing values for the child node. > + required: > + - fsl,weim-cs-timing This needs to go in its own schema doc and then added to memory-controllers/mc-peripheral-props.yaml We should probably also move this binding to memory-controllers/ > + > +allOf: > + - if: > + properties: > + compatible: > + not: > + contains: > + enum: > + - fsl,imx50-weim > + - fsl,imx6q-weim > + then: > + properties: > + fsl,weim-cs-gpr: false > + fsl,burst-clk-enable: false > + - if: > + properties: > + fsl,burst-clk-enable: false > + then: > + properties: > + fsl,continuous-burst-clk: false > + - if: > + properties: > + compatible: > + contains: > + const: fsl,imx1-weim > + then: > + patternProperties: > + "^.*@[0-7],[0-9a-f]+$": > + properties: > + fsl,weim-cs-timing: > + items: > + items: > + - description: CSxU > + - description: CSxL > + - if: > + properties: > + compatible: > + contains: > + enum: > + - fsl,imx27-weim > + - fsl,imx31-weim > + - fsl,imx35-weim > + then: > + patternProperties: > + "^.*@[0-7],[0-9a-f]+$": > + properties: > + fsl,weim-cs-timing: > + items: > + items: > + - description: CSCRxU > + - description: CSCRxL > + - description: CSCRxA > + - if: > + properties: > + compatible: > + contains: > + enum: > + - fsl,imx50-weim > + - fsl,imx51-weim > + - fsl,imx6q-weim > + - fsl,imx6sx-weim > + - fsl,imx6ul-weim > + then: > + patternProperties: > + "^.*@[0-7],[0-9a-f]+$": > + properties: > + fsl,weim-cs-timing: > + items: > + items: > + - description: CSxGCR1 > + - description: CSxGCR2 > + - description: CSxRCR1 > + - description: CSxRCR2 > + - description: CSxWCR1 > + - description: CSxWCR2 > + > +required: > + - compatible > + - reg > + - clocks > + - '#address-cells' > + - '#size-cells' > + - ranges > + > +additionalProperties: false > + > +examples: > + - | > + weim@21b8000 { bus or external-bus > + compatible = "fsl,imx6q-weim"; > + reg = <0x021b8000 0x4000>; > + clocks = <&clks 196>; > + #address-cells = <2>; > + #size-cells = <1>; > + ranges = <0 0 0x08000000 0x08000000>; > + fsl,weim-cs-gpr = <&gpr>; > + > + nor@0,0 { > + compatible = "cfi-flash"; > + reg = <0 0 0x02000000>; > + #address-cells = <1>; > + #size-cells = <1>; > + bank-width = <2>; > + fsl,weim-cs-timing = <0x00620081 0x00000001 0x1c022000 > + 0x0000c000 0x1404a38e 0x00000000>; > + }; > + }; > + - | > + weim@21b8000 { > + compatible = "fsl,imx6q-weim"; > + reg = <0x021b8000 0x4000>; > + clocks = <&clks 196>; > + #address-cells = <2>; > + #size-cells = <1>; > + ranges = <0 0 0x08000000 0x02000000 > + 1 0 0x0a000000 0x02000000 > + 2 0 0x0c000000 0x02000000 > + 3 0 0x0e000000 0x02000000>; > + fsl,weim-cs-gpr = <&gpr>; > + > + acme@0,0 { > + compatible = "acme,whatever"; Real bindings only please. > + reg = <0 0 0x100>, <0 0x400000 0x800>, > + <1 0x400000 0x800>; > + fsl,weim-cs-timing = <0x024400b1 0x00001010 0x20081100 > + 0x00000000 0xa0000240 0x00000000>; > + }; > + };