162306a36Sopenharmony_ciARM Broadcom STB platforms Device Tree Bindings 262306a36Sopenharmony_ci----------------------------------------------- 362306a36Sopenharmony_ciBoards with Broadcom Brahma15 ARM-based BCMxxxx (generally BCM7xxx variants) 462306a36Sopenharmony_ciSoC shall have the following DT organization: 562306a36Sopenharmony_ci 662306a36Sopenharmony_ciRequired root node properties: 762306a36Sopenharmony_ci - compatible: "brcm,bcm<chip_id>", "brcm,brcmstb" 862306a36Sopenharmony_ci 962306a36Sopenharmony_ciexample: 1062306a36Sopenharmony_ci/ { 1162306a36Sopenharmony_ci #address-cells = <2>; 1262306a36Sopenharmony_ci #size-cells = <2>; 1362306a36Sopenharmony_ci model = "Broadcom STB (bcm7445)"; 1462306a36Sopenharmony_ci compatible = "brcm,bcm7445", "brcm,brcmstb"; 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ciFurther, syscon nodes that map platform-specific registers used for general 1762306a36Sopenharmony_cisystem control is required: 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci - compatible: "brcm,bcm<chip_id>-sun-top-ctrl", "syscon" 2062306a36Sopenharmony_ci - compatible: "brcm,bcm<chip_id>-cpu-biu-ctrl", 2162306a36Sopenharmony_ci "brcm,brcmstb-cpu-biu-ctrl", 2262306a36Sopenharmony_ci "syscon" 2362306a36Sopenharmony_ci - compatible: "brcm,bcm<chip_id>-hif-continuation", "syscon" 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_cicpu-biu-ctrl node 2662306a36Sopenharmony_ci------------------- 2762306a36Sopenharmony_ciSoCs with Broadcom Brahma15 ARM-based and Brahma53 ARM64-based CPUs have a 2862306a36Sopenharmony_cispecific Bus Interface Unit (BIU) block which controls and interfaces the CPU 2962306a36Sopenharmony_cicomplex to the different Memory Controller Ports (MCP), one per memory 3062306a36Sopenharmony_cicontroller (MEMC). This BIU block offers a feature called Write Pairing which 3162306a36Sopenharmony_ciconsists in collapsing two adjacent cache lines into a single (bursted) write 3262306a36Sopenharmony_citransaction towards the memory controller (MEMC) to maximize write bandwidth. 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ciRequired properties: 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci - compatible: must be "brcm,bcm7445-cpu-biu-ctrl", "brcm,brcmstb-cpu-biu-ctrl", "syscon" 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ciOptional properties: 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci - brcm,write-pairing: 4162306a36Sopenharmony_ci Boolean property, which when present indicates that the chip 4262306a36Sopenharmony_ci supports write-pairing. 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ciexample: 4562306a36Sopenharmony_ci rdb { 4662306a36Sopenharmony_ci #address-cells = <1>; 4762306a36Sopenharmony_ci #size-cells = <1>; 4862306a36Sopenharmony_ci compatible = "simple-bus"; 4962306a36Sopenharmony_ci ranges = <0 0x00 0xf0000000 0x1000000>; 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci sun_top_ctrl: syscon@404000 { 5262306a36Sopenharmony_ci compatible = "brcm,bcm7445-sun-top-ctrl", "syscon"; 5362306a36Sopenharmony_ci reg = <0x404000 0x51c>; 5462306a36Sopenharmony_ci }; 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci hif_cpubiuctrl: syscon@3e2400 { 5762306a36Sopenharmony_ci compatible = "brcm,bcm7445-cpu-biu-ctrl", "brcm,brcmstb-cpu-biu-ctrl", "syscon"; 5862306a36Sopenharmony_ci reg = <0x3e2400 0x5b4>; 5962306a36Sopenharmony_ci brcm,write-pairing; 6062306a36Sopenharmony_ci }; 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci hif_continuation: syscon@452000 { 6362306a36Sopenharmony_ci compatible = "brcm,bcm7445-hif-continuation", "syscon"; 6462306a36Sopenharmony_ci reg = <0x452000 0x100>; 6562306a36Sopenharmony_ci }; 6662306a36Sopenharmony_ci }; 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ciNodes that allow for support of SMP initialization and reboot are required: 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_cismpboot 7162306a36Sopenharmony_ci------- 7262306a36Sopenharmony_ciRequired properties: 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci - compatible 7562306a36Sopenharmony_ci The string "brcm,brcmstb-smpboot". 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci - syscon-cpu 7862306a36Sopenharmony_ci A phandle / integer array property which lets the BSP know the location 7962306a36Sopenharmony_ci of certain CPU power-on registers. 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci The layout of the property is as follows: 8262306a36Sopenharmony_ci o a phandle to the "hif_cpubiuctrl" syscon node 8362306a36Sopenharmony_ci o offset to the base CPU power zone register 8462306a36Sopenharmony_ci o offset to the base CPU reset register 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci - syscon-cont 8762306a36Sopenharmony_ci A phandle pointing to the syscon node which describes the CPU boot 8862306a36Sopenharmony_ci continuation registers. 8962306a36Sopenharmony_ci o a phandle to the "hif_continuation" syscon node 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ciexample: 9262306a36Sopenharmony_ci smpboot { 9362306a36Sopenharmony_ci compatible = "brcm,brcmstb-smpboot"; 9462306a36Sopenharmony_ci syscon-cpu = <&hif_cpubiuctrl 0x88 0x178>; 9562306a36Sopenharmony_ci syscon-cont = <&hif_continuation>; 9662306a36Sopenharmony_ci }; 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_cireboot 9962306a36Sopenharmony_ci------- 10062306a36Sopenharmony_ciRequired properties 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci - compatible 10362306a36Sopenharmony_ci The string property "brcm,brcmstb-reboot" for 40nm/28nm chips with 10462306a36Sopenharmony_ci the new SYS_CTRL interface, or "brcm,bcm7038-reboot" for 65nm 10562306a36Sopenharmony_ci chips with the old SUN_TOP_CTRL interface. 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci - syscon 10862306a36Sopenharmony_ci A phandle / integer array that points to the syscon node which describes 10962306a36Sopenharmony_ci the general system reset registers. 11062306a36Sopenharmony_ci o a phandle to "sun_top_ctrl" 11162306a36Sopenharmony_ci o offset to the "reset source enable" register 11262306a36Sopenharmony_ci o offset to the "software master reset" register 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ciexample: 11562306a36Sopenharmony_ci reboot { 11662306a36Sopenharmony_ci compatible = "brcm,brcmstb-reboot"; 11762306a36Sopenharmony_ci syscon = <&sun_top_ctrl 0x304 0x308>; 11862306a36Sopenharmony_ci }; 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci 12262306a36Sopenharmony_ciPower management 12362306a36Sopenharmony_ci---------------- 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ciFor power management (particularly, S2/S3/S5 system suspend), the following SoC 12662306a36Sopenharmony_cicomponents are needed: 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci= Always-On control block (AON CTRL) 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ciThis hardware provides control registers for the "always-on" (even in low-power 13162306a36Sopenharmony_cimodes) hardware, such as the Power Management State Machine (PMSM). 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ciRequired properties: 13462306a36Sopenharmony_ci- compatible : should contain "brcm,brcmstb-aon-ctrl" 13562306a36Sopenharmony_ci- reg : the register start and length for the AON CTRL block 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ciExample: 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ciaon-ctrl@410000 { 14062306a36Sopenharmony_ci compatible = "brcm,brcmstb-aon-ctrl"; 14162306a36Sopenharmony_ci reg = <0x410000 0x400>; 14262306a36Sopenharmony_ci}; 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_ci= Memory controllers 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ciA Broadcom STB SoC typically has a number of independent memory controllers, 14762306a36Sopenharmony_cieach of which may have several associated hardware blocks, which are versioned 14862306a36Sopenharmony_ciindependently (control registers, DDR PHYs, etc.). One might consider 14962306a36Sopenharmony_cidescribing these controllers as a parent "memory controllers" block, which 15062306a36Sopenharmony_cicontains N sub-nodes (one for each controller in the system), each of which is 15162306a36Sopenharmony_ciassociated with a number of hardware register resources (e.g., its PHY). See 15262306a36Sopenharmony_cithe example device tree snippet below. 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci== MEMC (MEMory Controller) 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ciRepresents a single memory controller instance. 15762306a36Sopenharmony_ci 15862306a36Sopenharmony_ciRequired properties: 15962306a36Sopenharmony_ci- compatible : should contain "brcm,brcmstb-memc" and "simple-bus" 16062306a36Sopenharmony_ci 16162306a36Sopenharmony_ciShould contain subnodes for any of the following relevant hardware resources: 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci== DDR PHY control 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ciControl registers for this memory controller's DDR PHY. 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ciRequired properties: 16862306a36Sopenharmony_ci- compatible : should contain one of these 16962306a36Sopenharmony_ci "brcm,brcmstb-ddr-phy-v71.1" 17062306a36Sopenharmony_ci "brcm,brcmstb-ddr-phy-v72.0" 17162306a36Sopenharmony_ci "brcm,brcmstb-ddr-phy-v225.1" 17262306a36Sopenharmony_ci "brcm,brcmstb-ddr-phy-v240.1" 17362306a36Sopenharmony_ci "brcm,brcmstb-ddr-phy-v240.2" 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci- reg : the DDR PHY register range 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci== DDR SHIMPHY 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ciControl registers for this memory controller's DDR SHIMPHY. 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_ciRequired properties: 18262306a36Sopenharmony_ci- compatible : should contain "brcm,brcmstb-ddr-shimphy-v1.0" 18362306a36Sopenharmony_ci- reg : the DDR SHIMPHY register range 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ci== MEMC DDR control 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_ciSequencer DRAM parameters and control registers. Used for Self-Refresh 18862306a36Sopenharmony_ciPower-Down (SRPD), among other things. 18962306a36Sopenharmony_ci 19062306a36Sopenharmony_ciSee Documentation/devicetree/bindings/memory-controllers/brcm,brcmstb-memc-ddr.yaml for a 19162306a36Sopenharmony_cifull list of supported compatible strings and properties. 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_ciExample: 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_cimemory_controllers { 19662306a36Sopenharmony_ci ranges; 19762306a36Sopenharmony_ci compatible = "simple-bus"; 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_ci memc@0 { 20062306a36Sopenharmony_ci compatible = "brcm,brcmstb-memc", "simple-bus"; 20162306a36Sopenharmony_ci ranges; 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ci ddr-phy@f1106000 { 20462306a36Sopenharmony_ci compatible = "brcm,brcmstb-ddr-phy-v240.1"; 20562306a36Sopenharmony_ci reg = <0xf1106000 0x21c>; 20662306a36Sopenharmony_ci }; 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ci shimphy@f1108000 { 20962306a36Sopenharmony_ci compatible = "brcm,brcmstb-ddr-shimphy-v1.0"; 21062306a36Sopenharmony_ci reg = <0xf1108000 0xe4>; 21162306a36Sopenharmony_ci }; 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci memc-ddr@f1102000 { 21462306a36Sopenharmony_ci reg = <0xf1102000 0x800>; 21562306a36Sopenharmony_ci compatible = "brcm,brcmstb-memc-ddr"; 21662306a36Sopenharmony_ci }; 21762306a36Sopenharmony_ci }; 21862306a36Sopenharmony_ci 21962306a36Sopenharmony_ci memc@1 { 22062306a36Sopenharmony_ci compatible = "brcm,brcmstb-memc", "simple-bus"; 22162306a36Sopenharmony_ci ranges; 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci ddr-phy@f1186000 { 22462306a36Sopenharmony_ci compatible = "brcm,brcmstb-ddr-phy-v240.1"; 22562306a36Sopenharmony_ci reg = <0xf1186000 0x21c>; 22662306a36Sopenharmony_ci }; 22762306a36Sopenharmony_ci 22862306a36Sopenharmony_ci shimphy@f1188000 { 22962306a36Sopenharmony_ci compatible = "brcm,brcmstb-ddr-shimphy-v1.0"; 23062306a36Sopenharmony_ci reg = <0xf1188000 0xe4>; 23162306a36Sopenharmony_ci }; 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_ci memc-ddr@f1182000 { 23462306a36Sopenharmony_ci reg = <0xf1182000 0x800>; 23562306a36Sopenharmony_ci compatible = "brcm,brcmstb-memc-ddr"; 23662306a36Sopenharmony_ci }; 23762306a36Sopenharmony_ci }; 23862306a36Sopenharmony_ci 23962306a36Sopenharmony_ci memc@2 { 24062306a36Sopenharmony_ci compatible = "brcm,brcmstb-memc", "simple-bus"; 24162306a36Sopenharmony_ci ranges; 24262306a36Sopenharmony_ci 24362306a36Sopenharmony_ci ddr-phy@f1206000 { 24462306a36Sopenharmony_ci compatible = "brcm,brcmstb-ddr-phy-v240.1"; 24562306a36Sopenharmony_ci reg = <0xf1206000 0x21c>; 24662306a36Sopenharmony_ci }; 24762306a36Sopenharmony_ci 24862306a36Sopenharmony_ci shimphy@f1208000 { 24962306a36Sopenharmony_ci compatible = "brcm,brcmstb-ddr-shimphy-v1.0"; 25062306a36Sopenharmony_ci reg = <0xf1208000 0xe4>; 25162306a36Sopenharmony_ci }; 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_ci memc-ddr@f1202000 { 25462306a36Sopenharmony_ci reg = <0xf1202000 0x800>; 25562306a36Sopenharmony_ci compatible = "brcm,brcmstb-memc-ddr"; 25662306a36Sopenharmony_ci }; 25762306a36Sopenharmony_ci }; 25862306a36Sopenharmony_ci}; 259