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