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