xref: /openbmc/linux/Documentation/devicetree/bindings/memory-controllers/arm,pl35x-smc.yaml (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1de67fa80SRob Herring# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2de67fa80SRob Herring%YAML 1.2
3de67fa80SRob Herring---
4de67fa80SRob Herring$id: http://devicetree.org/schemas/memory-controllers/arm,pl35x-smc.yaml#
5de67fa80SRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml#
6de67fa80SRob Herring
7de67fa80SRob Herringtitle: Arm PL35x Series Static Memory Controller (SMC)
8de67fa80SRob Herring
9de67fa80SRob Herringmaintainers:
10de67fa80SRob Herring  - Miquel Raynal <miquel.raynal@bootlin.com>
11de67fa80SRob Herring
12de67fa80SRob Herringdescription: |
13de67fa80SRob Herring  The PL35x Static Memory Controller is a bus where you can connect two kinds
14de67fa80SRob Herring  of memory interfaces, which are NAND and memory mapped interfaces (such as
15de67fa80SRob Herring  SRAM or NOR) depending on the specific configuration.
16de67fa80SRob Herring
17de67fa80SRob Herring  The TRM is available here:
18de67fa80SRob Herring  https://documentation-service.arm.com/static/5e8e2524fd977155116a58aa
19de67fa80SRob Herring
20de67fa80SRob Herring# We need a select here so we don't match all nodes with 'arm,primecell'
21de67fa80SRob Herringselect:
22de67fa80SRob Herring  properties:
23de67fa80SRob Herring    compatible:
24de67fa80SRob Herring      contains:
25de67fa80SRob Herring        enum:
26de67fa80SRob Herring          - arm,pl353-smc-r2p1
27de67fa80SRob Herring          - arm,pl354
28de67fa80SRob Herring  required:
29de67fa80SRob Herring    - compatible
30de67fa80SRob Herring
31de67fa80SRob Herringproperties:
32de67fa80SRob Herring  $nodename:
33de67fa80SRob Herring    pattern: "^memory-controller@[0-9a-f]+$"
34de67fa80SRob Herring
35de67fa80SRob Herring  compatible:
36de67fa80SRob Herring    items:
37de67fa80SRob Herring      - enum:
38de67fa80SRob Herring          - arm,pl353-smc-r2p1
39de67fa80SRob Herring          - arm,pl354
40de67fa80SRob Herring      - const: arm,primecell
41de67fa80SRob Herring
42de67fa80SRob Herring  "#address-cells":
43de67fa80SRob Herring    const: 2
44de67fa80SRob Herring
45de67fa80SRob Herring  "#size-cells":
46de67fa80SRob Herring    const: 1
47de67fa80SRob Herring
48de67fa80SRob Herring  reg:
49de67fa80SRob Herring    items:
50de67fa80SRob Herring      - description:
51de67fa80SRob Herring          Configuration registers for the host and sub-controllers.
52de67fa80SRob Herring          The three chip select regions are defined in 'ranges'.
53de67fa80SRob Herring
54de67fa80SRob Herring  clocks:
55de67fa80SRob Herring    minItems: 1
56de67fa80SRob Herring    maxItems: 2
57de67fa80SRob Herring
58de67fa80SRob Herring  clock-names:
59de67fa80SRob Herring    minItems: 1
60de67fa80SRob Herring    maxItems: 2
61de67fa80SRob Herring
62de67fa80SRob Herring  ranges:
63de67fa80SRob Herring    minItems: 1
64de67fa80SRob Herring    maxItems: 8
65de67fa80SRob Herring
66de67fa80SRob Herring  interrupts:
67de67fa80SRob Herring    minItems: 1
68de67fa80SRob Herring    items:
69de67fa80SRob Herring      - description: Combined or Memory interface 0 IRQ
70de67fa80SRob Herring      - description: Memory interface 1 IRQ
71de67fa80SRob Herring
72de67fa80SRob HerringpatternProperties:
73de67fa80SRob Herring  "@[0-7],[a-f0-9]+$":
74de67fa80SRob Herring    type: object
75*e62fc182SRob Herring    additionalProperties: true
76de67fa80SRob Herring    description: |
77de67fa80SRob Herring      The child device node represents the controller connected to the SMC
78de67fa80SRob Herring      bus. The controller can be a NAND controller or a pair of any memory
79de67fa80SRob Herring      mapped controllers such as NOR and SRAM controllers.
80de67fa80SRob Herring
81de67fa80SRob Herring    properties:
82de67fa80SRob Herring      compatible:
83de67fa80SRob Herring        description:
84de67fa80SRob Herring          Compatible of memory controller.
85de67fa80SRob Herring
86de67fa80SRob Herring      reg:
87de67fa80SRob Herring        items:
88de67fa80SRob Herring          - items:
89de67fa80SRob Herring              - description: |
90de67fa80SRob Herring                  Chip-select ID, as in the parent range property.
91de67fa80SRob Herring                minimum: 0
92de67fa80SRob Herring                maximum: 7
93de67fa80SRob Herring              - description: |
94de67fa80SRob Herring                  Offset of the memory region requested by the device.
95de67fa80SRob Herring              - description: |
96de67fa80SRob Herring                  Length of the memory region requested by the device.
97de67fa80SRob Herring
98de67fa80SRob Herring    required:
99de67fa80SRob Herring      - compatible
100de67fa80SRob Herring      - reg
101de67fa80SRob Herring
102de67fa80SRob Herringrequired:
103de67fa80SRob Herring  - compatible
104de67fa80SRob Herring  - reg
105de67fa80SRob Herring  - clock-names
106de67fa80SRob Herring  - clocks
107de67fa80SRob Herring
108de67fa80SRob HerringadditionalProperties: false
109de67fa80SRob Herring
110de67fa80SRob HerringallOf:
111de67fa80SRob Herring  - if:
112de67fa80SRob Herring      properties:
113de67fa80SRob Herring        compatible:
114de67fa80SRob Herring          contains:
115de67fa80SRob Herring            const: arm,pl354
116de67fa80SRob Herring    then:
117de67fa80SRob Herring      properties:
118de67fa80SRob Herring        clocks:
119de67fa80SRob Herring          # According to TRM, really should be 3 clocks
120de67fa80SRob Herring          maxItems: 1
121de67fa80SRob Herring
122de67fa80SRob Herring        clock-names:
123de67fa80SRob Herring          const: apb_pclk
124de67fa80SRob Herring
125de67fa80SRob Herring    else:
126de67fa80SRob Herring      properties:
127de67fa80SRob Herring        clocks:
128de67fa80SRob Herring          items:
129de67fa80SRob Herring            - description: clock for the memory device bus
130de67fa80SRob Herring            - description: main clock of the SMC
131de67fa80SRob Herring
132de67fa80SRob Herring        clock-names:
133de67fa80SRob Herring          items:
134de67fa80SRob Herring            - const: memclk
135de67fa80SRob Herring            - const: apb_pclk
136de67fa80SRob Herring
137de67fa80SRob Herringexamples:
138de67fa80SRob Herring  - |
139de67fa80SRob Herring    smcc: memory-controller@e000e000 {
140de67fa80SRob Herring      compatible = "arm,pl353-smc-r2p1", "arm,primecell";
141de67fa80SRob Herring      reg = <0xe000e000 0x0001000>;
142de67fa80SRob Herring      clock-names = "memclk", "apb_pclk";
143de67fa80SRob Herring      clocks = <&clkc 11>, <&clkc 44>;
144de67fa80SRob Herring      ranges = <0x0 0x0 0xe1000000 0x1000000 /* Nand CS region */
145de67fa80SRob Herring                0x1 0x0 0xe2000000 0x2000000 /* SRAM/NOR CS0 region */
146de67fa80SRob Herring                0x2 0x0 0xe4000000 0x2000000>; /* SRAM/NOR CS1 region */
147de67fa80SRob Herring      #address-cells = <2>;
148de67fa80SRob Herring      #size-cells = <1>;
149de67fa80SRob Herring
150de67fa80SRob Herring      nfc0: nand-controller@0,0 {
151de67fa80SRob Herring        compatible = "arm,pl353-nand-r2p1";
152de67fa80SRob Herring        reg = <0 0 0x1000000>;
153de67fa80SRob Herring        #address-cells = <1>;
154de67fa80SRob Herring        #size-cells = <0>;
155de67fa80SRob Herring      };
156de67fa80SRob Herring    };
157