xref: /linux/Documentation/devicetree/bindings/memory-controllers/arm,pl172.yaml (revision 0f46f50845ce75bfaba62df0421084d23bb6a72f)
1*04de5016SFrank Li# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*04de5016SFrank Li%YAML 1.2
3*04de5016SFrank Li---
4*04de5016SFrank Li$id: http://devicetree.org/schemas/memory-controllers/arm,pl172.yaml#
5*04de5016SFrank Li$schema: http://devicetree.org/meta-schemas/core.yaml#
6*04de5016SFrank Li
7*04de5016SFrank Lititle: ARM PL172/PL175/PL176 MultiPort Memory Controller
8*04de5016SFrank Li
9*04de5016SFrank Limaintainers:
10*04de5016SFrank Li  - Frank Li <Frank.Li@nxp.com>
11*04de5016SFrank Li
12*04de5016SFrank Li# We need a select here so we don't match all nodes with 'arm,primecell'
13*04de5016SFrank Liselect:
14*04de5016SFrank Li  properties:
15*04de5016SFrank Li    compatible:
16*04de5016SFrank Li      contains:
17*04de5016SFrank Li        enum:
18*04de5016SFrank Li          - arm,pl172
19*04de5016SFrank Li          - arm,pl175
20*04de5016SFrank Li          - arm,pl176
21*04de5016SFrank Li  required:
22*04de5016SFrank Li    - compatible
23*04de5016SFrank Li
24*04de5016SFrank Liproperties:
25*04de5016SFrank Li  compatible:
26*04de5016SFrank Li    items:
27*04de5016SFrank Li      - enum:
28*04de5016SFrank Li          - arm,pl172
29*04de5016SFrank Li          - arm,pl175
30*04de5016SFrank Li          - arm,pl176
31*04de5016SFrank Li      - const: arm,primecell
32*04de5016SFrank Li
33*04de5016SFrank Li  reg:
34*04de5016SFrank Li    maxItems: 1
35*04de5016SFrank Li
36*04de5016SFrank Li  '#address-cells':
37*04de5016SFrank Li    const: 2
38*04de5016SFrank Li
39*04de5016SFrank Li  '#size-cells':
40*04de5016SFrank Li    const: 1
41*04de5016SFrank Li
42*04de5016SFrank Li  ranges: true
43*04de5016SFrank Li
44*04de5016SFrank Li  clocks:
45*04de5016SFrank Li    maxItems: 2
46*04de5016SFrank Li
47*04de5016SFrank Li  clock-names:
48*04de5016SFrank Li    items:
49*04de5016SFrank Li      - const: mpmcclk
50*04de5016SFrank Li      - const: apb_pclk
51*04de5016SFrank Li
52*04de5016SFrank Li  clock-ranges: true
53*04de5016SFrank Li
54*04de5016SFrank Li  resets:
55*04de5016SFrank Li    maxItems: 1
56*04de5016SFrank Li
57*04de5016SFrank LipatternProperties:
58*04de5016SFrank Li  "^cs[0-9]$":
59*04de5016SFrank Li    type: object
60*04de5016SFrank Li    additionalProperties: false
61*04de5016SFrank Li    patternProperties:
62*04de5016SFrank Li      "^flash@[0-9],[0-9a-f]+$":
63*04de5016SFrank Li        type: object
64*04de5016SFrank Li        $ref: /schemas/mtd/mtd-physmap.yaml#
65*04de5016SFrank Li        unevaluatedProperties: false
66*04de5016SFrank Li
67*04de5016SFrank Li      "^(gpio|sram)@[0-9],[0-9a-f]+$":
68*04de5016SFrank Li        type: object
69*04de5016SFrank Li        additionalProperties: true
70*04de5016SFrank Li
71*04de5016SFrank Li    properties:
72*04de5016SFrank Li      '#address-cells':
73*04de5016SFrank Li        const: 2
74*04de5016SFrank Li
75*04de5016SFrank Li      '#size-cells':
76*04de5016SFrank Li        const: 1
77*04de5016SFrank Li
78*04de5016SFrank Li      ranges: true
79*04de5016SFrank Li
80*04de5016SFrank Li      clocks:
81*04de5016SFrank Li        maxItems: 2
82*04de5016SFrank Li
83*04de5016SFrank Li      clock-ranges: true
84*04de5016SFrank Li
85*04de5016SFrank Li      mpmc,cs:
86*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/uint32
87*04de5016SFrank Li        description:
88*04de5016SFrank Li          Chip select number. Indicates to the pl0172 driver
89*04de5016SFrank Li          which chipselect is used for accessing the memory.
90*04de5016SFrank Li
91*04de5016SFrank Li      mpmc,memory-width:
92*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/uint32
93*04de5016SFrank Li        enum: [8, 16, 32]
94*04de5016SFrank Li        description:
95*04de5016SFrank Li          Width of the chip select memory. Must be equal to either 8, 16 or 32.
96*04de5016SFrank Li
97*04de5016SFrank Li      mpmc,async-page-mode:
98*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/flag
99*04de5016SFrank Li        description:
100*04de5016SFrank Li          Enable asynchronous page mode.
101*04de5016SFrank Li
102*04de5016SFrank Li      mpmc,cs-active-high:
103*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/flag
104*04de5016SFrank Li        description:
105*04de5016SFrank Li          Set chip select polarity to active high.
106*04de5016SFrank Li
107*04de5016SFrank Li      mpmc,byte-lane-low:
108*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/flag
109*04de5016SFrank Li        description:
110*04de5016SFrank Li          Set byte lane state to low.
111*04de5016SFrank Li
112*04de5016SFrank Li      mpmc,extended-wait:
113*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/flag
114*04de5016SFrank Li        description:
115*04de5016SFrank Li          Enable extended wait.
116*04de5016SFrank Li
117*04de5016SFrank Li      mpmc,buffer-enable:
118*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/flag
119*04de5016SFrank Li        description:
120*04de5016SFrank Li          Enable write buffer, option is not supported by
121*04de5016SFrank Li          PL175 and PL176 controllers.
122*04de5016SFrank Li
123*04de5016SFrank Li      mpmc,write-protect:
124*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/flag
125*04de5016SFrank Li        description:
126*04de5016SFrank Li          Enable write protect.
127*04de5016SFrank Li
128*04de5016SFrank Li      mpmc,read-enable-delay:
129*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/uint32
130*04de5016SFrank Li        description:
131*04de5016SFrank Li          Delay from chip select assertion to read
132*04de5016SFrank Li          enable (RE signal) in nano seconds.
133*04de5016SFrank Li
134*04de5016SFrank Li      mpmc,write-enable-delay:
135*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/uint32
136*04de5016SFrank Li        description:
137*04de5016SFrank Li          Delay from chip select assertion to write
138*04de5016SFrank Li          enable (WE signal) in nano seconds.
139*04de5016SFrank Li
140*04de5016SFrank Li      mpmc,output-enable-delay:
141*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/uint32
142*04de5016SFrank Li        description:
143*04de5016SFrank Li          Delay from chip select assertion to output
144*04de5016SFrank Li          enable (OE signal) in nano seconds.
145*04de5016SFrank Li
146*04de5016SFrank Li      mpmc,write-access-delay:
147*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/uint32
148*04de5016SFrank Li        description:
149*04de5016SFrank Li          Delay from chip select assertion to write
150*04de5016SFrank Li          access in nano seconds.
151*04de5016SFrank Li
152*04de5016SFrank Li      mpmc,read-access-delay:
153*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/uint32
154*04de5016SFrank Li        description:
155*04de5016SFrank Li          Delay from chip select assertion to read
156*04de5016SFrank Li          access in nano seconds.
157*04de5016SFrank Li
158*04de5016SFrank Li      mpmc,page-mode-read-delay:
159*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/uint32
160*04de5016SFrank Li        description:
161*04de5016SFrank Li          Delay for asynchronous page mode sequential
162*04de5016SFrank Li          accesses in nano seconds.
163*04de5016SFrank Li
164*04de5016SFrank Li      mpmc,turn-round-delay:
165*04de5016SFrank Li        $ref: /schemas/types.yaml#/definitions/uint32
166*04de5016SFrank Li        description:
167*04de5016SFrank Li          Delay between access to memory banks in nano
168*04de5016SFrank Li          seconds.
169*04de5016SFrank Li
170*04de5016SFrank Lirequired:
171*04de5016SFrank Li  - compatible
172*04de5016SFrank Li  - reg
173*04de5016SFrank Li  - '#address-cells'
174*04de5016SFrank Li  - '#size-cells'
175*04de5016SFrank Li  - ranges
176*04de5016SFrank Li  - clocks
177*04de5016SFrank Li  - clock-names
178*04de5016SFrank Li
179*04de5016SFrank LiadditionalProperties: false
180*04de5016SFrank Li
181*04de5016SFrank Liexamples:
182*04de5016SFrank Li  - |
183*04de5016SFrank Li    #include <dt-bindings/clock/lpc18xx-ccu.h>
184*04de5016SFrank Li
185*04de5016SFrank Li    memory-controller@40005000 {
186*04de5016SFrank Li        compatible = "arm,pl172", "arm,primecell";
187*04de5016SFrank Li        reg = <0x40005000 0x1000>;
188*04de5016SFrank Li        clocks = <&ccu1 CLK_CPU_EMCDIV>, <&ccu1 CLK_CPU_EMC>;
189*04de5016SFrank Li        clock-names = "mpmcclk", "apb_pclk";
190*04de5016SFrank Li        #address-cells = <2>;
191*04de5016SFrank Li        #size-cells = <1>;
192*04de5016SFrank Li        ranges = <0 0 0x1c000000 0x1000000
193*04de5016SFrank Li                  1 0 0x1d000000 0x1000000
194*04de5016SFrank Li                  2 0 0x1e000000 0x1000000
195*04de5016SFrank Li                  3 0 0x1f000000 0x1000000>;
196*04de5016SFrank Li
197*04de5016SFrank Li        cs0 {
198*04de5016SFrank Li            #address-cells = <2>;
199*04de5016SFrank Li            #size-cells = <1>;
200*04de5016SFrank Li            ranges;
201*04de5016SFrank Li
202*04de5016SFrank Li            mpmc,cs = <0>;
203*04de5016SFrank Li            mpmc,memory-width = <16>;
204*04de5016SFrank Li            mpmc,byte-lane-low;
205*04de5016SFrank Li            mpmc,write-enable-delay = <0>;
206*04de5016SFrank Li            mpmc,output-enable-delay = <0>;
207*04de5016SFrank Li            mpmc,read-enable-delay = <70>;
208*04de5016SFrank Li            mpmc,page-mode-read-delay = <70>;
209*04de5016SFrank Li
210*04de5016SFrank Li            flash@0,0 {
211*04de5016SFrank Li                compatible = "sst,sst39vf320", "cfi-flash";
212*04de5016SFrank Li                reg = <0 0 0x400000>;
213*04de5016SFrank Li                bank-width = <2>;
214*04de5016SFrank Li                #address-cells = <1>;
215*04de5016SFrank Li                #size-cells = <1>;
216*04de5016SFrank Li                partition@0 {
217*04de5016SFrank Li                    label = "data";
218*04de5016SFrank Li                    reg = <0 0x400000>;
219*04de5016SFrank Li                };
220*04de5016SFrank Li            };
221*04de5016SFrank Li        };
222*04de5016SFrank Li    };
223