18c2ecf20Sopenharmony_ciARM Broadcom STB platforms Device Tree Bindings 28c2ecf20Sopenharmony_ci----------------------------------------------- 38c2ecf20Sopenharmony_ciBoards with Broadcom Brahma15 ARM-based BCMxxxx (generally BCM7xxx variants) 48c2ecf20Sopenharmony_ciSoC shall have the following DT organization: 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ciRequired root node properties: 78c2ecf20Sopenharmony_ci - compatible: "brcm,bcm<chip_id>", "brcm,brcmstb" 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ciexample: 108c2ecf20Sopenharmony_ci/ { 118c2ecf20Sopenharmony_ci #address-cells = <2>; 128c2ecf20Sopenharmony_ci #size-cells = <2>; 138c2ecf20Sopenharmony_ci model = "Broadcom STB (bcm7445)"; 148c2ecf20Sopenharmony_ci compatible = "brcm,bcm7445", "brcm,brcmstb"; 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ciFurther, syscon nodes that map platform-specific registers used for general 178c2ecf20Sopenharmony_cisystem control is required: 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci - compatible: "brcm,bcm<chip_id>-sun-top-ctrl", "syscon" 208c2ecf20Sopenharmony_ci - compatible: "brcm,bcm<chip_id>-cpu-biu-ctrl", 218c2ecf20Sopenharmony_ci "brcm,brcmstb-cpu-biu-ctrl", 228c2ecf20Sopenharmony_ci "syscon" 238c2ecf20Sopenharmony_ci - compatible: "brcm,bcm<chip_id>-hif-continuation", "syscon" 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_cicpu-biu-ctrl node 268c2ecf20Sopenharmony_ci------------------- 278c2ecf20Sopenharmony_ciSoCs with Broadcom Brahma15 ARM-based and Brahma53 ARM64-based CPUs have a 288c2ecf20Sopenharmony_cispecific Bus Interface Unit (BIU) block which controls and interfaces the CPU 298c2ecf20Sopenharmony_cicomplex to the different Memory Controller Ports (MCP), one per memory 308c2ecf20Sopenharmony_cicontroller (MEMC). This BIU block offers a feature called Write Pairing which 318c2ecf20Sopenharmony_ciconsists in collapsing two adjacent cache lines into a single (bursted) write 328c2ecf20Sopenharmony_citransaction towards the memory controller (MEMC) to maximize write bandwidth. 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ciRequired properties: 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci - compatible: must be "brcm,bcm7445-cpu-biu-ctrl", "brcm,brcmstb-cpu-biu-ctrl", "syscon" 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ciOptional properties: 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci - brcm,write-pairing: 418c2ecf20Sopenharmony_ci Boolean property, which when present indicates that the chip 428c2ecf20Sopenharmony_ci supports write-pairing. 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ciexample: 458c2ecf20Sopenharmony_ci rdb { 468c2ecf20Sopenharmony_ci #address-cells = <1>; 478c2ecf20Sopenharmony_ci #size-cells = <1>; 488c2ecf20Sopenharmony_ci compatible = "simple-bus"; 498c2ecf20Sopenharmony_ci ranges = <0 0x00 0xf0000000 0x1000000>; 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci sun_top_ctrl: syscon@404000 { 528c2ecf20Sopenharmony_ci compatible = "brcm,bcm7445-sun-top-ctrl", "syscon"; 538c2ecf20Sopenharmony_ci reg = <0x404000 0x51c>; 548c2ecf20Sopenharmony_ci }; 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ci hif_cpubiuctrl: syscon@3e2400 { 578c2ecf20Sopenharmony_ci compatible = "brcm,bcm7445-cpu-biu-ctrl", "brcm,brcmstb-cpu-biu-ctrl", "syscon"; 588c2ecf20Sopenharmony_ci reg = <0x3e2400 0x5b4>; 598c2ecf20Sopenharmony_ci brcm,write-pairing; 608c2ecf20Sopenharmony_ci }; 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ci hif_continuation: syscon@452000 { 638c2ecf20Sopenharmony_ci compatible = "brcm,bcm7445-hif-continuation", "syscon"; 648c2ecf20Sopenharmony_ci reg = <0x452000 0x100>; 658c2ecf20Sopenharmony_ci }; 668c2ecf20Sopenharmony_ci }; 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ciNodes that allow for support of SMP initialization and reboot are required: 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_cismpboot 718c2ecf20Sopenharmony_ci------- 728c2ecf20Sopenharmony_ciRequired properties: 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci - compatible 758c2ecf20Sopenharmony_ci The string "brcm,brcmstb-smpboot". 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci - syscon-cpu 788c2ecf20Sopenharmony_ci A phandle / integer array property which lets the BSP know the location 798c2ecf20Sopenharmony_ci of certain CPU power-on registers. 808c2ecf20Sopenharmony_ci 818c2ecf20Sopenharmony_ci The layout of the property is as follows: 828c2ecf20Sopenharmony_ci o a phandle to the "hif_cpubiuctrl" syscon node 838c2ecf20Sopenharmony_ci o offset to the base CPU power zone register 848c2ecf20Sopenharmony_ci o offset to the base CPU reset register 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_ci - syscon-cont 878c2ecf20Sopenharmony_ci A phandle pointing to the syscon node which describes the CPU boot 888c2ecf20Sopenharmony_ci continuation registers. 898c2ecf20Sopenharmony_ci o a phandle to the "hif_continuation" syscon node 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ciexample: 928c2ecf20Sopenharmony_ci smpboot { 938c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-smpboot"; 948c2ecf20Sopenharmony_ci syscon-cpu = <&hif_cpubiuctrl 0x88 0x178>; 958c2ecf20Sopenharmony_ci syscon-cont = <&hif_continuation>; 968c2ecf20Sopenharmony_ci }; 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_cireboot 998c2ecf20Sopenharmony_ci------- 1008c2ecf20Sopenharmony_ciRequired properties 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_ci - compatible 1038c2ecf20Sopenharmony_ci The string property "brcm,brcmstb-reboot" for 40nm/28nm chips with 1048c2ecf20Sopenharmony_ci the new SYS_CTRL interface, or "brcm,bcm7038-reboot" for 65nm 1058c2ecf20Sopenharmony_ci chips with the old SUN_TOP_CTRL interface. 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci - syscon 1088c2ecf20Sopenharmony_ci A phandle / integer array that points to the syscon node which describes 1098c2ecf20Sopenharmony_ci the general system reset registers. 1108c2ecf20Sopenharmony_ci o a phandle to "sun_top_ctrl" 1118c2ecf20Sopenharmony_ci o offset to the "reset source enable" register 1128c2ecf20Sopenharmony_ci o offset to the "software master reset" register 1138c2ecf20Sopenharmony_ci 1148c2ecf20Sopenharmony_ciexample: 1158c2ecf20Sopenharmony_ci reboot { 1168c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-reboot"; 1178c2ecf20Sopenharmony_ci syscon = <&sun_top_ctrl 0x304 0x308>; 1188c2ecf20Sopenharmony_ci }; 1198c2ecf20Sopenharmony_ci 1208c2ecf20Sopenharmony_ci 1218c2ecf20Sopenharmony_ci 1228c2ecf20Sopenharmony_ciPower management 1238c2ecf20Sopenharmony_ci---------------- 1248c2ecf20Sopenharmony_ci 1258c2ecf20Sopenharmony_ciFor power management (particularly, S2/S3/S5 system suspend), the following SoC 1268c2ecf20Sopenharmony_cicomponents are needed: 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ci= Always-On control block (AON CTRL) 1298c2ecf20Sopenharmony_ci 1308c2ecf20Sopenharmony_ciThis hardware provides control registers for the "always-on" (even in low-power 1318c2ecf20Sopenharmony_cimodes) hardware, such as the Power Management State Machine (PMSM). 1328c2ecf20Sopenharmony_ci 1338c2ecf20Sopenharmony_ciRequired properties: 1348c2ecf20Sopenharmony_ci- compatible : should contain "brcm,brcmstb-aon-ctrl" 1358c2ecf20Sopenharmony_ci- reg : the register start and length for the AON CTRL block 1368c2ecf20Sopenharmony_ci 1378c2ecf20Sopenharmony_ciExample: 1388c2ecf20Sopenharmony_ci 1398c2ecf20Sopenharmony_ciaon-ctrl@410000 { 1408c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-aon-ctrl"; 1418c2ecf20Sopenharmony_ci reg = <0x410000 0x400>; 1428c2ecf20Sopenharmony_ci}; 1438c2ecf20Sopenharmony_ci 1448c2ecf20Sopenharmony_ci= Memory controllers 1458c2ecf20Sopenharmony_ci 1468c2ecf20Sopenharmony_ciA Broadcom STB SoC typically has a number of independent memory controllers, 1478c2ecf20Sopenharmony_cieach of which may have several associated hardware blocks, which are versioned 1488c2ecf20Sopenharmony_ciindependently (control registers, DDR PHYs, etc.). One might consider 1498c2ecf20Sopenharmony_cidescribing these controllers as a parent "memory controllers" block, which 1508c2ecf20Sopenharmony_cicontains N sub-nodes (one for each controller in the system), each of which is 1518c2ecf20Sopenharmony_ciassociated with a number of hardware register resources (e.g., its PHY). See 1528c2ecf20Sopenharmony_cithe example device tree snippet below. 1538c2ecf20Sopenharmony_ci 1548c2ecf20Sopenharmony_ci== MEMC (MEMory Controller) 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ciRepresents a single memory controller instance. 1578c2ecf20Sopenharmony_ci 1588c2ecf20Sopenharmony_ciRequired properties: 1598c2ecf20Sopenharmony_ci- compatible : should contain "brcm,brcmstb-memc" and "simple-bus" 1608c2ecf20Sopenharmony_ci 1618c2ecf20Sopenharmony_ciShould contain subnodes for any of the following relevant hardware resources: 1628c2ecf20Sopenharmony_ci 1638c2ecf20Sopenharmony_ci== DDR PHY control 1648c2ecf20Sopenharmony_ci 1658c2ecf20Sopenharmony_ciControl registers for this memory controller's DDR PHY. 1668c2ecf20Sopenharmony_ci 1678c2ecf20Sopenharmony_ciRequired properties: 1688c2ecf20Sopenharmony_ci- compatible : should contain one of these 1698c2ecf20Sopenharmony_ci "brcm,brcmstb-ddr-phy-v71.1" 1708c2ecf20Sopenharmony_ci "brcm,brcmstb-ddr-phy-v72.0" 1718c2ecf20Sopenharmony_ci "brcm,brcmstb-ddr-phy-v225.1" 1728c2ecf20Sopenharmony_ci "brcm,brcmstb-ddr-phy-v240.1" 1738c2ecf20Sopenharmony_ci "brcm,brcmstb-ddr-phy-v240.2" 1748c2ecf20Sopenharmony_ci 1758c2ecf20Sopenharmony_ci- reg : the DDR PHY register range 1768c2ecf20Sopenharmony_ci 1778c2ecf20Sopenharmony_ci== DDR SHIMPHY 1788c2ecf20Sopenharmony_ci 1798c2ecf20Sopenharmony_ciControl registers for this memory controller's DDR SHIMPHY. 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_ciRequired properties: 1828c2ecf20Sopenharmony_ci- compatible : should contain "brcm,brcmstb-ddr-shimphy-v1.0" 1838c2ecf20Sopenharmony_ci- reg : the DDR SHIMPHY register range 1848c2ecf20Sopenharmony_ci 1858c2ecf20Sopenharmony_ci== MEMC DDR control 1868c2ecf20Sopenharmony_ci 1878c2ecf20Sopenharmony_ciSequencer DRAM parameters and control registers. Used for Self-Refresh 1888c2ecf20Sopenharmony_ciPower-Down (SRPD), among other things. 1898c2ecf20Sopenharmony_ci 1908c2ecf20Sopenharmony_ciRequired properties: 1918c2ecf20Sopenharmony_ci- compatible : should contain one of these 1928c2ecf20Sopenharmony_ci "brcm,brcmstb-memc-ddr-rev-b.2.1" 1938c2ecf20Sopenharmony_ci "brcm,brcmstb-memc-ddr-rev-b.2.2" 1948c2ecf20Sopenharmony_ci "brcm,brcmstb-memc-ddr-rev-b.2.3" 1958c2ecf20Sopenharmony_ci "brcm,brcmstb-memc-ddr-rev-b.3.0" 1968c2ecf20Sopenharmony_ci "brcm,brcmstb-memc-ddr-rev-b.3.1" 1978c2ecf20Sopenharmony_ci "brcm,brcmstb-memc-ddr" 1988c2ecf20Sopenharmony_ci- reg : the MEMC DDR register range 1998c2ecf20Sopenharmony_ci 2008c2ecf20Sopenharmony_ciExample: 2018c2ecf20Sopenharmony_ci 2028c2ecf20Sopenharmony_cimemory_controllers { 2038c2ecf20Sopenharmony_ci ranges; 2048c2ecf20Sopenharmony_ci compatible = "simple-bus"; 2058c2ecf20Sopenharmony_ci 2068c2ecf20Sopenharmony_ci memc@0 { 2078c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-memc", "simple-bus"; 2088c2ecf20Sopenharmony_ci ranges; 2098c2ecf20Sopenharmony_ci 2108c2ecf20Sopenharmony_ci ddr-phy@f1106000 { 2118c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-ddr-phy-v240.1"; 2128c2ecf20Sopenharmony_ci reg = <0xf1106000 0x21c>; 2138c2ecf20Sopenharmony_ci }; 2148c2ecf20Sopenharmony_ci 2158c2ecf20Sopenharmony_ci shimphy@f1108000 { 2168c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-ddr-shimphy-v1.0"; 2178c2ecf20Sopenharmony_ci reg = <0xf1108000 0xe4>; 2188c2ecf20Sopenharmony_ci }; 2198c2ecf20Sopenharmony_ci 2208c2ecf20Sopenharmony_ci memc-ddr@f1102000 { 2218c2ecf20Sopenharmony_ci reg = <0xf1102000 0x800>; 2228c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-memc-ddr"; 2238c2ecf20Sopenharmony_ci }; 2248c2ecf20Sopenharmony_ci }; 2258c2ecf20Sopenharmony_ci 2268c2ecf20Sopenharmony_ci memc@1 { 2278c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-memc", "simple-bus"; 2288c2ecf20Sopenharmony_ci ranges; 2298c2ecf20Sopenharmony_ci 2308c2ecf20Sopenharmony_ci ddr-phy@f1186000 { 2318c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-ddr-phy-v240.1"; 2328c2ecf20Sopenharmony_ci reg = <0xf1186000 0x21c>; 2338c2ecf20Sopenharmony_ci }; 2348c2ecf20Sopenharmony_ci 2358c2ecf20Sopenharmony_ci shimphy@f1188000 { 2368c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-ddr-shimphy-v1.0"; 2378c2ecf20Sopenharmony_ci reg = <0xf1188000 0xe4>; 2388c2ecf20Sopenharmony_ci }; 2398c2ecf20Sopenharmony_ci 2408c2ecf20Sopenharmony_ci memc-ddr@f1182000 { 2418c2ecf20Sopenharmony_ci reg = <0xf1182000 0x800>; 2428c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-memc-ddr"; 2438c2ecf20Sopenharmony_ci }; 2448c2ecf20Sopenharmony_ci }; 2458c2ecf20Sopenharmony_ci 2468c2ecf20Sopenharmony_ci memc@2 { 2478c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-memc", "simple-bus"; 2488c2ecf20Sopenharmony_ci ranges; 2498c2ecf20Sopenharmony_ci 2508c2ecf20Sopenharmony_ci ddr-phy@f1206000 { 2518c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-ddr-phy-v240.1"; 2528c2ecf20Sopenharmony_ci reg = <0xf1206000 0x21c>; 2538c2ecf20Sopenharmony_ci }; 2548c2ecf20Sopenharmony_ci 2558c2ecf20Sopenharmony_ci shimphy@f1208000 { 2568c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-ddr-shimphy-v1.0"; 2578c2ecf20Sopenharmony_ci reg = <0xf1208000 0xe4>; 2588c2ecf20Sopenharmony_ci }; 2598c2ecf20Sopenharmony_ci 2608c2ecf20Sopenharmony_ci memc-ddr@f1202000 { 2618c2ecf20Sopenharmony_ci reg = <0xf1202000 0x800>; 2628c2ecf20Sopenharmony_ci compatible = "brcm,brcmstb-memc-ddr"; 2638c2ecf20Sopenharmony_ci }; 2648c2ecf20Sopenharmony_ci }; 2658c2ecf20Sopenharmony_ci}; 266