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>;
	};
};
