1700ab8d8SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2700ab8d8SNeil Armstrong/*
3700ab8d8SNeil Armstrong * Copyright (c) 2019 BayLibre, SAS
4700ab8d8SNeil Armstrong * Author: Neil Armstrong <narmstrong@baylibre.com>
5700ab8d8SNeil Armstrong */
6700ab8d8SNeil Armstrong
7700ab8d8SNeil Armstrong/dts-v1/;
8700ab8d8SNeil Armstrong
9700ab8d8SNeil Armstrong#include "meson-sm1.dtsi"
10700ab8d8SNeil Armstrong#include "meson-khadas-vim3.dtsi"
11b8b85d01SChristian Hewitt#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
12700ab8d8SNeil Armstrong
13700ab8d8SNeil Armstrong/ {
14700ab8d8SNeil Armstrong	compatible = "khadas,vim3l", "amlogic,sm1";
15700ab8d8SNeil Armstrong	model = "Khadas VIM3L";
16700ab8d8SNeil Armstrong
17700ab8d8SNeil Armstrong	vddcpu: regulator-vddcpu {
18700ab8d8SNeil Armstrong		/*
19700ab8d8SNeil Armstrong		 * Silergy SY8030DEC Regulator.
20700ab8d8SNeil Armstrong		 */
21700ab8d8SNeil Armstrong		compatible = "pwm-regulator";
22700ab8d8SNeil Armstrong
23700ab8d8SNeil Armstrong		regulator-name = "VDDCPU";
24700ab8d8SNeil Armstrong		regulator-min-microvolt = <690000>;
25700ab8d8SNeil Armstrong		regulator-max-microvolt = <1050000>;
26700ab8d8SNeil Armstrong
27700ab8d8SNeil Armstrong		vin-supply = <&vsys_3v3>;
28700ab8d8SNeil Armstrong
29700ab8d8SNeil Armstrong		pwms = <&pwm_AO_cd 1 1250 0>;
30700ab8d8SNeil Armstrong		pwm-dutycycle-range = <100 0>;
31700ab8d8SNeil Armstrong
32700ab8d8SNeil Armstrong		regulator-boot-on;
33700ab8d8SNeil Armstrong		regulator-always-on;
34700ab8d8SNeil Armstrong	};
35b8b85d01SChristian Hewitt
36b8b85d01SChristian Hewitt	sound {
37b8b85d01SChristian Hewitt		compatible = "amlogic,axg-sound-card";
38b8b85d01SChristian Hewitt		model = "SM1-KHADAS-VIM3L";
39b8b85d01SChristian Hewitt		audio-aux-devs = <&tdmout_a>;
40b8b85d01SChristian Hewitt		audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
41b8b85d01SChristian Hewitt				"TDMOUT_A IN 1", "FRDDR_B OUT 0",
42b8b85d01SChristian Hewitt				"TDMOUT_A IN 2", "FRDDR_C OUT 0",
43b8b85d01SChristian Hewitt				"TDM_A Playback", "TDMOUT_A OUT";
44b8b85d01SChristian Hewitt
45b8b85d01SChristian Hewitt		assigned-clocks = <&clkc CLKID_MPLL2>,
46b8b85d01SChristian Hewitt				  <&clkc CLKID_MPLL0>,
47b8b85d01SChristian Hewitt				  <&clkc CLKID_MPLL1>;
48b8b85d01SChristian Hewitt		assigned-clock-parents = <0>, <0>, <0>;
49b8b85d01SChristian Hewitt		assigned-clock-rates = <294912000>,
50b8b85d01SChristian Hewitt				       <270950400>,
51b8b85d01SChristian Hewitt				       <393216000>;
52b8b85d01SChristian Hewitt		status = "okay";
53b8b85d01SChristian Hewitt
54b8b85d01SChristian Hewitt		dai-link-0 {
55b8b85d01SChristian Hewitt			sound-dai = <&frddr_a>;
56b8b85d01SChristian Hewitt		};
57b8b85d01SChristian Hewitt
58b8b85d01SChristian Hewitt		dai-link-1 {
59b8b85d01SChristian Hewitt			sound-dai = <&frddr_b>;
60b8b85d01SChristian Hewitt		};
61b8b85d01SChristian Hewitt
62b8b85d01SChristian Hewitt		dai-link-2 {
63b8b85d01SChristian Hewitt			sound-dai = <&frddr_c>;
64b8b85d01SChristian Hewitt		};
65b8b85d01SChristian Hewitt
66b8b85d01SChristian Hewitt		/* 8ch hdmi interface */
67b8b85d01SChristian Hewitt		dai-link-3 {
68b8b85d01SChristian Hewitt			sound-dai = <&tdmif_a>;
69b8b85d01SChristian Hewitt			dai-format = "i2s";
70b8b85d01SChristian Hewitt			dai-tdm-slot-tx-mask-0 = <1 1>;
71b8b85d01SChristian Hewitt			dai-tdm-slot-tx-mask-1 = <1 1>;
72b8b85d01SChristian Hewitt			dai-tdm-slot-tx-mask-2 = <1 1>;
73b8b85d01SChristian Hewitt			dai-tdm-slot-tx-mask-3 = <1 1>;
74b8b85d01SChristian Hewitt			mclk-fs = <256>;
75b8b85d01SChristian Hewitt
76b8b85d01SChristian Hewitt			codec {
77b8b85d01SChristian Hewitt				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
78b8b85d01SChristian Hewitt			};
79b8b85d01SChristian Hewitt		};
80b8b85d01SChristian Hewitt
81b8b85d01SChristian Hewitt		/* hdmi glue */
82b8b85d01SChristian Hewitt		dai-link-4 {
83b8b85d01SChristian Hewitt			sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
84b8b85d01SChristian Hewitt
85b8b85d01SChristian Hewitt			codec {
86b8b85d01SChristian Hewitt				sound-dai = <&hdmi_tx>;
87b8b85d01SChristian Hewitt			};
88b8b85d01SChristian Hewitt		};
89b8b85d01SChristian Hewitt	};
90b8b85d01SChristian Hewitt};
91b8b85d01SChristian Hewitt
92b8b85d01SChristian Hewitt&arb {
93b8b85d01SChristian Hewitt	status = "okay";
94b8b85d01SChristian Hewitt};
95b8b85d01SChristian Hewitt
96b8b85d01SChristian Hewitt&clkc_audio {
97b8b85d01SChristian Hewitt	status = "okay";
98700ab8d8SNeil Armstrong};
99700ab8d8SNeil Armstrong
100700ab8d8SNeil Armstrong&cpu0 {
101700ab8d8SNeil Armstrong	cpu-supply = <&vddcpu>;
102700ab8d8SNeil Armstrong	operating-points-v2 = <&cpu_opp_table>;
103700ab8d8SNeil Armstrong	clocks = <&clkc CLKID_CPU_CLK>;
104700ab8d8SNeil Armstrong	clock-latency = <50000>;
105700ab8d8SNeil Armstrong};
106700ab8d8SNeil Armstrong
107700ab8d8SNeil Armstrong&cpu1 {
108700ab8d8SNeil Armstrong	cpu-supply = <&vddcpu>;
109700ab8d8SNeil Armstrong	operating-points-v2 = <&cpu_opp_table>;
110700ab8d8SNeil Armstrong	clocks = <&clkc CLKID_CPU1_CLK>;
111700ab8d8SNeil Armstrong	clock-latency = <50000>;
112700ab8d8SNeil Armstrong};
113700ab8d8SNeil Armstrong
114700ab8d8SNeil Armstrong&cpu2 {
115700ab8d8SNeil Armstrong	cpu-supply = <&vddcpu>;
116700ab8d8SNeil Armstrong	operating-points-v2 = <&cpu_opp_table>;
117700ab8d8SNeil Armstrong	clocks = <&clkc CLKID_CPU2_CLK>;
118700ab8d8SNeil Armstrong	clock-latency = <50000>;
119700ab8d8SNeil Armstrong};
120700ab8d8SNeil Armstrong
121700ab8d8SNeil Armstrong&cpu3 {
122700ab8d8SNeil Armstrong	cpu-supply = <&vddcpu>;
123700ab8d8SNeil Armstrong	operating-points-v2 = <&cpu_opp_table>;
124700ab8d8SNeil Armstrong	clocks = <&clkc CLKID_CPU3_CLK>;
125700ab8d8SNeil Armstrong	clock-latency = <50000>;
126700ab8d8SNeil Armstrong};
127700ab8d8SNeil Armstrong
128b8b85d01SChristian Hewitt&frddr_a {
129b8b85d01SChristian Hewitt	status = "okay";
130b8b85d01SChristian Hewitt};
131b8b85d01SChristian Hewitt
132b8b85d01SChristian Hewitt&frddr_b {
133b8b85d01SChristian Hewitt	status = "okay";
134b8b85d01SChristian Hewitt};
135b8b85d01SChristian Hewitt
136b8b85d01SChristian Hewitt&frddr_c {
137b8b85d01SChristian Hewitt	status = "okay";
138b8b85d01SChristian Hewitt};
139b8b85d01SChristian Hewitt
140700ab8d8SNeil Armstrong&pwm_AO_cd {
141700ab8d8SNeil Armstrong	pinctrl-0 = <&pwm_ao_d_e_pins>;
142700ab8d8SNeil Armstrong	pinctrl-names = "default";
143700ab8d8SNeil Armstrong	clocks = <&xtal>;
144700ab8d8SNeil Armstrong	clock-names = "clkin1";
145700ab8d8SNeil Armstrong	status = "okay";
146700ab8d8SNeil Armstrong};
147ba1f8af7SNeil Armstrong
148ba1f8af7SNeil Armstrong/*
149ba1f8af7SNeil Armstrong * The VIM3 on-board  MCU can mux the PCIe/USB3.0 shared differential
150ba1f8af7SNeil Armstrong * lines using a FUSB340TMX USB 3.1 SuperSpeed Data Switch between
151ba1f8af7SNeil Armstrong * an USB3.0 Type A connector and a M.2 Key M slot.
152ba1f8af7SNeil Armstrong * The PHY driving these differential lines is shared between
153ba1f8af7SNeil Armstrong * the USB3.0 controller and the PCIe Controller, thus only
154ba1f8af7SNeil Armstrong * a single controller can use it.
155ba1f8af7SNeil Armstrong * If the MCU is configured to mux the PCIe/USB3.0 differential lines
156ba1f8af7SNeil Armstrong * to the M.2 Key M slot, uncomment the following block to disable
157ba1f8af7SNeil Armstrong * USB3.0 from the USB Complex and enable the PCIe controller.
158ba1f8af7SNeil Armstrong * The End User is not expected to uncomment the following except for
159ba1f8af7SNeil Armstrong * testing purposes, but instead rely on the firmware/bootloader to
160ba1f8af7SNeil Armstrong * update these nodes accordingly if PCIe mode is selected by the MCU.
161ba1f8af7SNeil Armstrong */
162ba1f8af7SNeil Armstrong/*
163ba1f8af7SNeil Armstrong&pcie {
164ba1f8af7SNeil Armstrong	status = "okay";
165ba1f8af7SNeil Armstrong};
166ba1f8af7SNeil Armstrong
167ba1f8af7SNeil Armstrong&usb {
168ba1f8af7SNeil Armstrong	phys = <&usb2_phy0>, <&usb2_phy1>;
169ba1f8af7SNeil Armstrong	phy-names = "usb2-phy0", "usb2-phy1";
170ba1f8af7SNeil Armstrong};
171ba1f8af7SNeil Armstrong */
172b8b85d01SChristian Hewitt
173b8b85d01SChristian Hewitt&tdmif_a {
174b8b85d01SChristian Hewitt	status = "okay";
175b8b85d01SChristian Hewitt};
176b8b85d01SChristian Hewitt
177b8b85d01SChristian Hewitt&tdmout_a {
178b8b85d01SChristian Hewitt	status = "okay";
179b8b85d01SChristian Hewitt};
180b8b85d01SChristian Hewitt
181b8b85d01SChristian Hewitt&tohdmitx {
182b8b85d01SChristian Hewitt	status = "okay";
183b8b85d01SChristian Hewitt};
184