xref: /linux/Documentation/devicetree/bindings/memory-controllers/fsl/fsl,imx-weim.yaml (revision 4b660dbd9ee2059850fd30e0df420ca7a38a1856)
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                items:
138                  - description: CSxU
139                  - description: CSxL
140  - if:
141      properties:
142        compatible:
143          contains:
144            enum:
145              - fsl,imx27-weim
146              - fsl,imx31-weim
147              - fsl,imx35-weim
148    then:
149      patternProperties:
150        "^.*@[0-7],[0-9a-f]+$":
151          properties:
152            fsl,weim-cs-timing:
153              items:
154                items:
155                  - description: CSCRxU
156                  - description: CSCRxL
157                  - description: CSCRxA
158  - if:
159      properties:
160        compatible:
161          contains:
162            enum:
163              - fsl,imx50-weim
164              - fsl,imx51-weim
165              - fsl,imx6q-weim
166              - fsl,imx6sx-weim
167              - fsl,imx6ul-weim
168    then:
169      patternProperties:
170        "^.*@[0-7],[0-9a-f]+$":
171          properties:
172            fsl,weim-cs-timing:
173              items:
174                items:
175                  - description: CSxGCR1
176                  - description: CSxGCR2
177                  - description: CSxRCR1
178                  - description: CSxRCR2
179                  - description: CSxWCR1
180                  - description: CSxWCR2
181
182additionalProperties: false
183
184examples:
185  - |
186    memory-controller@21b8000 {
187        compatible = "fsl,imx6q-weim";
188        reg = <0x021b8000 0x4000>;
189        clocks = <&clks 196>;
190        #address-cells = <2>;
191        #size-cells = <1>;
192        ranges = <0 0 0x08000000 0x08000000>;
193        fsl,weim-cs-gpr = <&gpr>;
194
195        flash@0,0 {
196            compatible = "cfi-flash";
197            reg = <0 0 0x02000000>;
198            #address-cells = <1>;
199            #size-cells = <1>;
200            bank-width = <2>;
201            fsl,weim-cs-timing = <0x00620081 0x00000001 0x1c022000
202                                  0x0000c000 0x1404a38e 0x00000000>;
203        };
204    };
205