mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-25 20:43:32 +00:00
208 lines
3.6 KiB
Text
208 lines
3.6 KiB
Text
|
NVIDIA Tegra20 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,tegra20-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 96 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 95 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 96 and
|
||
|
above.
|
||
|
|
||
|
0 cpu
|
||
|
1 unassigned
|
||
|
2 unassigned
|
||
|
3 ac97
|
||
|
4 rtc
|
||
|
5 tmr
|
||
|
6 uart1
|
||
|
7 unassigned (register bit affects uart2 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 twc
|
||
|
17 pwm
|
||
|
18 i2s2
|
||
|
19 epp
|
||
|
20 unassigned (register bit affects vi and vi_sensor)
|
||
|
21 2d
|
||
|
22 usbd
|
||
|
23 isp
|
||
|
24 3d
|
||
|
25 ide
|
||
|
26 disp2
|
||
|
27 disp1
|
||
|
28 host1x
|
||
|
29 vcp
|
||
|
30 unassigned
|
||
|
31 cache2
|
||
|
|
||
|
32 mem
|
||
|
33 ahbdma
|
||
|
34 apbdma
|
||
|
35 unassigned
|
||
|
36 kbc
|
||
|
37 stat_mon
|
||
|
38 pmc
|
||
|
39 fuse
|
||
|
40 kfuse
|
||
|
41 sbc1
|
||
|
42 snor
|
||
|
43 spi1
|
||
|
44 sbc2
|
||
|
45 xio
|
||
|
46 sbc3
|
||
|
47 dvc
|
||
|
48 dsi
|
||
|
49 unassigned (register bit affects tvo and cve)
|
||
|
50 mipi
|
||
|
51 hdmi
|
||
|
52 csi
|
||
|
53 tvdac
|
||
|
54 i2c2
|
||
|
55 uart3
|
||
|
56 unassigned
|
||
|
57 emc
|
||
|
58 usb2
|
||
|
59 usb3
|
||
|
60 mpe
|
||
|
61 vde
|
||
|
62 bsea
|
||
|
63 bsev
|
||
|
|
||
|
64 speedo
|
||
|
65 uart4
|
||
|
66 uart5
|
||
|
67 i2c3
|
||
|
68 sbc4
|
||
|
69 sdmmc3
|
||
|
70 pcie
|
||
|
71 owr
|
||
|
72 afi
|
||
|
73 csite
|
||
|
74 unassigned
|
||
|
75 avpucq
|
||
|
76 la
|
||
|
77 unassigned
|
||
|
78 unassigned
|
||
|
79 unassigned
|
||
|
80 unassigned
|
||
|
81 unassigned
|
||
|
82 unassigned
|
||
|
83 unassigned
|
||
|
84 irama
|
||
|
85 iramb
|
||
|
86 iramc
|
||
|
87 iramd
|
||
|
88 cram2
|
||
|
89 audio_2x a/k/a audio_2x_sync_clk
|
||
|
90 clk_d
|
||
|
91 unassigned
|
||
|
92 sus
|
||
|
93 cdev1
|
||
|
94 cdev2
|
||
|
95 unassigned
|
||
|
|
||
|
96 uart2
|
||
|
97 vfir
|
||
|
98 spdif_in
|
||
|
99 spdif_out
|
||
|
100 vi
|
||
|
101 vi_sensor
|
||
|
102 tvo
|
||
|
103 cve
|
||
|
104 osc
|
||
|
105 clk_32k a/k/a clk_s
|
||
|
106 clk_m
|
||
|
107 sclk
|
||
|
108 cclk
|
||
|
109 hclk
|
||
|
110 pclk
|
||
|
111 blink
|
||
|
112 pll_a
|
||
|
113 pll_a_out0
|
||
|
114 pll_c
|
||
|
115 pll_c_out1
|
||
|
116 pll_d
|
||
|
117 pll_d_out0
|
||
|
118 pll_e
|
||
|
119 pll_m
|
||
|
120 pll_m_out1
|
||
|
121 pll_p
|
||
|
122 pll_p_out1
|
||
|
123 pll_p_out2
|
||
|
124 pll_p_out3
|
||
|
125 pll_p_out4
|
||
|
126 pll_s
|
||
|
127 pll_u
|
||
|
128 pll_x
|
||
|
129 cop a/k/a avp
|
||
|
130 audio a/k/a audio_sync_clk
|
||
|
|
||
|
Example SoC include file:
|
||
|
|
||
|
/ {
|
||
|
tegra_car: clock@60006000 {
|
||
|
compatible = "nvidia,tegra20-car";
|
||
|
reg = <0x60006000 0x1000>;
|
||
|
#clock-cells = <1>;
|
||
|
};
|
||
|
|
||
|
usb@c5004000 {
|
||
|
clocks = <&tegra_car 58>; /* usb2 */
|
||
|
};
|
||
|
};
|
||
|
|
||
|
Example board file:
|
||
|
|
||
|
/ {
|
||
|
clocks {
|
||
|
#address-cells = <1>;
|
||
|
#size-cells = <0>;
|
||
|
|
||
|
osc: clock {
|
||
|
compatible = "fixed-clock";
|
||
|
#clock-cells = <0>;
|
||
|
clock-frequency = <12000000>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
i2c@7000d000 {
|
||
|
pmic@34 {
|
||
|
compatible = "ti,tps6586x";
|
||
|
reg = <0x34>;
|
||
|
|
||
|
clk_32k: clock {
|
||
|
compatible = "fixed-clock";
|
||
|
#clock-cells = <0>;
|
||
|
clock-frequency = <32768>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
&tegra_car {
|
||
|
clocks = <&clk_32k> <&osc>;
|
||
|
};
|
||
|
};
|