123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- ARM Broadcom STB platforms Device Tree Bindings
- -----------------------------------------------
- Boards with Broadcom Brahma15 ARM-based BCMxxxx (generally BCM7xxx variants)
- SoC shall have the following DT organization:
- Required root node properties:
- - compatible: "brcm,bcm<chip_id>", "brcm,brcmstb"
- example:
- / {
- #address-cells = <2>;
- #size-cells = <2>;
- model = "Broadcom STB (bcm7445)";
- compatible = "brcm,bcm7445", "brcm,brcmstb";
- Further, syscon nodes that map platform-specific registers used for general
- system control is required:
- - compatible: "brcm,bcm<chip_id>-sun-top-ctrl", "syscon"
- - compatible: "brcm,bcm<chip_id>-hif-cpubiuctrl", "syscon"
- - compatible: "brcm,bcm<chip_id>-hif-continuation", "syscon"
- hif-cpubiuctrl node
- -------------------
- SoCs with Broadcom Brahma15 ARM-based CPUs have a specific Bus Interface Unit
- (BIU) block which controls and interfaces the CPU complex to the different
- Memory Controller Ports (MCP), one per memory controller (MEMC). This BIU block
- offers a feature called Write Pairing which consists in collapsing two adjacent
- cache lines into a single (bursted) write transaction towards the memory
- controller (MEMC) to maximize write bandwidth.
- Required properties:
- - compatible: must be "brcm,bcm7445-hif-cpubiuctrl", "syscon"
- Optional properties:
- - brcm,write-pairing:
- Boolean property, which when present indicates that the chip
- supports write-pairing.
- example:
- rdb {
- #address-cells = <1>;
- #size-cells = <1>;
- compatible = "simple-bus";
- ranges = <0 0x00 0xf0000000 0x1000000>;
- sun_top_ctrl: syscon@404000 {
- compatible = "brcm,bcm7445-sun-top-ctrl", "syscon";
- reg = <0x404000 0x51c>;
- };
- hif_cpubiuctrl: syscon@3e2400 {
- compatible = "brcm,bcm7445-hif-cpubiuctrl", "syscon";
- reg = <0x3e2400 0x5b4>;
- brcm,write-pairing;
- };
- hif_continuation: syscon@452000 {
- compatible = "brcm,bcm7445-hif-continuation", "syscon";
- reg = <0x452000 0x100>;
- };
- };
- Nodes that allow for support of SMP initialization and reboot are required:
- smpboot
- -------
- Required properties:
- - compatible
- The string "brcm,brcmstb-smpboot".
- - syscon-cpu
- A phandle / integer array property which lets the BSP know the location
- of certain CPU power-on registers.
- The layout of the property is as follows:
- o a phandle to the "hif_cpubiuctrl" syscon node
- o offset to the base CPU power zone register
- o offset to the base CPU reset register
- - syscon-cont
- A phandle pointing to the syscon node which describes the CPU boot
- continuation registers.
- o a phandle to the "hif_continuation" syscon node
- example:
- smpboot {
- compatible = "brcm,brcmstb-smpboot";
- syscon-cpu = <&hif_cpubiuctrl 0x88 0x178>;
- syscon-cont = <&hif_continuation>;
- };
- reboot
- -------
- Required properties
- - compatible
- The string property "brcm,brcmstb-reboot" for 40nm/28nm chips with
- the new SYS_CTRL interface, or "brcm,bcm7038-reboot" for 65nm
- chips with the old SUN_TOP_CTRL interface.
- - syscon
- A phandle / integer array that points to the syscon node which describes
- the general system reset registers.
- o a phandle to "sun_top_ctrl"
- o offset to the "reset source enable" register
- o offset to the "software master reset" register
- example:
- reboot {
- compatible = "brcm,brcmstb-reboot";
- syscon = <&sun_top_ctrl 0x304 0x308>;
- };
- Power management
- ----------------
- For power management (particularly, S2/S3/S5 system suspend), the following SoC
- components are needed:
- = Always-On control block (AON CTRL)
- This hardware provides control registers for the "always-on" (even in low-power
- modes) hardware, such as the Power Management State Machine (PMSM).
- Required properties:
- - compatible : should contain "brcm,brcmstb-aon-ctrl"
- - reg : the register start and length for the AON CTRL block
- Example:
- aon-ctrl@410000 {
- compatible = "brcm,brcmstb-aon-ctrl";
- reg = <0x410000 0x400>;
- };
- = Memory controllers
- A Broadcom STB SoC typically has a number of independent memory controllers,
- each of which may have several associated hardware blocks, which are versioned
- independently (control registers, DDR PHYs, etc.). One might consider
- describing these controllers as a parent "memory controllers" block, which
- contains N sub-nodes (one for each controller in the system), each of which is
- associated with a number of hardware register resources (e.g., its PHY). See
- the example device tree snippet below.
- == MEMC (MEMory Controller)
- Represents a single memory controller instance.
- Required properties:
- - compatible : should contain "brcm,brcmstb-memc" and "simple-bus"
- Should contain subnodes for any of the following relevant hardware resources:
- == DDR PHY control
- Control registers for this memory controller's DDR PHY.
- Required properties:
- - compatible : should contain one of these
- "brcm,brcmstb-ddr-phy-v225.1"
- "brcm,brcmstb-ddr-phy-v240.1"
- "brcm,brcmstb-ddr-phy-v240.2"
- - reg : the DDR PHY register range
- == DDR SHIMPHY
- Control registers for this memory controller's DDR SHIMPHY.
- Required properties:
- - compatible : should contain "brcm,brcmstb-ddr-shimphy-v1.0"
- - reg : the DDR SHIMPHY register range
- == MEMC DDR control
- Sequencer DRAM parameters and control registers. Used for Self-Refresh
- Power-Down (SRPD), among other things.
- Required properties:
- - compatible : should contain "brcm,brcmstb-memc-ddr"
- - reg : the MEMC DDR register range
- Example:
- memory_controllers {
- ranges;
- compatible = "simple-bus";
- memc@0 {
- compatible = "brcm,brcmstb-memc", "simple-bus";
- ranges;
- ddr-phy@f1106000 {
- compatible = "brcm,brcmstb-ddr-phy-v240.1";
- reg = <0xf1106000 0x21c>;
- };
- shimphy@f1108000 {
- compatible = "brcm,brcmstb-ddr-shimphy-v1.0";
- reg = <0xf1108000 0xe4>;
- };
- memc-ddr@f1102000 {
- reg = <0xf1102000 0x800>;
- compatible = "brcm,brcmstb-memc-ddr";
- };
- };
- memc@1 {
- compatible = "brcm,brcmstb-memc", "simple-bus";
- ranges;
- ddr-phy@f1186000 {
- compatible = "brcm,brcmstb-ddr-phy-v240.1";
- reg = <0xf1186000 0x21c>;
- };
- shimphy@f1188000 {
- compatible = "brcm,brcmstb-ddr-shimphy-v1.0";
- reg = <0xf1188000 0xe4>;
- };
- memc-ddr@f1182000 {
- reg = <0xf1182000 0x800>;
- compatible = "brcm,brcmstb-memc-ddr";
- };
- };
- memc@2 {
- compatible = "brcm,brcmstb-memc", "simple-bus";
- ranges;
- ddr-phy@f1206000 {
- compatible = "brcm,brcmstb-ddr-phy-v240.1";
- reg = <0xf1206000 0x21c>;
- };
- shimphy@f1208000 {
- compatible = "brcm,brcmstb-ddr-shimphy-v1.0";
- reg = <0xf1208000 0xe4>;
- };
- memc-ddr@f1202000 {
- reg = <0xf1202000 0x800>;
- compatible = "brcm,brcmstb-memc-ddr";
- };
- };
- };
|