123a71fd6SScott BrandenARM Broadcom STB platforms Device Tree Bindings 223a71fd6SScott Branden----------------------------------------------- 323a71fd6SScott BrandenBoards with Broadcom Brahma15 ARM-based BCMxxxx (generally BCM7xxx variants) 423a71fd6SScott BrandenSoC shall have the following DT organization: 523a71fd6SScott Branden 623a71fd6SScott BrandenRequired root node properties: 723a71fd6SScott Branden - compatible: "brcm,bcm<chip_id>", "brcm,brcmstb" 823a71fd6SScott Branden 923a71fd6SScott Brandenexample: 1023a71fd6SScott Branden/ { 1123a71fd6SScott Branden #address-cells = <2>; 1223a71fd6SScott Branden #size-cells = <2>; 1323a71fd6SScott Branden model = "Broadcom STB (bcm7445)"; 1423a71fd6SScott Branden compatible = "brcm,bcm7445", "brcm,brcmstb"; 1523a71fd6SScott Branden 1623a71fd6SScott BrandenFurther, syscon nodes that map platform-specific registers used for general 1723a71fd6SScott Brandensystem control is required: 1823a71fd6SScott Branden 1923a71fd6SScott Branden - compatible: "brcm,bcm<chip_id>-sun-top-ctrl", "syscon" 20911e9322SFlorian Fainelli - compatible: "brcm,bcm<chip_id>-cpu-biu-ctrl", 21911e9322SFlorian Fainelli "brcm,brcmstb-cpu-biu-ctrl", 22911e9322SFlorian Fainelli "syscon" 2323a71fd6SScott Branden - compatible: "brcm,bcm<chip_id>-hif-continuation", "syscon" 2423a71fd6SScott Branden 25911e9322SFlorian Fainellicpu-biu-ctrl node 2682f46c46SFlorian Fainelli------------------- 27911e9322SFlorian FainelliSoCs with Broadcom Brahma15 ARM-based and Brahma53 ARM64-based CPUs have a 28911e9322SFlorian Fainellispecific Bus Interface Unit (BIU) block which controls and interfaces the CPU 29911e9322SFlorian Fainellicomplex to the different Memory Controller Ports (MCP), one per memory 30911e9322SFlorian Fainellicontroller (MEMC). This BIU block offers a feature called Write Pairing which 31911e9322SFlorian Fainelliconsists in collapsing two adjacent cache lines into a single (bursted) write 32911e9322SFlorian Fainellitransaction towards the memory controller (MEMC) to maximize write bandwidth. 3382f46c46SFlorian Fainelli 3482f46c46SFlorian FainelliRequired properties: 3582f46c46SFlorian Fainelli 36911e9322SFlorian Fainelli - compatible: must be "brcm,bcm7445-cpu-biu-ctrl", "brcm,brcmstb-cpu-biu-ctrl", "syscon" 3782f46c46SFlorian Fainelli 3882f46c46SFlorian FainelliOptional properties: 3982f46c46SFlorian Fainelli 4082f46c46SFlorian Fainelli - brcm,write-pairing: 4182f46c46SFlorian Fainelli Boolean property, which when present indicates that the chip 4282f46c46SFlorian Fainelli supports write-pairing. 4382f46c46SFlorian Fainelli 4423a71fd6SScott Brandenexample: 4523a71fd6SScott Branden rdb { 4623a71fd6SScott Branden #address-cells = <1>; 4723a71fd6SScott Branden #size-cells = <1>; 4823a71fd6SScott Branden compatible = "simple-bus"; 4923a71fd6SScott Branden ranges = <0 0x00 0xf0000000 0x1000000>; 5023a71fd6SScott Branden 5123a71fd6SScott Branden sun_top_ctrl: syscon@404000 { 5223a71fd6SScott Branden compatible = "brcm,bcm7445-sun-top-ctrl", "syscon"; 5323a71fd6SScott Branden reg = <0x404000 0x51c>; 5423a71fd6SScott Branden }; 5523a71fd6SScott Branden 5623a71fd6SScott Branden hif_cpubiuctrl: syscon@3e2400 { 57911e9322SFlorian Fainelli compatible = "brcm,bcm7445-cpu-biu-ctrl", "brcm,brcmstb-cpu-biu-ctrl", "syscon"; 5823a71fd6SScott Branden reg = <0x3e2400 0x5b4>; 5982f46c46SFlorian Fainelli brcm,write-pairing; 6023a71fd6SScott Branden }; 6123a71fd6SScott Branden 6223a71fd6SScott Branden hif_continuation: syscon@452000 { 6323a71fd6SScott Branden compatible = "brcm,bcm7445-hif-continuation", "syscon"; 6423a71fd6SScott Branden reg = <0x452000 0x100>; 6523a71fd6SScott Branden }; 6623a71fd6SScott Branden }; 6723a71fd6SScott Branden 689c07d61fSBrian NorrisNodes that allow for support of SMP initialization and reboot are required: 6923a71fd6SScott Branden 7023a71fd6SScott Brandensmpboot 7123a71fd6SScott Branden------- 7223a71fd6SScott BrandenRequired properties: 7323a71fd6SScott Branden 7423a71fd6SScott Branden - compatible 7523a71fd6SScott Branden The string "brcm,brcmstb-smpboot". 7623a71fd6SScott Branden 7723a71fd6SScott Branden - syscon-cpu 7823a71fd6SScott Branden A phandle / integer array property which lets the BSP know the location 7923a71fd6SScott Branden of certain CPU power-on registers. 8023a71fd6SScott Branden 8123a71fd6SScott Branden The layout of the property is as follows: 8223a71fd6SScott Branden o a phandle to the "hif_cpubiuctrl" syscon node 8323a71fd6SScott Branden o offset to the base CPU power zone register 8423a71fd6SScott Branden o offset to the base CPU reset register 8523a71fd6SScott Branden 8623a71fd6SScott Branden - syscon-cont 8723a71fd6SScott Branden A phandle pointing to the syscon node which describes the CPU boot 8823a71fd6SScott Branden continuation registers. 8923a71fd6SScott Branden o a phandle to the "hif_continuation" syscon node 9023a71fd6SScott Branden 9123a71fd6SScott Brandenexample: 9223a71fd6SScott Branden smpboot { 9323a71fd6SScott Branden compatible = "brcm,brcmstb-smpboot"; 9423a71fd6SScott Branden syscon-cpu = <&hif_cpubiuctrl 0x88 0x178>; 9523a71fd6SScott Branden syscon-cont = <&hif_continuation>; 9623a71fd6SScott Branden }; 9723a71fd6SScott Branden 9823a71fd6SScott Brandenreboot 9923a71fd6SScott Branden------- 10023a71fd6SScott BrandenRequired properties 10123a71fd6SScott Branden 10223a71fd6SScott Branden - compatible 10323a71fd6SScott Branden The string property "brcm,brcmstb-reboot" for 40nm/28nm chips with 10423a71fd6SScott Branden the new SYS_CTRL interface, or "brcm,bcm7038-reboot" for 65nm 10523a71fd6SScott Branden chips with the old SUN_TOP_CTRL interface. 10623a71fd6SScott Branden 10723a71fd6SScott Branden - syscon 10823a71fd6SScott Branden A phandle / integer array that points to the syscon node which describes 10923a71fd6SScott Branden the general system reset registers. 11023a71fd6SScott Branden o a phandle to "sun_top_ctrl" 11123a71fd6SScott Branden o offset to the "reset source enable" register 11223a71fd6SScott Branden o offset to the "software master reset" register 11323a71fd6SScott Branden 11423a71fd6SScott Brandenexample: 11523a71fd6SScott Branden reboot { 11623a71fd6SScott Branden compatible = "brcm,brcmstb-reboot"; 11723a71fd6SScott Branden syscon = <&sun_top_ctrl 0x304 0x308>; 11823a71fd6SScott Branden }; 1199c07d61fSBrian Norris 1209c07d61fSBrian Norris 1219c07d61fSBrian Norris 1229c07d61fSBrian NorrisPower management 1239c07d61fSBrian Norris---------------- 1249c07d61fSBrian Norris 1259c07d61fSBrian NorrisFor power management (particularly, S2/S3/S5 system suspend), the following SoC 1269c07d61fSBrian Norriscomponents are needed: 1279c07d61fSBrian Norris 1289c07d61fSBrian Norris= Always-On control block (AON CTRL) 1299c07d61fSBrian Norris 1309c07d61fSBrian NorrisThis hardware provides control registers for the "always-on" (even in low-power 1319c07d61fSBrian Norrismodes) hardware, such as the Power Management State Machine (PMSM). 1329c07d61fSBrian Norris 1339c07d61fSBrian NorrisRequired properties: 1349c07d61fSBrian Norris- compatible : should contain "brcm,brcmstb-aon-ctrl" 1359c07d61fSBrian Norris- reg : the register start and length for the AON CTRL block 1369c07d61fSBrian Norris 1379c07d61fSBrian NorrisExample: 1389c07d61fSBrian Norris 1399c07d61fSBrian Norrisaon-ctrl@410000 { 1409c07d61fSBrian Norris compatible = "brcm,brcmstb-aon-ctrl"; 1419c07d61fSBrian Norris reg = <0x410000 0x400>; 1429c07d61fSBrian Norris}; 1439c07d61fSBrian Norris 1449c07d61fSBrian Norris= Memory controllers 1459c07d61fSBrian Norris 1469c07d61fSBrian NorrisA Broadcom STB SoC typically has a number of independent memory controllers, 1479c07d61fSBrian Norriseach of which may have several associated hardware blocks, which are versioned 1489c07d61fSBrian Norrisindependently (control registers, DDR PHYs, etc.). One might consider 1499c07d61fSBrian Norrisdescribing these controllers as a parent "memory controllers" block, which 1509c07d61fSBrian Norriscontains N sub-nodes (one for each controller in the system), each of which is 1519c07d61fSBrian Norrisassociated with a number of hardware register resources (e.g., its PHY). See 1529c07d61fSBrian Norristhe example device tree snippet below. 1539c07d61fSBrian Norris 1549c07d61fSBrian Norris== MEMC (MEMory Controller) 1559c07d61fSBrian Norris 1569c07d61fSBrian NorrisRepresents a single memory controller instance. 1579c07d61fSBrian Norris 1589c07d61fSBrian NorrisRequired properties: 1599c07d61fSBrian Norris- compatible : should contain "brcm,brcmstb-memc" and "simple-bus" 1609c07d61fSBrian Norris 1619c07d61fSBrian NorrisShould contain subnodes for any of the following relevant hardware resources: 1629c07d61fSBrian Norris 1639c07d61fSBrian Norris== DDR PHY control 1649c07d61fSBrian Norris 1659c07d61fSBrian NorrisControl registers for this memory controller's DDR PHY. 1669c07d61fSBrian Norris 1679c07d61fSBrian NorrisRequired properties: 1689c07d61fSBrian Norris- compatible : should contain one of these 1699600c234SFlorian Fainelli "brcm,brcmstb-ddr-phy-v71.1" 1709600c234SFlorian Fainelli "brcm,brcmstb-ddr-phy-v72.0" 1719c07d61fSBrian Norris "brcm,brcmstb-ddr-phy-v225.1" 1729c07d61fSBrian Norris "brcm,brcmstb-ddr-phy-v240.1" 1739c07d61fSBrian Norris "brcm,brcmstb-ddr-phy-v240.2" 1749c07d61fSBrian Norris 1759c07d61fSBrian Norris- reg : the DDR PHY register range 1769c07d61fSBrian Norris 1779c07d61fSBrian Norris== DDR SHIMPHY 1789c07d61fSBrian Norris 1799c07d61fSBrian NorrisControl registers for this memory controller's DDR SHIMPHY. 1809c07d61fSBrian Norris 1819c07d61fSBrian NorrisRequired properties: 1829c07d61fSBrian Norris- compatible : should contain "brcm,brcmstb-ddr-shimphy-v1.0" 1839c07d61fSBrian Norris- reg : the DDR SHIMPHY register range 1849c07d61fSBrian Norris 1859c07d61fSBrian Norris== MEMC DDR control 1869c07d61fSBrian Norris 1879c07d61fSBrian NorrisSequencer DRAM parameters and control registers. Used for Self-Refresh 1889c07d61fSBrian NorrisPower-Down (SRPD), among other things. 1899c07d61fSBrian Norris 190*fa0321baSFlorian FainelliSee Documentation/devicetree/bindings/memory-controllers/brcm,brcmstb-memc-ddr.yaml for a 191*fa0321baSFlorian Fainellifull list of supported compatible strings and properties. 1929c07d61fSBrian Norris 1939c07d61fSBrian NorrisExample: 1949c07d61fSBrian Norris 1959c07d61fSBrian Norrismemory_controllers { 1969c07d61fSBrian Norris ranges; 1979c07d61fSBrian Norris compatible = "simple-bus"; 1989c07d61fSBrian Norris 1999c07d61fSBrian Norris memc@0 { 2009c07d61fSBrian Norris compatible = "brcm,brcmstb-memc", "simple-bus"; 2019c07d61fSBrian Norris ranges; 2029c07d61fSBrian Norris 2039c07d61fSBrian Norris ddr-phy@f1106000 { 2049c07d61fSBrian Norris compatible = "brcm,brcmstb-ddr-phy-v240.1"; 2059c07d61fSBrian Norris reg = <0xf1106000 0x21c>; 2069c07d61fSBrian Norris }; 2079c07d61fSBrian Norris 2089c07d61fSBrian Norris shimphy@f1108000 { 2099c07d61fSBrian Norris compatible = "brcm,brcmstb-ddr-shimphy-v1.0"; 2109c07d61fSBrian Norris reg = <0xf1108000 0xe4>; 2119c07d61fSBrian Norris }; 2129c07d61fSBrian Norris 2139c07d61fSBrian Norris memc-ddr@f1102000 { 2149c07d61fSBrian Norris reg = <0xf1102000 0x800>; 2159c07d61fSBrian Norris compatible = "brcm,brcmstb-memc-ddr"; 2169c07d61fSBrian Norris }; 2179c07d61fSBrian Norris }; 2189c07d61fSBrian Norris 2199c07d61fSBrian Norris memc@1 { 2209c07d61fSBrian Norris compatible = "brcm,brcmstb-memc", "simple-bus"; 2219c07d61fSBrian Norris ranges; 2229c07d61fSBrian Norris 2239c07d61fSBrian Norris ddr-phy@f1186000 { 2249c07d61fSBrian Norris compatible = "brcm,brcmstb-ddr-phy-v240.1"; 2259c07d61fSBrian Norris reg = <0xf1186000 0x21c>; 2269c07d61fSBrian Norris }; 2279c07d61fSBrian Norris 2289c07d61fSBrian Norris shimphy@f1188000 { 2299c07d61fSBrian Norris compatible = "brcm,brcmstb-ddr-shimphy-v1.0"; 2309c07d61fSBrian Norris reg = <0xf1188000 0xe4>; 2319c07d61fSBrian Norris }; 2329c07d61fSBrian Norris 2339c07d61fSBrian Norris memc-ddr@f1182000 { 2349c07d61fSBrian Norris reg = <0xf1182000 0x800>; 2359c07d61fSBrian Norris compatible = "brcm,brcmstb-memc-ddr"; 2369c07d61fSBrian Norris }; 2379c07d61fSBrian Norris }; 2389c07d61fSBrian Norris 2399c07d61fSBrian Norris memc@2 { 2409c07d61fSBrian Norris compatible = "brcm,brcmstb-memc", "simple-bus"; 2419c07d61fSBrian Norris ranges; 2429c07d61fSBrian Norris 2439c07d61fSBrian Norris ddr-phy@f1206000 { 2449c07d61fSBrian Norris compatible = "brcm,brcmstb-ddr-phy-v240.1"; 2459c07d61fSBrian Norris reg = <0xf1206000 0x21c>; 2469c07d61fSBrian Norris }; 2479c07d61fSBrian Norris 2489c07d61fSBrian Norris shimphy@f1208000 { 2499c07d61fSBrian Norris compatible = "brcm,brcmstb-ddr-shimphy-v1.0"; 2509c07d61fSBrian Norris reg = <0xf1208000 0xe4>; 2519c07d61fSBrian Norris }; 2529c07d61fSBrian Norris 2539c07d61fSBrian Norris memc-ddr@f1202000 { 2549c07d61fSBrian Norris reg = <0xf1202000 0x800>; 2559c07d61fSBrian Norris compatible = "brcm,brcmstb-memc-ddr"; 2569c07d61fSBrian Norris }; 2579c07d61fSBrian Norris }; 2589c07d61fSBrian Norris}; 259