xref: /linux/Documentation/devicetree/bindings/memory-controllers/fsl/fsl,imx-weim.yaml (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/memory-controllers/fsl/fsl,imx-weim.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: i.MX Wireless External Interface Module (WEIM)
8
9maintainers:
10  - Shawn Guo <shawnguo@kernel.org>
11  - Sascha Hauer <s.hauer@pengutronix.de>
12
13description:
14  The term "wireless" does not imply that the WEIM is literally an interface
15  without wires. It simply means that this module was originally designed for
16  wireless and mobile applications that use low-power technology. The actual
17  devices are instantiated from the child nodes of a WEIM node.
18
19properties:
20  $nodename:
21    pattern: "^memory-controller@[0-9a-f]+$"
22
23  compatible:
24    oneOf:
25      - enum:
26          - fsl,imx1-weim
27          - fsl,imx27-weim
28          - fsl,imx50-weim
29          - fsl,imx51-weim
30          - fsl,imx6q-weim
31      - items:
32          - enum:
33              - fsl,imx31-weim
34              - fsl,imx35-weim
35          - const: fsl,imx27-weim
36      - items:
37          - enum:
38              - fsl,imx6sx-weim
39              - fsl,imx6ul-weim
40          - const: fsl,imx6q-weim
41
42  "#address-cells":
43    const: 2
44
45  "#size-cells":
46    const: 1
47
48  reg:
49    maxItems: 1
50
51  clocks:
52    maxItems: 1
53
54  interrupts:
55    maxItems: 1
56
57  ranges: true
58
59  fsl,weim-cs-gpr:
60    $ref: /schemas/types.yaml#/definitions/phandle
61    description: |
62      Phandle to the system General Purpose Register controller that contains
63      WEIM CS GPR register, e.g. IOMUXC_GPR1 on i.MX6Q. IOMUXC_GPR1[11:0]
64      should be set up as one of the following 4 possible values depending on
65      the CS space configuration.
66
67      IOMUXC_GPR1[11:0]    CS0    CS1    CS2    CS3
68      ---------------------------------------------
69              05          128M     0M     0M     0M
70              033          64M    64M     0M     0M
71              0113         64M    32M    32M     0M
72              01111        32M    32M    32M    32M
73
74      In case that the property is absent, the reset value or what bootloader
75      sets up in IOMUXC_GPR1[11:0] will be used.
76
77  fsl,burst-clk-enable:
78    type: boolean
79    description:
80      The presence of this property indicates that the weim bus should operate
81      in Burst Clock Mode.
82
83  fsl,continuous-burst-clk:
84    type: boolean
85    description:
86      Make Burst Clock to output continuous clock. Without this option Burst
87      Clock will output clock only when necessary.
88
89patternProperties:
90  "^.*@[0-7],[0-9a-f]+$":
91    type: object
92    description: Devices attached to chip selects are represented as subnodes.
93    $ref: fsl,imx-weim-peripherals.yaml
94    additionalProperties: true
95    required:
96      - fsl,weim-cs-timing
97
98required:
99  - compatible
100  - reg
101  - clocks
102  - "#address-cells"
103  - "#size-cells"
104  - ranges
105
106allOf:
107  - if:
108      properties:
109        compatible:
110          not:
111            contains:
112              enum:
113                - fsl,imx50-weim
114                - fsl,imx6q-weim
115    then:
116      properties:
117        fsl,weim-cs-gpr: false
118        fsl,burst-clk-enable: false
119  - if:
120      not:
121        required:
122          - fsl,burst-clk-enable
123    then:
124      properties:
125        fsl,continuous-burst-clk: false
126  - if:
127      properties:
128        compatible:
129          contains:
130            const: fsl,imx1-weim
131    then:
132      patternProperties:
133        "^.*@[0-7],[0-9a-f]+$":
134          properties:
135            fsl,weim-cs-timing:
136              items:
137                - description: CSxU
138                - description: CSxL
139  - if:
140      properties:
141        compatible:
142          contains:
143            enum:
144              - fsl,imx27-weim
145              - fsl,imx31-weim
146              - fsl,imx35-weim
147    then:
148      patternProperties:
149        "^.*@[0-7],[0-9a-f]+$":
150          properties:
151            fsl,weim-cs-timing:
152              items:
153                - description: CSCRxU
154                - description: CSCRxL
155                - description: CSCRxA
156  - if:
157      properties:
158        compatible:
159          contains:
160            enum:
161              - fsl,imx50-weim
162              - fsl,imx51-weim
163              - fsl,imx6q-weim
164              - fsl,imx6sx-weim
165              - fsl,imx6ul-weim
166    then:
167      patternProperties:
168        "^.*@[0-7],[0-9a-f]+$":
169          properties:
170            fsl,weim-cs-timing:
171              items:
172                - description: CSxGCR1
173                - description: CSxGCR2
174                - description: CSxRCR1
175                - description: CSxRCR2
176                - description: CSxWCR1
177                - description: CSxWCR2
178
179additionalProperties: false
180
181examples:
182  - |
183    memory-controller@21b8000 {
184        compatible = "fsl,imx6q-weim";
185        reg = <0x021b8000 0x4000>;
186        clocks = <&clks 196>;
187        #address-cells = <2>;
188        #size-cells = <1>;
189        ranges = <0 0 0x08000000 0x08000000>;
190        fsl,weim-cs-gpr = <&gpr>;
191
192        flash@0,0 {
193            compatible = "cfi-flash";
194            reg = <0 0 0x02000000>;
195            #address-cells = <1>;
196            #size-cells = <1>;
197            bank-width = <2>;
198            fsl,weim-cs-timing = <0x00620081 0x00000001 0x1c022000
199                                  0x0000c000 0x1404a38e 0x00000000>;
200        };
201    };
202