aboutsummaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/clock/nvidia,tegra30-car.txt
blob: f3da3be5fcadc460fdaa84fb172107b7c8111f02 (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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
NVIDIA Tegra30 Clock And Reset Controller

This binding uses the common clock binding:
Documentation/devicetree/bindings/clock/clock-bindings.txt

The CAR (Clock And Reset) Controller on Tegra is the HW module responsible
for muxing and gating Tegra's clocks, and setting their rates.

Required properties :
- compatible : Should be "nvidia,tegra30-car"
- reg : Should contain CAR registers location and length
- clocks : Should contain phandle and clock specifiers for two clocks:
  the 32 KHz "32k_in", and the board-specific oscillator "osc".
- #clock-cells : Should be 1.
  In clock consumers, this cell represents the clock ID exposed by the CAR.

  The first 130 clocks are numbered to match the bits in the CAR's CLK_OUT_ENB
  registers. These IDs often match those in the CAR's RST_DEVICES registers,
  but not in all cases. Some bits in CLK_OUT_ENB affect multiple clocks. In
  this case, those clocks are assigned IDs above 160 in order to highlight
  this issue. Implementations that interpret these clock IDs as bit values
  within the CLK_OUT_ENB or RST_DEVICES registers should be careful to
  explicitly handle these special cases.

  The balance of the clocks controlled by the CAR are assigned IDs of 160 and
  above.

  0	cpu
  1	unassigned
  2	unassigned
  3	unassigned
  4	rtc
  5	timer
  6	uarta
  7	unassigned	(register bit affects uartb and vfir)
  8	gpio
  9	sdmmc2
  10	unassigned	(register bit affects spdif_in and spdif_out)
  11	i2s1
  12	i2c1
  13	ndflash
  14	sdmmc1
  15	sdmmc4
  16	unassigned
  17	pwm
  18	i2s2
  19	epp
  20	unassigned	(register bit affects vi and vi_sensor)
  21	2d
  22	usbd
  23	isp
  24	3d
  25	unassigned
  26	disp2
  27	disp1
  28	host1x
  29	vcp
  30	i2s0
  31	cop_cache

  32	mc
  33	ahbdma
  34	apbdma
  35	unassigned
  36	kbc
  37	statmon
  38	pmc
  39	unassigned	(register bit affects fuse and fuse_burn)
  40	kfuse
  41	sbc1
  42	nor
  43	unassigned
  44	sbc2
  45	unassigned
  46	sbc3
  47	i2c5
  48	dsia
  49	unassigned	(register bit affects cve and tvo)
  50	mipi
  51	hdmi
  52	csi
  53	tvdac
  54	i2c2
  55	uartc
  56	unassigned
  57	emc
  58	usb2
  59	usb3
  60	mpe
  61	vde
  62	bsea
  63	bsev

  64	speedo
  65	uartd
  66	uarte
  67	i2c3
  68	sbc4
  69	sdmmc3
  70	pcie
  71	owr
  72	afi
  73	csite
  74	pciex
  75	avpucq
  76	la
  77	unassigned
  78	unassigned
  79	dtv
  80	ndspeed
  81	i2cslow
  82	dsib
  83	unassigned
  84	irama
  85	iramb
  86	iramc
  87	iramd
  88	cram2
  89	unassigned
  90	audio_2x	a/k/a audio_2x_sync_clk
  91	unassigned
  92	csus
  93	cdev2
  94	cdev1
  95	unassigned

  96	cpu_g
  97	cpu_lp
  98	3d2
  99	mselect
  100	tsensor
  101	i2s3
  102	i2s4
  103	i2c4
  104	sbc5
  105	sbc6
  106	d_audio
  107	apbif
  108	dam0
  109	dam1
  110	dam2
  111	hda2codec_2x
  112	atomics
  113	audio0_2x
  114	audio1_2x
  115	audio2_2x
  116	audio3_2x
  117	audio4_2x
  118	audio5_2x
  119	actmon
  120	extern1
  121	extern2
  122	extern3
  123	sata_oob
  124	sata
  125	hda
  127	se
  128	hda2hdmi
  129	sata_cold

  160	uartb
  161	vfir
  162	spdif_in
  163	spdif_out
  164	vi
  165	vi_sensor
  166	fuse
  167	fuse_burn
  168	cve
  169	tvo

  170	clk_32k
  171	clk_m
  172	clk_m_div2
  173	clk_m_div4
  174	pll_ref
  175	pll_c
  176	pll_c_out1
  177	pll_m
  178	pll_m_out1
  179	pll_p
  180	pll_p_out1
  181	pll_p_out2
  182	pll_p_out3
  183	pll_p_out4
  184	pll_a
  185	pll_a_out0
  186	pll_d
  187	pll_d_out0
  188	pll_d2
  189	pll_d2_out0
  190	pll_u
  191	pll_x
  192	pll_x_out0
  193	pll_e
  194	spdif_in_sync
  195	i2s0_sync
  196	i2s1_sync
  197	i2s2_sync
  198	i2s3_sync
  199	i2s4_sync
  200	vimclk
  201	audio0
  202	audio1
  203	audio2
  204	audio3
  205	audio4
  206	audio5
  207	clk_out_1 (extern1)
  208	clk_out_2 (extern2)
  209	clk_out_3 (extern3)
  210	sclk
  211	blink
  212	cclk_g
  213	cclk_lp
  214	twd
  215	cml0
  216	cml1
  217	hclk
  218	pclk

Example SoC include file:

/ {
	tegra_car: clock {
		compatible = "nvidia,tegra30-car";
		reg = <0x60006000 0x1000>;
		#clock-cells = <1>;
	};

	usb@c5004000 {
		clocks = <&tegra_car 58>; /* usb2 */
	};
};

Example board file:

/ {
	clocks {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		osc: clock@0 {
			compatible = "fixed-clock";
			reg = <0>;
			#clock-cells = <0>;
			clock-frequency = <12000000>;
		};

		clk_32k: clock@1 {
			compatible = "fixed-clock";
			reg = <1>;
			#clock-cells = <0>;
			clock-frequency = <32768>;
		};
	};

	&tegra_car {
		clocks = <&clk_32k> <&osc>;
	};
};