1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2019 BayLibre, SAS
4 * Author: Neil Armstrong <narmstrong@baylibre.com>
5 * Copyright (c) 2019 Christian Hewitt <christianshewitt@gmail.com>
6 */
7
8#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
9
10/ {
11	model = "Khadas VIM3";
12
13	vddcpu_a: regulator-vddcpu-a {
14		/*
15		 * MP8756GD Regulator.
16		 */
17		compatible = "pwm-regulator";
18
19		regulator-name = "VDDCPU_A";
20		regulator-min-microvolt = <690000>;
21		regulator-max-microvolt = <1050000>;
22
23		vin-supply = <&dc_in>;
24
25		pwms = <&pwm_ab 0 1250 0>;
26		pwm-dutycycle-range = <100 0>;
27
28		regulator-boot-on;
29		regulator-always-on;
30	};
31
32	vddcpu_b: regulator-vddcpu-b {
33		/*
34		 * Silergy SY8030DEC Regulator.
35		 */
36		compatible = "pwm-regulator";
37
38		regulator-name = "VDDCPU_B";
39		regulator-min-microvolt = <690000>;
40		regulator-max-microvolt = <1050000>;
41
42		vin-supply = <&vsys_3v3>;
43
44		pwms = <&pwm_AO_cd 1 1250 0>;
45		pwm-dutycycle-range = <100 0>;
46
47		regulator-boot-on;
48		regulator-always-on;
49	};
50
51	sound {
52		compatible = "amlogic,axg-sound-card";
53		model = "G12B-KHADAS-VIM3";
54		audio-aux-devs = <&tdmout_a>;
55		audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
56				"TDMOUT_A IN 1", "FRDDR_B OUT 0",
57				"TDMOUT_A IN 2", "FRDDR_C OUT 0",
58				"TDM_A Playback", "TDMOUT_A OUT";
59
60		assigned-clocks = <&clkc CLKID_MPLL2>,
61				  <&clkc CLKID_MPLL0>,
62				  <&clkc CLKID_MPLL1>;
63		assigned-clock-parents = <0>, <0>, <0>;
64		assigned-clock-rates = <294912000>,
65				       <270950400>,
66				       <393216000>;
67		status = "okay";
68
69		dai-link-0 {
70			sound-dai = <&frddr_a>;
71		};
72
73		dai-link-1 {
74			sound-dai = <&frddr_b>;
75		};
76
77		dai-link-2 {
78			sound-dai = <&frddr_c>;
79		};
80
81		/* 8ch hdmi interface */
82		dai-link-3 {
83			sound-dai = <&tdmif_a>;
84			dai-format = "i2s";
85			dai-tdm-slot-tx-mask-0 = <1 1>;
86			dai-tdm-slot-tx-mask-1 = <1 1>;
87			dai-tdm-slot-tx-mask-2 = <1 1>;
88			dai-tdm-slot-tx-mask-3 = <1 1>;
89			mclk-fs = <256>;
90
91			codec {
92				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
93			};
94		};
95
96		/* hdmi glue */
97		dai-link-4 {
98			sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
99
100			codec {
101				sound-dai = <&hdmi_tx>;
102			};
103		};
104	};
105};
106
107&arb {
108	status = "okay";
109};
110
111&clkc_audio {
112	status = "okay";
113};
114
115&cpu0 {
116	cpu-supply = <&vddcpu_b>;
117	operating-points-v2 = <&cpu_opp_table_0>;
118	clocks = <&clkc CLKID_CPU_CLK>;
119	clock-latency = <50000>;
120};
121
122&cpu1 {
123	cpu-supply = <&vddcpu_b>;
124	operating-points-v2 = <&cpu_opp_table_0>;
125	clocks = <&clkc CLKID_CPU_CLK>;
126	clock-latency = <50000>;
127};
128
129&cpu100 {
130	cpu-supply = <&vddcpu_a>;
131	operating-points-v2 = <&cpub_opp_table_1>;
132	clocks = <&clkc CLKID_CPUB_CLK>;
133	clock-latency = <50000>;
134};
135
136&cpu101 {
137	cpu-supply = <&vddcpu_a>;
138	operating-points-v2 = <&cpub_opp_table_1>;
139	clocks = <&clkc CLKID_CPUB_CLK>;
140	clock-latency = <50000>;
141};
142
143&cpu102 {
144	cpu-supply = <&vddcpu_a>;
145	operating-points-v2 = <&cpub_opp_table_1>;
146	clocks = <&clkc CLKID_CPUB_CLK>;
147	clock-latency = <50000>;
148};
149
150&cpu103 {
151	cpu-supply = <&vddcpu_a>;
152	operating-points-v2 = <&cpub_opp_table_1>;
153	clocks = <&clkc CLKID_CPUB_CLK>;
154	clock-latency = <50000>;
155};
156
157&frddr_a {
158	status = "okay";
159};
160
161&frddr_b {
162	status = "okay";
163};
164
165&frddr_c {
166	status = "okay";
167};
168
169&pwm_ab {
170	pinctrl-0 = <&pwm_a_e_pins>;
171	pinctrl-names = "default";
172	clocks = <&xtal>;
173	clock-names = "clkin0";
174	status = "okay";
175};
176
177&pwm_AO_cd {
178	pinctrl-0 = <&pwm_ao_d_e_pins>;
179	pinctrl-names = "default";
180	clocks = <&xtal>;
181	clock-names = "clkin1";
182	status = "okay";
183};
184
185&tdmif_a {
186	status = "okay";
187};
188
189&tdmout_a {
190	status = "okay";
191};
192
193&tohdmitx {
194	status = "okay";
195};
196