1ARM Broadcom STB platforms Device Tree Bindings 2----------------------------------------------- 3Boards with Broadcom Brahma15 ARM-based BCMxxxx (generally BCM7xxx variants) 4SoC shall have the following DT organization: 5 6Required root node properties: 7 - compatible: "brcm,bcm<chip_id>", "brcm,brcmstb" 8 9example: 10/ { 11 #address-cells = <2>; 12 #size-cells = <2>; 13 model = "Broadcom STB (bcm7445)"; 14 compatible = "brcm,bcm7445", "brcm,brcmstb"; 15 16Further, syscon nodes that map platform-specific registers used for general 17system control is required: 18 19 - compatible: "brcm,bcm<chip_id>-sun-top-ctrl", "syscon" 20 - compatible: "brcm,bcm<chip_id>-hif-cpubiuctrl", "syscon" 21 - compatible: "brcm,bcm<chip_id>-hif-continuation", "syscon" 22 23hif-cpubiuctrl node 24------------------- 25SoCs with Broadcom Brahma15 ARM-based CPUs have a specific Bus Interface Unit 26(BIU) block which controls and interfaces the CPU complex to the different 27Memory Controller Ports (MCP), one per memory controller (MEMC). This BIU block 28offers a feature called Write Pairing which consists in collapsing two adjacent 29cache lines into a single (bursted) write transaction towards the memory 30controller (MEMC) to maximize write bandwidth. 31 32Required properties: 33 34 - compatible: must be "brcm,bcm7445-hif-cpubiuctrl", "syscon" 35 36Optional properties: 37 38 - brcm,write-pairing: 39 Boolean property, which when present indicates that the chip 40 supports write-pairing. 41 42example: 43 rdb { 44 #address-cells = <1>; 45 #size-cells = <1>; 46 compatible = "simple-bus"; 47 ranges = <0 0x00 0xf0000000 0x1000000>; 48 49 sun_top_ctrl: syscon@404000 { 50 compatible = "brcm,bcm7445-sun-top-ctrl", "syscon"; 51 reg = <0x404000 0x51c>; 52 }; 53 54 hif_cpubiuctrl: syscon@3e2400 { 55 compatible = "brcm,bcm7445-hif-cpubiuctrl", "syscon"; 56 reg = <0x3e2400 0x5b4>; 57 brcm,write-pairing; 58 }; 59 60 hif_continuation: syscon@452000 { 61 compatible = "brcm,bcm7445-hif-continuation", "syscon"; 62 reg = <0x452000 0x100>; 63 }; 64 }; 65 66Nodes that allow for support of SMP initialization and reboot are required: 67 68smpboot 69------- 70Required properties: 71 72 - compatible 73 The string "brcm,brcmstb-smpboot". 74 75 - syscon-cpu 76 A phandle / integer array property which lets the BSP know the location 77 of certain CPU power-on registers. 78 79 The layout of the property is as follows: 80 o a phandle to the "hif_cpubiuctrl" syscon node 81 o offset to the base CPU power zone register 82 o offset to the base CPU reset register 83 84 - syscon-cont 85 A phandle pointing to the syscon node which describes the CPU boot 86 continuation registers. 87 o a phandle to the "hif_continuation" syscon node 88 89example: 90 smpboot { 91 compatible = "brcm,brcmstb-smpboot"; 92 syscon-cpu = <&hif_cpubiuctrl 0x88 0x178>; 93 syscon-cont = <&hif_continuation>; 94 }; 95 96reboot 97------- 98Required properties 99 100 - compatible 101 The string property "brcm,brcmstb-reboot" for 40nm/28nm chips with 102 the new SYS_CTRL interface, or "brcm,bcm7038-reboot" for 65nm 103 chips with the old SUN_TOP_CTRL interface. 104 105 - syscon 106 A phandle / integer array that points to the syscon node which describes 107 the general system reset registers. 108 o a phandle to "sun_top_ctrl" 109 o offset to the "reset source enable" register 110 o offset to the "software master reset" register 111 112example: 113 reboot { 114 compatible = "brcm,brcmstb-reboot"; 115 syscon = <&sun_top_ctrl 0x304 0x308>; 116 }; 117 118 119 120Power management 121---------------- 122 123For power management (particularly, S2/S3/S5 system suspend), the following SoC 124components are needed: 125 126= Always-On control block (AON CTRL) 127 128This hardware provides control registers for the "always-on" (even in low-power 129modes) hardware, such as the Power Management State Machine (PMSM). 130 131Required properties: 132- compatible : should contain "brcm,brcmstb-aon-ctrl" 133- reg : the register start and length for the AON CTRL block 134 135Example: 136 137aon-ctrl@410000 { 138 compatible = "brcm,brcmstb-aon-ctrl"; 139 reg = <0x410000 0x400>; 140}; 141 142= Memory controllers 143 144A Broadcom STB SoC typically has a number of independent memory controllers, 145each of which may have several associated hardware blocks, which are versioned 146independently (control registers, DDR PHYs, etc.). One might consider 147describing these controllers as a parent "memory controllers" block, which 148contains N sub-nodes (one for each controller in the system), each of which is 149associated with a number of hardware register resources (e.g., its PHY). See 150the example device tree snippet below. 151 152== MEMC (MEMory Controller) 153 154Represents a single memory controller instance. 155 156Required properties: 157- compatible : should contain "brcm,brcmstb-memc" and "simple-bus" 158 159Should contain subnodes for any of the following relevant hardware resources: 160 161== DDR PHY control 162 163Control registers for this memory controller's DDR PHY. 164 165Required properties: 166- compatible : should contain one of these 167 "brcm,brcmstb-ddr-phy-v71.1" 168 "brcm,brcmstb-ddr-phy-v72.0" 169 "brcm,brcmstb-ddr-phy-v225.1" 170 "brcm,brcmstb-ddr-phy-v240.1" 171 "brcm,brcmstb-ddr-phy-v240.2" 172 173- reg : the DDR PHY register range 174 175== DDR SHIMPHY 176 177Control registers for this memory controller's DDR SHIMPHY. 178 179Required properties: 180- compatible : should contain "brcm,brcmstb-ddr-shimphy-v1.0" 181- reg : the DDR SHIMPHY register range 182 183== MEMC DDR control 184 185Sequencer DRAM parameters and control registers. Used for Self-Refresh 186Power-Down (SRPD), among other things. 187 188Required properties: 189- compatible : should contain one of these 190 "brcm,brcmstb-memc-ddr-rev-b.2.2" 191 "brcm,brcmstb-memc-ddr" 192- reg : the MEMC DDR register range 193 194Example: 195 196memory_controllers { 197 ranges; 198 compatible = "simple-bus"; 199 200 memc@0 { 201 compatible = "brcm,brcmstb-memc", "simple-bus"; 202 ranges; 203 204 ddr-phy@f1106000 { 205 compatible = "brcm,brcmstb-ddr-phy-v240.1"; 206 reg = <0xf1106000 0x21c>; 207 }; 208 209 shimphy@f1108000 { 210 compatible = "brcm,brcmstb-ddr-shimphy-v1.0"; 211 reg = <0xf1108000 0xe4>; 212 }; 213 214 memc-ddr@f1102000 { 215 reg = <0xf1102000 0x800>; 216 compatible = "brcm,brcmstb-memc-ddr"; 217 }; 218 }; 219 220 memc@1 { 221 compatible = "brcm,brcmstb-memc", "simple-bus"; 222 ranges; 223 224 ddr-phy@f1186000 { 225 compatible = "brcm,brcmstb-ddr-phy-v240.1"; 226 reg = <0xf1186000 0x21c>; 227 }; 228 229 shimphy@f1188000 { 230 compatible = "brcm,brcmstb-ddr-shimphy-v1.0"; 231 reg = <0xf1188000 0xe4>; 232 }; 233 234 memc-ddr@f1182000 { 235 reg = <0xf1182000 0x800>; 236 compatible = "brcm,brcmstb-memc-ddr"; 237 }; 238 }; 239 240 memc@2 { 241 compatible = "brcm,brcmstb-memc", "simple-bus"; 242 ranges; 243 244 ddr-phy@f1206000 { 245 compatible = "brcm,brcmstb-ddr-phy-v240.1"; 246 reg = <0xf1206000 0x21c>; 247 }; 248 249 shimphy@f1208000 { 250 compatible = "brcm,brcmstb-ddr-shimphy-v1.0"; 251 reg = <0xf1208000 0xe4>; 252 }; 253 254 memc-ddr@f1202000 { 255 reg = <0xf1202000 0x800>; 256 compatible = "brcm,brcmstb-memc-ddr"; 257 }; 258 }; 259}; 260