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 9738bd22daSLinus 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 104*14b2157aSFlorian Fainelli reg-io-width: 105*14b2157aSFlorian Fainelli description: 106*14b2157aSFlorian Fainelli The size (in bytes) of the IO accesses that should be performed on the 107*14b2157aSFlorian Fainelli SRAM. 108*14b2157aSFlorian Fainelli enum: [1, 2, 4, 8] 109*14b2157aSFlorian Fainelli 110f6962991SKrzysztof Kozlowski pool: 111f6962991SKrzysztof Kozlowski description: 112f6962991SKrzysztof Kozlowski Indicates that the particular reserved SRAM area is addressable 113f6962991SKrzysztof Kozlowski and in use by another device or devices. 114f6962991SKrzysztof Kozlowski type: boolean 115f6962991SKrzysztof Kozlowski 116f6962991SKrzysztof Kozlowski export: 117f6962991SKrzysztof Kozlowski description: 118f6962991SKrzysztof Kozlowski Indicates that the reserved SRAM area may be accessed outside 119f6962991SKrzysztof Kozlowski of the kernel, e.g. by bootloader or userspace. 120f6962991SKrzysztof Kozlowski type: boolean 121f6962991SKrzysztof Kozlowski 122f6962991SKrzysztof Kozlowski protect-exec: 123f6962991SKrzysztof Kozlowski description: | 124f6962991SKrzysztof Kozlowski Same as 'pool' above but with the additional constraint that code 125f6962991SKrzysztof Kozlowski will be run from the region and that the memory is maintained as 126f6962991SKrzysztof Kozlowski read-only, executable during code execution. NOTE: This region must 127f6962991SKrzysztof Kozlowski be page aligned on start and end in order to properly allow 128f6962991SKrzysztof Kozlowski manipulation of the page attributes. 129f6962991SKrzysztof Kozlowski type: boolean 130f6962991SKrzysztof Kozlowski 131f6962991SKrzysztof Kozlowski label: 132f6962991SKrzysztof Kozlowski description: 133f6962991SKrzysztof Kozlowski The name for the reserved partition, if omitted, the label is taken 134f6962991SKrzysztof Kozlowski from the node name excluding the unit address. 135f6962991SKrzysztof Kozlowski 136f6962991SKrzysztof Kozlowski required: 137f6962991SKrzysztof Kozlowski - reg 138f6962991SKrzysztof Kozlowski 139f6962991SKrzysztof Kozlowski additionalProperties: false 140f6962991SKrzysztof Kozlowski 141f6962991SKrzysztof Kozlowskirequired: 142f6962991SKrzysztof Kozlowski - compatible 143f6962991SKrzysztof Kozlowski - reg 1442d4a22e7SJohan Jonker 1452d4a22e7SJohan Jonkerif: 14627e4a85cSRob Herring not: 1472d4a22e7SJohan Jonker properties: 1482d4a22e7SJohan Jonker compatible: 1492d4a22e7SJohan Jonker contains: 150d0fe6491SBjorn Andersson enum: 151d0fe6491SBjorn Andersson - qcom,rpm-msg-ram 152d0fe6491SBjorn Andersson - rockchip,rk3288-pmu-sram 15327e4a85cSRob Herringthen: 1542d4a22e7SJohan Jonker required: 155f6962991SKrzysztof Kozlowski - "#address-cells" 156f6962991SKrzysztof Kozlowski - "#size-cells" 157f6962991SKrzysztof Kozlowski - ranges 158f6962991SKrzysztof Kozlowski 159f6962991SKrzysztof KozlowskiadditionalProperties: false 160f6962991SKrzysztof Kozlowski 161f6962991SKrzysztof Kozlowskiexamples: 162f6962991SKrzysztof Kozlowski - | 163f6962991SKrzysztof Kozlowski sram@5c000000 { 164f6962991SKrzysztof Kozlowski compatible = "mmio-sram"; 165f6962991SKrzysztof Kozlowski reg = <0x5c000000 0x40000>; /* 256 KiB SRAM at address 0x5c000000 */ 166f6962991SKrzysztof Kozlowski 167f6962991SKrzysztof Kozlowski #address-cells = <1>; 168f6962991SKrzysztof Kozlowski #size-cells = <1>; 169f6962991SKrzysztof Kozlowski ranges = <0 0x5c000000 0x40000>; 170f6962991SKrzysztof Kozlowski 171f6962991SKrzysztof Kozlowski smp-sram@100 { 172f6962991SKrzysztof Kozlowski reg = <0x100 0x50>; 173f6962991SKrzysztof Kozlowski }; 174f6962991SKrzysztof Kozlowski 175f6962991SKrzysztof Kozlowski device-sram@1000 { 176f6962991SKrzysztof Kozlowski reg = <0x1000 0x1000>; 177f6962991SKrzysztof Kozlowski pool; 178f6962991SKrzysztof Kozlowski }; 179f6962991SKrzysztof Kozlowski 180f6962991SKrzysztof Kozlowski exported-sram@20000 { 181f6962991SKrzysztof Kozlowski reg = <0x20000 0x20000>; 182f6962991SKrzysztof Kozlowski export; 183f6962991SKrzysztof Kozlowski }; 184f6962991SKrzysztof Kozlowski }; 185e1679513SKrzysztof Kozlowski 186e1679513SKrzysztof Kozlowski - | 187e1679513SKrzysztof Kozlowski // Samsung SMP-capable Exynos SoCs use part of the SYSRAM for the bringup 188e1679513SKrzysztof Kozlowski // of the secondary cores. Once the core gets powered up it executes the 189e1679513SKrzysztof Kozlowski // code that is residing at some specific location of the SYSRAM. 190e1679513SKrzysztof Kozlowski // 191e1679513SKrzysztof Kozlowski // Therefore reserved section sub-nodes have to be added to the mmio-sram 192e1679513SKrzysztof Kozlowski // declaration. These nodes are of two types depending upon secure or 193e1679513SKrzysztof Kozlowski // non-secure execution environment. 194e1679513SKrzysztof Kozlowski sram@2020000 { 195e1679513SKrzysztof Kozlowski compatible = "mmio-sram"; 196e1679513SKrzysztof Kozlowski reg = <0x02020000 0x54000>; 197e1679513SKrzysztof Kozlowski #address-cells = <1>; 198e1679513SKrzysztof Kozlowski #size-cells = <1>; 199e1679513SKrzysztof Kozlowski ranges = <0 0x02020000 0x54000>; 200e1679513SKrzysztof Kozlowski 201e1679513SKrzysztof Kozlowski smp-sram@0 { 202e1679513SKrzysztof Kozlowski compatible = "samsung,exynos4210-sysram"; 203e1679513SKrzysztof Kozlowski reg = <0x0 0x1000>; 204e1679513SKrzysztof Kozlowski }; 205e1679513SKrzysztof Kozlowski 206e1679513SKrzysztof Kozlowski smp-sram@53000 { 207e1679513SKrzysztof Kozlowski compatible = "samsung,exynos4210-sysram-ns"; 208e1679513SKrzysztof Kozlowski reg = <0x53000 0x1000>; 209e1679513SKrzysztof Kozlowski }; 210e1679513SKrzysztof Kozlowski }; 2110f0bbb79SKrzysztof Kozlowski 2120f0bbb79SKrzysztof Kozlowski - | 2130f0bbb79SKrzysztof Kozlowski // Amlogic's SMP-capable SoCs use part of the sram for the bringup of the cores. 2140f0bbb79SKrzysztof Kozlowski // Once the core gets powered up it executes the code that is residing at a 2150f0bbb79SKrzysztof Kozlowski // specific location. 2160f0bbb79SKrzysztof Kozlowski // 2170f0bbb79SKrzysztof Kozlowski // Therefore a reserved section sub-node has to be added to the mmio-sram 2180f0bbb79SKrzysztof Kozlowski // declaration. 2190f0bbb79SKrzysztof Kozlowski sram@d9000000 { 2200f0bbb79SKrzysztof Kozlowski compatible = "mmio-sram"; 2210f0bbb79SKrzysztof Kozlowski reg = <0xd9000000 0x20000>; 2220f0bbb79SKrzysztof Kozlowski #address-cells = <1>; 2230f0bbb79SKrzysztof Kozlowski #size-cells = <1>; 2240f0bbb79SKrzysztof Kozlowski ranges = <0 0xd9000000 0x20000>; 2250f0bbb79SKrzysztof Kozlowski 2260f0bbb79SKrzysztof Kozlowski smp-sram@1ff80 { 2270f0bbb79SKrzysztof Kozlowski compatible = "amlogic,meson8b-smp-sram"; 2280f0bbb79SKrzysztof Kozlowski reg = <0x1ff80 0x8>; 2290f0bbb79SKrzysztof Kozlowski }; 2300f0bbb79SKrzysztof Kozlowski }; 2310759b09eSKrzysztof Kozlowski 2320759b09eSKrzysztof Kozlowski - | 2330759b09eSKrzysztof Kozlowski sram@e63c0000 { 2340759b09eSKrzysztof Kozlowski compatible = "mmio-sram"; 2350759b09eSKrzysztof Kozlowski reg = <0xe63c0000 0x1000>; 2360759b09eSKrzysztof Kozlowski #address-cells = <1>; 2370759b09eSKrzysztof Kozlowski #size-cells = <1>; 2380759b09eSKrzysztof Kozlowski ranges = <0 0xe63c0000 0x1000>; 2390759b09eSKrzysztof Kozlowski 2400759b09eSKrzysztof Kozlowski smp-sram@0 { 2410759b09eSKrzysztof Kozlowski compatible = "renesas,smp-sram"; 2420759b09eSKrzysztof Kozlowski reg = <0 0x10>; 2430759b09eSKrzysztof Kozlowski }; 2440759b09eSKrzysztof Kozlowski }; 2451a4d47afSKrzysztof Kozlowski 2461a4d47afSKrzysztof Kozlowski - | 2471a4d47afSKrzysztof Kozlowski sram@10080000 { 2481a4d47afSKrzysztof Kozlowski compatible = "mmio-sram"; 2491a4d47afSKrzysztof Kozlowski reg = <0x10080000 0x10000>; 2501a4d47afSKrzysztof Kozlowski #address-cells = <1>; 2511a4d47afSKrzysztof Kozlowski #size-cells = <1>; 2521a4d47afSKrzysztof Kozlowski ranges; 2531a4d47afSKrzysztof Kozlowski 2541a4d47afSKrzysztof Kozlowski smp-sram@10080000 { 2551a4d47afSKrzysztof Kozlowski compatible = "rockchip,rk3066-smp-sram"; 2561a4d47afSKrzysztof Kozlowski reg = <0x10080000 0x50>; 2571a4d47afSKrzysztof Kozlowski }; 2581a4d47afSKrzysztof Kozlowski }; 259517bcde2SKrzysztof Kozlowski 260517bcde2SKrzysztof Kozlowski - | 2612d4a22e7SJohan Jonker // Rockchip's rk3288 SoC uses the sram of pmu to store the function of 2622d4a22e7SJohan Jonker // resume from maskrom(the 1st level loader). This is a common use of 2632d4a22e7SJohan Jonker // the "pmu-sram" because it keeps power even in low power states 2642d4a22e7SJohan Jonker // in the system. 2652d4a22e7SJohan Jonker sram@ff720000 { 2662d4a22e7SJohan Jonker compatible = "rockchip,rk3288-pmu-sram", "mmio-sram"; 2672d4a22e7SJohan Jonker reg = <0xff720000 0x1000>; 2682d4a22e7SJohan Jonker }; 2692d4a22e7SJohan Jonker 2702d4a22e7SJohan Jonker - | 271517bcde2SKrzysztof Kozlowski // Allwinner's A80 SoC uses part of the secure sram for hotplugging of the 272517bcde2SKrzysztof Kozlowski // primary core (cpu0). Once the core gets powered up it checks if a magic 273517bcde2SKrzysztof Kozlowski // value is set at a specific location. If it is then the BROM will jump 274517bcde2SKrzysztof Kozlowski // to the software entry address, instead of executing a standard boot. 275517bcde2SKrzysztof Kozlowski // 276517bcde2SKrzysztof Kozlowski // Also there are no "secure-only" properties. The implementation should 277517bcde2SKrzysztof Kozlowski // check if this SRAM is usable first. 278517bcde2SKrzysztof Kozlowski sram@20000 { 279517bcde2SKrzysztof Kozlowski // 256 KiB secure SRAM at 0x20000 280517bcde2SKrzysztof Kozlowski compatible = "mmio-sram"; 281517bcde2SKrzysztof Kozlowski reg = <0x00020000 0x40000>; 282517bcde2SKrzysztof Kozlowski #address-cells = <1>; 283517bcde2SKrzysztof Kozlowski #size-cells = <1>; 284517bcde2SKrzysztof Kozlowski ranges = <0 0x00020000 0x40000>; 285517bcde2SKrzysztof Kozlowski 286517bcde2SKrzysztof Kozlowski smp-sram@1000 { 287517bcde2SKrzysztof Kozlowski // This is checked by BROM to determine if 288517bcde2SKrzysztof Kozlowski // cpu0 should jump to SMP entry vector 289517bcde2SKrzysztof Kozlowski compatible = "allwinner,sun9i-a80-smp-sram"; 290517bcde2SKrzysztof Kozlowski reg = <0x1000 0x8>; 291517bcde2SKrzysztof Kozlowski }; 292517bcde2SKrzysztof Kozlowski }; 2934345dda5SKrzysztof Kozlowski 2944345dda5SKrzysztof Kozlowski - | 2954345dda5SKrzysztof Kozlowski sram@0 { 2964345dda5SKrzysztof Kozlowski compatible = "mmio-sram"; 2974345dda5SKrzysztof Kozlowski reg = <0x0 0x10000>; 2984345dda5SKrzysztof Kozlowski #address-cells = <1>; 2994345dda5SKrzysztof Kozlowski #size-cells = <1>; 3004345dda5SKrzysztof Kozlowski ranges = <0 0x0 0x10000>; 3014345dda5SKrzysztof Kozlowski 3024345dda5SKrzysztof Kozlowski smp-sram@f100 { 3034345dda5SKrzysztof Kozlowski compatible = "socionext,milbeaut-smp-sram"; 3044345dda5SKrzysztof Kozlowski reg = <0xf100 0x20>; 3054345dda5SKrzysztof Kozlowski }; 3064345dda5SKrzysztof Kozlowski }; 307