xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/arm/bcm/brcm,brcmstb.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunARM Broadcom STB platforms Device Tree Bindings
2*4882a593Smuzhiyun-----------------------------------------------
3*4882a593SmuzhiyunBoards with Broadcom Brahma15 ARM-based BCMxxxx (generally BCM7xxx variants)
4*4882a593SmuzhiyunSoC shall have the following DT organization:
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunRequired root node properties:
7*4882a593Smuzhiyun    - compatible: "brcm,bcm<chip_id>", "brcm,brcmstb"
8*4882a593Smuzhiyun
9*4882a593Smuzhiyunexample:
10*4882a593Smuzhiyun/ {
11*4882a593Smuzhiyun    #address-cells = <2>;
12*4882a593Smuzhiyun    #size-cells = <2>;
13*4882a593Smuzhiyun    model = "Broadcom STB (bcm7445)";
14*4882a593Smuzhiyun    compatible = "brcm,bcm7445", "brcm,brcmstb";
15*4882a593Smuzhiyun
16*4882a593SmuzhiyunFurther, syscon nodes that map platform-specific registers used for general
17*4882a593Smuzhiyunsystem control is required:
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun    - compatible: "brcm,bcm<chip_id>-sun-top-ctrl", "syscon"
20*4882a593Smuzhiyun    - compatible: "brcm,bcm<chip_id>-cpu-biu-ctrl",
21*4882a593Smuzhiyun		  "brcm,brcmstb-cpu-biu-ctrl",
22*4882a593Smuzhiyun		  "syscon"
23*4882a593Smuzhiyun    - compatible: "brcm,bcm<chip_id>-hif-continuation", "syscon"
24*4882a593Smuzhiyun
25*4882a593Smuzhiyuncpu-biu-ctrl node
26*4882a593Smuzhiyun-------------------
27*4882a593SmuzhiyunSoCs with Broadcom Brahma15 ARM-based and Brahma53 ARM64-based CPUs have a
28*4882a593Smuzhiyunspecific Bus Interface Unit (BIU) block which controls and interfaces the CPU
29*4882a593Smuzhiyuncomplex to the different Memory Controller Ports (MCP), one per memory
30*4882a593Smuzhiyuncontroller (MEMC). This BIU block offers a feature called Write Pairing which
31*4882a593Smuzhiyunconsists in collapsing two adjacent cache lines into a single (bursted) write
32*4882a593Smuzhiyuntransaction towards the memory controller (MEMC) to maximize write bandwidth.
33*4882a593Smuzhiyun
34*4882a593SmuzhiyunRequired properties:
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun    - compatible: must be "brcm,bcm7445-cpu-biu-ctrl", "brcm,brcmstb-cpu-biu-ctrl", "syscon"
37*4882a593Smuzhiyun
38*4882a593SmuzhiyunOptional properties:
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun    - brcm,write-pairing:
41*4882a593Smuzhiyun	Boolean property, which when present indicates that the chip
42*4882a593Smuzhiyun	supports write-pairing.
43*4882a593Smuzhiyun
44*4882a593Smuzhiyunexample:
45*4882a593Smuzhiyun    rdb {
46*4882a593Smuzhiyun        #address-cells = <1>;
47*4882a593Smuzhiyun        #size-cells = <1>;
48*4882a593Smuzhiyun        compatible = "simple-bus";
49*4882a593Smuzhiyun        ranges = <0 0x00 0xf0000000 0x1000000>;
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun        sun_top_ctrl: syscon@404000 {
52*4882a593Smuzhiyun            compatible = "brcm,bcm7445-sun-top-ctrl", "syscon";
53*4882a593Smuzhiyun            reg = <0x404000 0x51c>;
54*4882a593Smuzhiyun        };
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun        hif_cpubiuctrl: syscon@3e2400 {
57*4882a593Smuzhiyun            compatible = "brcm,bcm7445-cpu-biu-ctrl", "brcm,brcmstb-cpu-biu-ctrl", "syscon";
58*4882a593Smuzhiyun            reg = <0x3e2400 0x5b4>;
59*4882a593Smuzhiyun            brcm,write-pairing;
60*4882a593Smuzhiyun        };
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun        hif_continuation: syscon@452000 {
63*4882a593Smuzhiyun            compatible = "brcm,bcm7445-hif-continuation", "syscon";
64*4882a593Smuzhiyun            reg = <0x452000 0x100>;
65*4882a593Smuzhiyun        };
66*4882a593Smuzhiyun    };
67*4882a593Smuzhiyun
68*4882a593SmuzhiyunNodes that allow for support of SMP initialization and reboot are required:
69*4882a593Smuzhiyun
70*4882a593Smuzhiyunsmpboot
71*4882a593Smuzhiyun-------
72*4882a593SmuzhiyunRequired properties:
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun    - compatible
75*4882a593Smuzhiyun        The string "brcm,brcmstb-smpboot".
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun    - syscon-cpu
78*4882a593Smuzhiyun        A phandle / integer array property which lets the BSP know the location
79*4882a593Smuzhiyun        of certain CPU power-on registers.
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun        The layout of the property is as follows:
82*4882a593Smuzhiyun            o a phandle to the "hif_cpubiuctrl" syscon node
83*4882a593Smuzhiyun            o offset to the base CPU power zone register
84*4882a593Smuzhiyun            o offset to the base CPU reset register
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun    - syscon-cont
87*4882a593Smuzhiyun        A phandle pointing to the syscon node which describes the CPU boot
88*4882a593Smuzhiyun        continuation registers.
89*4882a593Smuzhiyun            o a phandle to the "hif_continuation" syscon node
90*4882a593Smuzhiyun
91*4882a593Smuzhiyunexample:
92*4882a593Smuzhiyun    smpboot {
93*4882a593Smuzhiyun        compatible = "brcm,brcmstb-smpboot";
94*4882a593Smuzhiyun        syscon-cpu = <&hif_cpubiuctrl 0x88 0x178>;
95*4882a593Smuzhiyun        syscon-cont = <&hif_continuation>;
96*4882a593Smuzhiyun    };
97*4882a593Smuzhiyun
98*4882a593Smuzhiyunreboot
99*4882a593Smuzhiyun-------
100*4882a593SmuzhiyunRequired properties
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun    - compatible
103*4882a593Smuzhiyun        The string property "brcm,brcmstb-reboot" for 40nm/28nm chips with
104*4882a593Smuzhiyun        the new SYS_CTRL interface, or "brcm,bcm7038-reboot" for 65nm
105*4882a593Smuzhiyun        chips with the old SUN_TOP_CTRL interface.
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun    - syscon
108*4882a593Smuzhiyun        A phandle / integer array that points to the syscon node which describes
109*4882a593Smuzhiyun        the general system reset registers.
110*4882a593Smuzhiyun            o a phandle to "sun_top_ctrl"
111*4882a593Smuzhiyun            o offset to the "reset source enable" register
112*4882a593Smuzhiyun            o offset to the "software master reset" register
113*4882a593Smuzhiyun
114*4882a593Smuzhiyunexample:
115*4882a593Smuzhiyun    reboot {
116*4882a593Smuzhiyun        compatible = "brcm,brcmstb-reboot";
117*4882a593Smuzhiyun        syscon = <&sun_top_ctrl 0x304 0x308>;
118*4882a593Smuzhiyun    };
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun
122*4882a593SmuzhiyunPower management
123*4882a593Smuzhiyun----------------
124*4882a593Smuzhiyun
125*4882a593SmuzhiyunFor power management (particularly, S2/S3/S5 system suspend), the following SoC
126*4882a593Smuzhiyuncomponents are needed:
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun= Always-On control block (AON CTRL)
129*4882a593Smuzhiyun
130*4882a593SmuzhiyunThis hardware provides control registers for the "always-on" (even in low-power
131*4882a593Smuzhiyunmodes) hardware, such as the Power Management State Machine (PMSM).
132*4882a593Smuzhiyun
133*4882a593SmuzhiyunRequired properties:
134*4882a593Smuzhiyun- compatible     : should contain "brcm,brcmstb-aon-ctrl"
135*4882a593Smuzhiyun- reg            : the register start and length for the AON CTRL block
136*4882a593Smuzhiyun
137*4882a593SmuzhiyunExample:
138*4882a593Smuzhiyun
139*4882a593Smuzhiyunaon-ctrl@410000 {
140*4882a593Smuzhiyun	compatible = "brcm,brcmstb-aon-ctrl";
141*4882a593Smuzhiyun	reg = <0x410000 0x400>;
142*4882a593Smuzhiyun};
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun= Memory controllers
145*4882a593Smuzhiyun
146*4882a593SmuzhiyunA Broadcom STB SoC typically has a number of independent memory controllers,
147*4882a593Smuzhiyuneach of which may have several associated hardware blocks, which are versioned
148*4882a593Smuzhiyunindependently (control registers, DDR PHYs, etc.). One might consider
149*4882a593Smuzhiyundescribing these controllers as a parent "memory controllers" block, which
150*4882a593Smuzhiyuncontains N sub-nodes (one for each controller in the system), each of which is
151*4882a593Smuzhiyunassociated with a number of hardware register resources (e.g., its PHY). See
152*4882a593Smuzhiyunthe example device tree snippet below.
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun== MEMC (MEMory Controller)
155*4882a593Smuzhiyun
156*4882a593SmuzhiyunRepresents a single memory controller instance.
157*4882a593Smuzhiyun
158*4882a593SmuzhiyunRequired properties:
159*4882a593Smuzhiyun- compatible     : should contain "brcm,brcmstb-memc" and "simple-bus"
160*4882a593Smuzhiyun
161*4882a593SmuzhiyunShould contain subnodes for any of the following relevant hardware resources:
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun== DDR PHY control
164*4882a593Smuzhiyun
165*4882a593SmuzhiyunControl registers for this memory controller's DDR PHY.
166*4882a593Smuzhiyun
167*4882a593SmuzhiyunRequired properties:
168*4882a593Smuzhiyun- compatible     : should contain one of these
169*4882a593Smuzhiyun	"brcm,brcmstb-ddr-phy-v71.1"
170*4882a593Smuzhiyun	"brcm,brcmstb-ddr-phy-v72.0"
171*4882a593Smuzhiyun	"brcm,brcmstb-ddr-phy-v225.1"
172*4882a593Smuzhiyun	"brcm,brcmstb-ddr-phy-v240.1"
173*4882a593Smuzhiyun	"brcm,brcmstb-ddr-phy-v240.2"
174*4882a593Smuzhiyun
175*4882a593Smuzhiyun- reg            : the DDR PHY register range
176*4882a593Smuzhiyun
177*4882a593Smuzhiyun== DDR SHIMPHY
178*4882a593Smuzhiyun
179*4882a593SmuzhiyunControl registers for this memory controller's DDR SHIMPHY.
180*4882a593Smuzhiyun
181*4882a593SmuzhiyunRequired properties:
182*4882a593Smuzhiyun- compatible     : should contain "brcm,brcmstb-ddr-shimphy-v1.0"
183*4882a593Smuzhiyun- reg            : the DDR SHIMPHY register range
184*4882a593Smuzhiyun
185*4882a593Smuzhiyun== MEMC DDR control
186*4882a593Smuzhiyun
187*4882a593SmuzhiyunSequencer DRAM parameters and control registers. Used for Self-Refresh
188*4882a593SmuzhiyunPower-Down (SRPD), among other things.
189*4882a593Smuzhiyun
190*4882a593SmuzhiyunRequired properties:
191*4882a593Smuzhiyun- compatible     : should contain one of these
192*4882a593Smuzhiyun	"brcm,brcmstb-memc-ddr-rev-b.2.1"
193*4882a593Smuzhiyun	"brcm,brcmstb-memc-ddr-rev-b.2.2"
194*4882a593Smuzhiyun	"brcm,brcmstb-memc-ddr-rev-b.2.3"
195*4882a593Smuzhiyun	"brcm,brcmstb-memc-ddr-rev-b.3.0"
196*4882a593Smuzhiyun	"brcm,brcmstb-memc-ddr-rev-b.3.1"
197*4882a593Smuzhiyun	"brcm,brcmstb-memc-ddr"
198*4882a593Smuzhiyun- reg            : the MEMC DDR register range
199*4882a593Smuzhiyun
200*4882a593SmuzhiyunExample:
201*4882a593Smuzhiyun
202*4882a593Smuzhiyunmemory_controllers {
203*4882a593Smuzhiyun	ranges;
204*4882a593Smuzhiyun	compatible = "simple-bus";
205*4882a593Smuzhiyun
206*4882a593Smuzhiyun	memc@0 {
207*4882a593Smuzhiyun		compatible = "brcm,brcmstb-memc", "simple-bus";
208*4882a593Smuzhiyun		ranges;
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun		ddr-phy@f1106000 {
211*4882a593Smuzhiyun			compatible = "brcm,brcmstb-ddr-phy-v240.1";
212*4882a593Smuzhiyun			reg = <0xf1106000 0x21c>;
213*4882a593Smuzhiyun		};
214*4882a593Smuzhiyun
215*4882a593Smuzhiyun		shimphy@f1108000 {
216*4882a593Smuzhiyun			compatible = "brcm,brcmstb-ddr-shimphy-v1.0";
217*4882a593Smuzhiyun			reg = <0xf1108000 0xe4>;
218*4882a593Smuzhiyun		};
219*4882a593Smuzhiyun
220*4882a593Smuzhiyun		memc-ddr@f1102000 {
221*4882a593Smuzhiyun			reg = <0xf1102000 0x800>;
222*4882a593Smuzhiyun			compatible = "brcm,brcmstb-memc-ddr";
223*4882a593Smuzhiyun		};
224*4882a593Smuzhiyun	};
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun	memc@1 {
227*4882a593Smuzhiyun		compatible = "brcm,brcmstb-memc", "simple-bus";
228*4882a593Smuzhiyun		ranges;
229*4882a593Smuzhiyun
230*4882a593Smuzhiyun		ddr-phy@f1186000 {
231*4882a593Smuzhiyun			compatible = "brcm,brcmstb-ddr-phy-v240.1";
232*4882a593Smuzhiyun			reg = <0xf1186000 0x21c>;
233*4882a593Smuzhiyun		};
234*4882a593Smuzhiyun
235*4882a593Smuzhiyun		shimphy@f1188000 {
236*4882a593Smuzhiyun			compatible = "brcm,brcmstb-ddr-shimphy-v1.0";
237*4882a593Smuzhiyun			reg = <0xf1188000 0xe4>;
238*4882a593Smuzhiyun		};
239*4882a593Smuzhiyun
240*4882a593Smuzhiyun		memc-ddr@f1182000 {
241*4882a593Smuzhiyun			reg = <0xf1182000 0x800>;
242*4882a593Smuzhiyun			compatible = "brcm,brcmstb-memc-ddr";
243*4882a593Smuzhiyun		};
244*4882a593Smuzhiyun	};
245*4882a593Smuzhiyun
246*4882a593Smuzhiyun	memc@2 {
247*4882a593Smuzhiyun		compatible = "brcm,brcmstb-memc", "simple-bus";
248*4882a593Smuzhiyun		ranges;
249*4882a593Smuzhiyun
250*4882a593Smuzhiyun		ddr-phy@f1206000 {
251*4882a593Smuzhiyun			compatible = "brcm,brcmstb-ddr-phy-v240.1";
252*4882a593Smuzhiyun			reg = <0xf1206000 0x21c>;
253*4882a593Smuzhiyun		};
254*4882a593Smuzhiyun
255*4882a593Smuzhiyun		shimphy@f1208000 {
256*4882a593Smuzhiyun			compatible = "brcm,brcmstb-ddr-shimphy-v1.0";
257*4882a593Smuzhiyun			reg = <0xf1208000 0xe4>;
258*4882a593Smuzhiyun		};
259*4882a593Smuzhiyun
260*4882a593Smuzhiyun		memc-ddr@f1202000 {
261*4882a593Smuzhiyun			reg = <0xf1202000 0x800>;
262*4882a593Smuzhiyun			compatible = "brcm,brcmstb-memc-ddr";
263*4882a593Smuzhiyun		};
264*4882a593Smuzhiyun	};
265*4882a593Smuzhiyun};
266