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