xref: /openbmc/linux/Documentation/devicetree/bindings/sram/sram.yaml (revision 2612e3bbc0386368a850140a6c9b990cd496a5ec)
1f6962991SKrzysztof Kozlowski# SPDX-License-Identifier: GPL-2.0
2f6962991SKrzysztof Kozlowski%YAML 1.2
3f6962991SKrzysztof Kozlowski---
4f6962991SKrzysztof Kozlowski$id: http://devicetree.org/schemas/sram/sram.yaml#
5f6962991SKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml#
6f6962991SKrzysztof Kozlowski
7f6962991SKrzysztof Kozlowskititle: Generic on-chip SRAM
8f6962991SKrzysztof Kozlowski
9f6962991SKrzysztof Kozlowskimaintainers:
10f6962991SKrzysztof Kozlowski  - Rob Herring <robh@kernel.org>
11f6962991SKrzysztof Kozlowski
12f6962991SKrzysztof Kozlowskidescription: |+
13f6962991SKrzysztof Kozlowski  Simple IO memory regions to be managed by the genalloc API.
14f6962991SKrzysztof Kozlowski
15f6962991SKrzysztof Kozlowski  Each child of the sram node specifies a region of reserved memory. Each
16f6962991SKrzysztof Kozlowski  child node should use a 'reg' property to specify a specific range of
17f6962991SKrzysztof Kozlowski  reserved memory.
18f6962991SKrzysztof Kozlowski
19f6962991SKrzysztof Kozlowski  Following the generic-names recommended practice, node names should
20f6962991SKrzysztof Kozlowski  reflect the purpose of the node. Unit address (@<address>) should be
21f6962991SKrzysztof Kozlowski  appended to the name.
22f6962991SKrzysztof Kozlowski
23f6962991SKrzysztof Kozlowskiproperties:
24f6962991SKrzysztof Kozlowski  $nodename:
25f6962991SKrzysztof Kozlowski    pattern: "^sram(@.*)?"
26f6962991SKrzysztof Kozlowski
27f6962991SKrzysztof Kozlowski  compatible:
28f6962991SKrzysztof Kozlowski    contains:
29f6962991SKrzysztof Kozlowski      enum:
30f6962991SKrzysztof Kozlowski        - mmio-sram
31d6178370SSudeep Holla        - amlogic,meson-gxbb-sram
32cba0c95bSSudeep Holla        - arm,juno-sram-ns
33f6962991SKrzysztof Kozlowski        - atmel,sama5d2-securam
34d9203d08SThierry Reding        - nvidia,tegra186-sysram
35d9203d08SThierry Reding        - nvidia,tegra194-sysram
36d9203d08SThierry Reding        - nvidia,tegra234-sysram
37d0fe6491SBjorn Andersson        - qcom,rpm-msg-ram
382d4a22e7SJohan Jonker        - rockchip,rk3288-pmu-sram
39f6962991SKrzysztof Kozlowski
40f6962991SKrzysztof Kozlowski  reg:
41f6962991SKrzysztof Kozlowski    maxItems: 1
42f6962991SKrzysztof Kozlowski
43f6962991SKrzysztof Kozlowski  clocks:
440499220dSRob Herring    maxItems: 1
45f6962991SKrzysztof Kozlowski    description:
46f6962991SKrzysztof Kozlowski      A list of phandle and clock specifier pair that controls the single
47f6962991SKrzysztof Kozlowski      SRAM clock.
48f6962991SKrzysztof Kozlowski
49f6962991SKrzysztof Kozlowski  "#address-cells":
50f6962991SKrzysztof Kozlowski    const: 1
51f6962991SKrzysztof Kozlowski
52f6962991SKrzysztof Kozlowski  "#size-cells":
53f6962991SKrzysztof Kozlowski    const: 1
54f6962991SKrzysztof Kozlowski
55f6962991SKrzysztof Kozlowski  ranges:
560499220dSRob Herring    maxItems: 1
57f6962991SKrzysztof Kozlowski    description:
58f6962991SKrzysztof Kozlowski      Should translate from local addresses within the sram to bus addresses.
59f6962991SKrzysztof Kozlowski
60f6962991SKrzysztof Kozlowski  no-memory-wc:
61f6962991SKrzysztof Kozlowski    description:
62f6962991SKrzysztof Kozlowski      The flag indicating, that SRAM memory region has not to be remapped
63f6962991SKrzysztof Kozlowski      as write combining. WC is used by default.
64f6962991SKrzysztof Kozlowski    type: boolean
65f6962991SKrzysztof Kozlowski
66f6962991SKrzysztof KozlowskipatternProperties:
67f99e2bf5SNishanth Menon  "^([a-z0-9]*-)?sram(-section)?@[a-f0-9]+$":
68f6962991SKrzysztof Kozlowski    type: object
69f6962991SKrzysztof Kozlowski    description:
70f6962991SKrzysztof Kozlowski      Each child of the sram node specifies a region of reserved memory.
71f6962991SKrzysztof Kozlowski    properties:
72f6962991SKrzysztof Kozlowski      compatible:
73f6962991SKrzysztof Kozlowski        description:
74f6962991SKrzysztof Kozlowski          Should contain a vendor specific string in the form
75f6962991SKrzysztof Kozlowski          <vendor>,[<device>-]<usage>
76df45bdd9SMaxime Ripard        contains:
77e1679513SKrzysztof Kozlowski          enum:
783538129cSMaxime Ripard            - allwinner,sun4i-a10-sram-a3-a4
793538129cSMaxime Ripard            - allwinner,sun4i-a10-sram-c1
803538129cSMaxime Ripard            - allwinner,sun4i-a10-sram-d
81517bcde2SKrzysztof Kozlowski            - allwinner,sun9i-a80-smp-sram
823538129cSMaxime Ripard            - allwinner,sun50i-a64-sram-c
835d3f5d46SMartin Blumenstingl            - amlogic,meson8-ao-arc-sram
845d3f5d46SMartin Blumenstingl            - amlogic,meson8b-ao-arc-sram
850f0bbb79SKrzysztof Kozlowski            - amlogic,meson8-smp-sram
860f0bbb79SKrzysztof Kozlowski            - amlogic,meson8b-smp-sram
87133bf33eSNeil Armstrong            - amlogic,meson-gxbb-scp-shmem
88133bf33eSNeil Armstrong            - amlogic,meson-axg-scp-shmem
89cba0c95bSSudeep Holla            - arm,juno-scp-shmem
904041e842SSudeep Holla            - arm,scmi-shmem
917bf063a1SSudeep Holla            - arm,scp-shmem
920759b09eSKrzysztof Kozlowski            - renesas,smp-sram
931a4d47afSKrzysztof Kozlowski            - rockchip,rk3066-smp-sram
94e1679513SKrzysztof Kozlowski            - samsung,exynos4210-sysram
95e1679513SKrzysztof Kozlowski            - samsung,exynos4210-sysram-ns
964345dda5SKrzysztof Kozlowski            - socionext,milbeaut-smp-sram
97*38bd22daSLinus Walleij            - stericsson,u8500-esram
98f6962991SKrzysztof Kozlowski
99f6962991SKrzysztof Kozlowski      reg:
100f6962991SKrzysztof Kozlowski        description:
101f6962991SKrzysztof Kozlowski          IO mem address range, relative to the SRAM range.
102f6962991SKrzysztof Kozlowski        maxItems: 1
103f6962991SKrzysztof Kozlowski
104f6962991SKrzysztof Kozlowski      pool:
105f6962991SKrzysztof Kozlowski        description:
106f6962991SKrzysztof Kozlowski          Indicates that the particular reserved SRAM area is addressable
107f6962991SKrzysztof Kozlowski          and in use by another device or devices.
108f6962991SKrzysztof Kozlowski        type: boolean
109f6962991SKrzysztof Kozlowski
110f6962991SKrzysztof Kozlowski      export:
111f6962991SKrzysztof Kozlowski        description:
112f6962991SKrzysztof Kozlowski          Indicates that the reserved SRAM area may be accessed outside
113f6962991SKrzysztof Kozlowski          of the kernel, e.g. by bootloader or userspace.
114f6962991SKrzysztof Kozlowski        type: boolean
115f6962991SKrzysztof Kozlowski
116f6962991SKrzysztof Kozlowski      protect-exec:
117f6962991SKrzysztof Kozlowski        description: |
118f6962991SKrzysztof Kozlowski          Same as 'pool' above but with the additional constraint that code
119f6962991SKrzysztof Kozlowski          will be run from the region and that the memory is maintained as
120f6962991SKrzysztof Kozlowski          read-only, executable during code execution. NOTE: This region must
121f6962991SKrzysztof Kozlowski          be page aligned on start and end in order to properly allow
122f6962991SKrzysztof Kozlowski          manipulation of the page attributes.
123f6962991SKrzysztof Kozlowski        type: boolean
124f6962991SKrzysztof Kozlowski
125f6962991SKrzysztof Kozlowski      label:
126f6962991SKrzysztof Kozlowski        description:
127f6962991SKrzysztof Kozlowski          The name for the reserved partition, if omitted, the label is taken
128f6962991SKrzysztof Kozlowski          from the node name excluding the unit address.
129f6962991SKrzysztof Kozlowski
130f6962991SKrzysztof Kozlowski    required:
131f6962991SKrzysztof Kozlowski      - reg
132f6962991SKrzysztof Kozlowski
133f6962991SKrzysztof Kozlowski    additionalProperties: false
134f6962991SKrzysztof Kozlowski
135f6962991SKrzysztof Kozlowskirequired:
136f6962991SKrzysztof Kozlowski  - compatible
137f6962991SKrzysztof Kozlowski  - reg
1382d4a22e7SJohan Jonker
1392d4a22e7SJohan Jonkerif:
14027e4a85cSRob Herring  not:
1412d4a22e7SJohan Jonker    properties:
1422d4a22e7SJohan Jonker      compatible:
1432d4a22e7SJohan Jonker        contains:
144d0fe6491SBjorn Andersson          enum:
145d0fe6491SBjorn Andersson            - qcom,rpm-msg-ram
146d0fe6491SBjorn Andersson            - rockchip,rk3288-pmu-sram
14727e4a85cSRob Herringthen:
1482d4a22e7SJohan Jonker  required:
149f6962991SKrzysztof Kozlowski    - "#address-cells"
150f6962991SKrzysztof Kozlowski    - "#size-cells"
151f6962991SKrzysztof Kozlowski    - ranges
152f6962991SKrzysztof Kozlowski
153f6962991SKrzysztof KozlowskiadditionalProperties: false
154f6962991SKrzysztof Kozlowski
155f6962991SKrzysztof Kozlowskiexamples:
156f6962991SKrzysztof Kozlowski  - |
157f6962991SKrzysztof Kozlowski    sram@5c000000 {
158f6962991SKrzysztof Kozlowski        compatible = "mmio-sram";
159f6962991SKrzysztof Kozlowski        reg = <0x5c000000 0x40000>; /* 256 KiB SRAM at address 0x5c000000 */
160f6962991SKrzysztof Kozlowski
161f6962991SKrzysztof Kozlowski        #address-cells = <1>;
162f6962991SKrzysztof Kozlowski        #size-cells = <1>;
163f6962991SKrzysztof Kozlowski        ranges = <0 0x5c000000 0x40000>;
164f6962991SKrzysztof Kozlowski
165f6962991SKrzysztof Kozlowski        smp-sram@100 {
166f6962991SKrzysztof Kozlowski            reg = <0x100 0x50>;
167f6962991SKrzysztof Kozlowski        };
168f6962991SKrzysztof Kozlowski
169f6962991SKrzysztof Kozlowski        device-sram@1000 {
170f6962991SKrzysztof Kozlowski            reg = <0x1000 0x1000>;
171f6962991SKrzysztof Kozlowski            pool;
172f6962991SKrzysztof Kozlowski        };
173f6962991SKrzysztof Kozlowski
174f6962991SKrzysztof Kozlowski        exported-sram@20000 {
175f6962991SKrzysztof Kozlowski            reg = <0x20000 0x20000>;
176f6962991SKrzysztof Kozlowski            export;
177f6962991SKrzysztof Kozlowski        };
178f6962991SKrzysztof Kozlowski    };
179e1679513SKrzysztof Kozlowski
180e1679513SKrzysztof Kozlowski  - |
181e1679513SKrzysztof Kozlowski    // Samsung SMP-capable Exynos SoCs use part of the SYSRAM for the bringup
182e1679513SKrzysztof Kozlowski    // of the secondary cores. Once the core gets powered up it executes the
183e1679513SKrzysztof Kozlowski    // code that is residing at some specific location of the SYSRAM.
184e1679513SKrzysztof Kozlowski    //
185e1679513SKrzysztof Kozlowski    // Therefore reserved section sub-nodes have to be added to the mmio-sram
186e1679513SKrzysztof Kozlowski    // declaration. These nodes are of two types depending upon secure or
187e1679513SKrzysztof Kozlowski    // non-secure execution environment.
188e1679513SKrzysztof Kozlowski    sram@2020000 {
189e1679513SKrzysztof Kozlowski        compatible = "mmio-sram";
190e1679513SKrzysztof Kozlowski        reg = <0x02020000 0x54000>;
191e1679513SKrzysztof Kozlowski        #address-cells = <1>;
192e1679513SKrzysztof Kozlowski        #size-cells = <1>;
193e1679513SKrzysztof Kozlowski        ranges = <0 0x02020000 0x54000>;
194e1679513SKrzysztof Kozlowski
195e1679513SKrzysztof Kozlowski        smp-sram@0 {
196e1679513SKrzysztof Kozlowski            compatible = "samsung,exynos4210-sysram";
197e1679513SKrzysztof Kozlowski            reg = <0x0 0x1000>;
198e1679513SKrzysztof Kozlowski        };
199e1679513SKrzysztof Kozlowski
200e1679513SKrzysztof Kozlowski        smp-sram@53000 {
201e1679513SKrzysztof Kozlowski            compatible = "samsung,exynos4210-sysram-ns";
202e1679513SKrzysztof Kozlowski            reg = <0x53000 0x1000>;
203e1679513SKrzysztof Kozlowski        };
204e1679513SKrzysztof Kozlowski    };
2050f0bbb79SKrzysztof Kozlowski
2060f0bbb79SKrzysztof Kozlowski  - |
2070f0bbb79SKrzysztof Kozlowski    // Amlogic's SMP-capable SoCs use part of the sram for the bringup of the cores.
2080f0bbb79SKrzysztof Kozlowski    // Once the core gets powered up it executes the code that is residing at a
2090f0bbb79SKrzysztof Kozlowski    // specific location.
2100f0bbb79SKrzysztof Kozlowski    //
2110f0bbb79SKrzysztof Kozlowski    // Therefore a reserved section sub-node has to be added to the mmio-sram
2120f0bbb79SKrzysztof Kozlowski    // declaration.
2130f0bbb79SKrzysztof Kozlowski    sram@d9000000 {
2140f0bbb79SKrzysztof Kozlowski        compatible = "mmio-sram";
2150f0bbb79SKrzysztof Kozlowski        reg = <0xd9000000 0x20000>;
2160f0bbb79SKrzysztof Kozlowski        #address-cells = <1>;
2170f0bbb79SKrzysztof Kozlowski        #size-cells = <1>;
2180f0bbb79SKrzysztof Kozlowski        ranges = <0 0xd9000000 0x20000>;
2190f0bbb79SKrzysztof Kozlowski
2200f0bbb79SKrzysztof Kozlowski        smp-sram@1ff80 {
2210f0bbb79SKrzysztof Kozlowski            compatible = "amlogic,meson8b-smp-sram";
2220f0bbb79SKrzysztof Kozlowski            reg = <0x1ff80 0x8>;
2230f0bbb79SKrzysztof Kozlowski        };
2240f0bbb79SKrzysztof Kozlowski    };
2250759b09eSKrzysztof Kozlowski
2260759b09eSKrzysztof Kozlowski  - |
2270759b09eSKrzysztof Kozlowski    sram@e63c0000 {
2280759b09eSKrzysztof Kozlowski        compatible = "mmio-sram";
2290759b09eSKrzysztof Kozlowski        reg = <0xe63c0000 0x1000>;
2300759b09eSKrzysztof Kozlowski        #address-cells = <1>;
2310759b09eSKrzysztof Kozlowski        #size-cells = <1>;
2320759b09eSKrzysztof Kozlowski        ranges = <0 0xe63c0000 0x1000>;
2330759b09eSKrzysztof Kozlowski
2340759b09eSKrzysztof Kozlowski        smp-sram@0 {
2350759b09eSKrzysztof Kozlowski            compatible = "renesas,smp-sram";
2360759b09eSKrzysztof Kozlowski            reg = <0 0x10>;
2370759b09eSKrzysztof Kozlowski        };
2380759b09eSKrzysztof Kozlowski    };
2391a4d47afSKrzysztof Kozlowski
2401a4d47afSKrzysztof Kozlowski  - |
2411a4d47afSKrzysztof Kozlowski    sram@10080000 {
2421a4d47afSKrzysztof Kozlowski        compatible = "mmio-sram";
2431a4d47afSKrzysztof Kozlowski        reg = <0x10080000 0x10000>;
2441a4d47afSKrzysztof Kozlowski        #address-cells = <1>;
2451a4d47afSKrzysztof Kozlowski        #size-cells = <1>;
2461a4d47afSKrzysztof Kozlowski        ranges;
2471a4d47afSKrzysztof Kozlowski
2481a4d47afSKrzysztof Kozlowski        smp-sram@10080000 {
2491a4d47afSKrzysztof Kozlowski            compatible = "rockchip,rk3066-smp-sram";
2501a4d47afSKrzysztof Kozlowski            reg = <0x10080000 0x50>;
2511a4d47afSKrzysztof Kozlowski        };
2521a4d47afSKrzysztof Kozlowski    };
253517bcde2SKrzysztof Kozlowski
254517bcde2SKrzysztof Kozlowski  - |
2552d4a22e7SJohan Jonker    // Rockchip's rk3288 SoC uses the sram of pmu to store the function of
2562d4a22e7SJohan Jonker    // resume from maskrom(the 1st level loader). This is a common use of
2572d4a22e7SJohan Jonker    // the "pmu-sram" because it keeps power even in low power states
2582d4a22e7SJohan Jonker    // in the system.
2592d4a22e7SJohan Jonker    sram@ff720000 {
2602d4a22e7SJohan Jonker      compatible = "rockchip,rk3288-pmu-sram", "mmio-sram";
2612d4a22e7SJohan Jonker      reg = <0xff720000 0x1000>;
2622d4a22e7SJohan Jonker    };
2632d4a22e7SJohan Jonker
2642d4a22e7SJohan Jonker  - |
265517bcde2SKrzysztof Kozlowski    // Allwinner's A80 SoC uses part of the secure sram for hotplugging of the
266517bcde2SKrzysztof Kozlowski    // primary core (cpu0). Once the core gets powered up it checks if a magic
267517bcde2SKrzysztof Kozlowski    // value is set at a specific location. If it is then the BROM will jump
268517bcde2SKrzysztof Kozlowski    // to the software entry address, instead of executing a standard boot.
269517bcde2SKrzysztof Kozlowski    //
270517bcde2SKrzysztof Kozlowski    // Also there are no "secure-only" properties. The implementation should
271517bcde2SKrzysztof Kozlowski    // check if this SRAM is usable first.
272517bcde2SKrzysztof Kozlowski    sram@20000 {
273517bcde2SKrzysztof Kozlowski        // 256 KiB secure SRAM at 0x20000
274517bcde2SKrzysztof Kozlowski        compatible = "mmio-sram";
275517bcde2SKrzysztof Kozlowski        reg = <0x00020000 0x40000>;
276517bcde2SKrzysztof Kozlowski        #address-cells = <1>;
277517bcde2SKrzysztof Kozlowski        #size-cells = <1>;
278517bcde2SKrzysztof Kozlowski        ranges = <0 0x00020000 0x40000>;
279517bcde2SKrzysztof Kozlowski
280517bcde2SKrzysztof Kozlowski        smp-sram@1000 {
281517bcde2SKrzysztof Kozlowski            // This is checked by BROM to determine if
282517bcde2SKrzysztof Kozlowski            // cpu0 should jump to SMP entry vector
283517bcde2SKrzysztof Kozlowski            compatible = "allwinner,sun9i-a80-smp-sram";
284517bcde2SKrzysztof Kozlowski            reg = <0x1000 0x8>;
285517bcde2SKrzysztof Kozlowski        };
286517bcde2SKrzysztof Kozlowski    };
2874345dda5SKrzysztof Kozlowski
2884345dda5SKrzysztof Kozlowski  - |
2894345dda5SKrzysztof Kozlowski    sram@0 {
2904345dda5SKrzysztof Kozlowski        compatible = "mmio-sram";
2914345dda5SKrzysztof Kozlowski        reg = <0x0 0x10000>;
2924345dda5SKrzysztof Kozlowski        #address-cells = <1>;
2934345dda5SKrzysztof Kozlowski        #size-cells = <1>;
2944345dda5SKrzysztof Kozlowski        ranges = <0 0x0 0x10000>;
2954345dda5SKrzysztof Kozlowski
2964345dda5SKrzysztof Kozlowski        smp-sram@f100 {
2974345dda5SKrzysztof Kozlowski            compatible = "socionext,milbeaut-smp-sram";
2984345dda5SKrzysztof Kozlowski            reg = <0xf100 0x20>;
2994345dda5SKrzysztof Kozlowski        };
3004345dda5SKrzysztof Kozlowski    };
301