xref: /linux/Documentation/devicetree/bindings/arm/bcm/brcm,brcmstb.txt (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
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