| * Broadcom cable/DSL/settop platforms |
| |
| Required properties: |
| |
| - compatible: "brcm,bcm3368", "brcm,bcm3384", "brcm,bcm33843" |
| "brcm,bcm3384-viper", "brcm,bcm33843-viper" |
| "brcm,bcm6328", "brcm,bcm6358", "brcm,bcm6362", "brcm,bcm6368", |
| "brcm,bcm63168", "brcm,bcm63268", |
| "brcm,bcm7125", "brcm,bcm7346", "brcm,bcm7358", "brcm,bcm7360", |
| "brcm,bcm7362", "brcm,bcm7420", "brcm,bcm7425" |
| |
| The experimental -viper variants are for running Linux on the 3384's |
| BMIPS4355 cable modem CPU instead of the BMIPS5000 application processor. |
| |
| 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 be one of |
| "brcm,bcm7425-aon-ctrl" |
| "brcm,bcm7429-aon-ctrl" |
| "brcm,bcm7435-aon-ctrl" and |
| "brcm,brcmstb-aon-ctrl" |
| - reg : the register start and length for the AON CTRL block |
| |
| Example: |
| |
| syscon@410000 { |
| compatible = "brcm,bcm7425-aon-ctrl", "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. |
| |
| == MEMC (MEMory Controller) |
| |
| Represents a single memory controller instance. |
| |
| Required properties: |
| - compatible : should contain "brcm,brcmstb-memc" and "simple-bus" |
| - ranges : should contain the child address in the parent address |
| space, must be 0 here, and the register start and length of |
| the entire memory controller (including all sub nodes: DDR PHY, |
| arbiter, etc.) |
| - #address-cells : must be 1 |
| - #size-cells : must be 1 |
| |
| Example: |
| |
| memory-controller@0 { |
| compatible = "brcm,brcmstb-memc", "simple-bus"; |
| ranges = <0x0 0x0 0xa000>; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| |
| memc-arb@1000 { |
| ... |
| }; |
| |
| memc-ddr@2000 { |
| ... |
| }; |
| |
| ddr-phy@6000 { |
| ... |
| }; |
| }; |
| |
| 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-v64.5" |
| "brcm,brcmstb-ddr-phy" |
| |
| - reg : the DDR PHY register range and length |
| |
| Example: |
| |
| ddr-phy@6000 { |
| compatible = "brcm,brcmstb-ddr-phy-v64.5"; |
| reg = <0x6000 0xc8>; |
| }; |
| |
| == DDR memory controller sequencer |
| |
| Control registers for this memory controller's DDR memory sequencer |
| |
| Required properties: |
| - compatible : should contain one of these |
| "brcm,bcm7425-memc-ddr" |
| "brcm,bcm7429-memc-ddr" |
| "brcm,bcm7435-memc-ddr" and |
| "brcm,brcmstb-memc-ddr" |
| |
| - reg : the DDR sequencer register range and length |
| |
| Example: |
| |
| memc-ddr@2000 { |
| compatible = "brcm,bcm7425-memc-ddr", "brcm,brcmstb-memc-ddr"; |
| reg = <0x2000 0x300>; |
| }; |
| |
| == MEMC Arbiter |
| |
| The memory controller arbiter is responsible for memory clients allocation |
| (bandwidth, priorities etc.) and needs to have its contents restored during |
| deep sleep states (S3). |
| |
| Required properties: |
| |
| - compatible : should contain one of these |
| "brcm,brcmstb-memc-arb-v10.0.0.0" |
| "brcm,brcmstb-memc-arb" |
| |
| - reg : the DDR Arbiter register range and length |
| |
| Example: |
| |
| memc-arb@1000 { |
| compatible = "brcm,brcmstb-memc-arb-v10.0.0.0"; |
| reg = <0x1000 0x248>; |
| }; |
| |
| == Timers |
| |
| The Broadcom STB chips contain a timer block with several general purpose |
| timers that can be used. |
| |
| Required properties: |
| |
| - compatible : should contain one of: |
| "brcm,bcm7425-timers" |
| "brcm,bcm7429-timers" |
| "brcm,bcm7435-timers and |
| "brcm,brcmstb-timers" |
| - reg : the timers register range |
| - interrupts : the interrupt line for this timer block |
| |
| Example: |
| |
| timers: timer@4067c0 { |
| compatible = "brcm,bcm7425-timers", "brcm,brcmstb-timers"; |
| reg = <0x4067c0 0x40>; |
| interrupts = <&periph_intc 19>; |
| }; |