summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/mips/brcm/soc.txt
blob: 356c29789cf54862e1ece93dc40449e221481304 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
* 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>;
	};