xref: /openbmc/linux/arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m5.dts (revision 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e)
1976e9201SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2976e9201SNeil Armstrong/*
3976e9201SNeil Armstrong * Copyright (c) 2021 BayLibre SAS
4976e9201SNeil Armstrong * Author: Neil Armstrong <narmstrong@baylibre.com>
5976e9201SNeil Armstrong */
6976e9201SNeil Armstrong
7976e9201SNeil Armstrong/dts-v1/;
8976e9201SNeil Armstrong
9*ca8dac3aSChristian Hewitt#include "meson-sm1-bananapi.dtsi"
10976e9201SNeil Armstrong#include <dt-bindings/sound/meson-g12a-toacodec.h>
11976e9201SNeil Armstrong#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
12976e9201SNeil Armstrong
13976e9201SNeil Armstrong/ {
14976e9201SNeil Armstrong	compatible = "bananapi,bpi-m5", "amlogic,sm1";
15976e9201SNeil Armstrong	model = "Banana Pi BPI-M5";
16976e9201SNeil Armstrong
17976e9201SNeil Armstrong	/* TOFIX: handle CVBS_DET on SARADC channel 0 */
18976e9201SNeil Armstrong	cvbs-connector {
19976e9201SNeil Armstrong		compatible = "composite-video-connector";
20976e9201SNeil Armstrong
21976e9201SNeil Armstrong		port {
22976e9201SNeil Armstrong			cvbs_connector_in: endpoint {
23976e9201SNeil Armstrong				remote-endpoint = <&cvbs_vdac_out>;
24976e9201SNeil Armstrong			};
25976e9201SNeil Armstrong		};
26976e9201SNeil Armstrong	};
27976e9201SNeil Armstrong
28976e9201SNeil Armstrong	sound {
29976e9201SNeil Armstrong		compatible = "amlogic,axg-sound-card";
30976e9201SNeil Armstrong		model = "BPI-M5";
31976e9201SNeil Armstrong		audio-widgets = "Line", "Lineout";
32976e9201SNeil Armstrong		audio-aux-devs = <&tdmout_b>, <&tdmout_c>,
33976e9201SNeil Armstrong				 <&tdmin_a>, <&tdmin_b>, <&tdmin_c>;
34976e9201SNeil Armstrong		audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
35976e9201SNeil Armstrong				"TDMOUT_B IN 1", "FRDDR_B OUT 1",
36976e9201SNeil Armstrong				"TDMOUT_B IN 2", "FRDDR_C OUT 1",
37976e9201SNeil Armstrong				"TDM_B Playback", "TDMOUT_B OUT",
38976e9201SNeil Armstrong				"TDMOUT_C IN 0", "FRDDR_A OUT 2",
39976e9201SNeil Armstrong				"TDMOUT_C IN 1", "FRDDR_B OUT 2",
40976e9201SNeil Armstrong				"TDMOUT_C IN 2", "FRDDR_C OUT 2",
41976e9201SNeil Armstrong				"TDM_C Playback", "TDMOUT_C OUT",
42976e9201SNeil Armstrong				"TDMIN_A IN 4", "TDM_B Loopback",
43976e9201SNeil Armstrong				"TDMIN_B IN 4", "TDM_B Loopback",
44976e9201SNeil Armstrong				"TDMIN_C IN 4", "TDM_B Loopback",
45976e9201SNeil Armstrong				"TDMIN_A IN 5", "TDM_C Loopback",
46976e9201SNeil Armstrong				"TDMIN_B IN 5", "TDM_C Loopback",
47976e9201SNeil Armstrong				"TDMIN_C IN 5", "TDM_C Loopback",
48976e9201SNeil Armstrong				"TODDR_A IN 0", "TDMIN_A OUT",
49976e9201SNeil Armstrong				"TODDR_B IN 0", "TDMIN_A OUT",
50976e9201SNeil Armstrong				"TODDR_C IN 0", "TDMIN_A OUT",
51976e9201SNeil Armstrong				"TODDR_A IN 1", "TDMIN_B OUT",
52976e9201SNeil Armstrong				"TODDR_B IN 1", "TDMIN_B OUT",
53976e9201SNeil Armstrong				"TODDR_C IN 1", "TDMIN_B OUT",
54976e9201SNeil Armstrong				"TODDR_A IN 2", "TDMIN_C OUT",
55976e9201SNeil Armstrong				"TODDR_B IN 2", "TDMIN_C OUT",
56976e9201SNeil Armstrong				"TODDR_C IN 2", "TDMIN_C OUT",
57976e9201SNeil Armstrong				"Lineout", "ACODEC LOLP",
58976e9201SNeil Armstrong				"Lineout", "ACODEC LORP";
59976e9201SNeil Armstrong
60976e9201SNeil Armstrong		assigned-clocks = <&clkc CLKID_MPLL2>,
61976e9201SNeil Armstrong				  <&clkc CLKID_MPLL0>,
62976e9201SNeil Armstrong				  <&clkc CLKID_MPLL1>;
63976e9201SNeil Armstrong		assigned-clock-parents = <0>, <0>, <0>;
64976e9201SNeil Armstrong		assigned-clock-rates = <294912000>,
65976e9201SNeil Armstrong				       <270950400>,
66976e9201SNeil Armstrong				       <393216000>;
67976e9201SNeil Armstrong
68976e9201SNeil Armstrong		dai-link-0 {
69976e9201SNeil Armstrong			sound-dai = <&frddr_a>;
70976e9201SNeil Armstrong		};
71976e9201SNeil Armstrong
72976e9201SNeil Armstrong		dai-link-1 {
73976e9201SNeil Armstrong			sound-dai = <&frddr_b>;
74976e9201SNeil Armstrong		};
75976e9201SNeil Armstrong
76976e9201SNeil Armstrong		dai-link-2 {
77976e9201SNeil Armstrong			sound-dai = <&frddr_c>;
78976e9201SNeil Armstrong		};
79976e9201SNeil Armstrong
80976e9201SNeil Armstrong		dai-link-3 {
81976e9201SNeil Armstrong			sound-dai = <&toddr_a>;
82976e9201SNeil Armstrong		};
83976e9201SNeil Armstrong
84976e9201SNeil Armstrong		dai-link-4 {
85976e9201SNeil Armstrong			sound-dai = <&toddr_b>;
86976e9201SNeil Armstrong		};
87976e9201SNeil Armstrong
88976e9201SNeil Armstrong		dai-link-5 {
89976e9201SNeil Armstrong			sound-dai = <&toddr_c>;
90976e9201SNeil Armstrong		};
91976e9201SNeil Armstrong
92976e9201SNeil Armstrong		/* 8ch hdmi interface */
93976e9201SNeil Armstrong		dai-link-6 {
94976e9201SNeil Armstrong			sound-dai = <&tdmif_b>;
95976e9201SNeil Armstrong			dai-format = "i2s";
96976e9201SNeil Armstrong			dai-tdm-slot-tx-mask-0 = <1 1>;
97976e9201SNeil Armstrong			dai-tdm-slot-tx-mask-1 = <1 1>;
98976e9201SNeil Armstrong			dai-tdm-slot-tx-mask-2 = <1 1>;
99976e9201SNeil Armstrong			dai-tdm-slot-tx-mask-3 = <1 1>;
100976e9201SNeil Armstrong			mclk-fs = <256>;
101976e9201SNeil Armstrong
102976e9201SNeil Armstrong			codec-0 {
103976e9201SNeil Armstrong				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
104976e9201SNeil Armstrong			};
105976e9201SNeil Armstrong
106976e9201SNeil Armstrong			codec-1 {
107976e9201SNeil Armstrong				sound-dai = <&toacodec TOACODEC_IN_B>;
108976e9201SNeil Armstrong			};
109976e9201SNeil Armstrong		};
110976e9201SNeil Armstrong
111976e9201SNeil Armstrong		/* i2s jack output interface */
112976e9201SNeil Armstrong		dai-link-7 {
113976e9201SNeil Armstrong			sound-dai = <&tdmif_c>;
114976e9201SNeil Armstrong			dai-format = "i2s";
115976e9201SNeil Armstrong			dai-tdm-slot-tx-mask-0 = <1 1>;
116976e9201SNeil Armstrong			mclk-fs = <256>;
117976e9201SNeil Armstrong
118976e9201SNeil Armstrong			codec-0 {
119976e9201SNeil Armstrong				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_C>;
120976e9201SNeil Armstrong			};
121976e9201SNeil Armstrong
122976e9201SNeil Armstrong			codec-1 {
123976e9201SNeil Armstrong				sound-dai = <&toacodec TOACODEC_IN_C>;
124976e9201SNeil Armstrong			};
125976e9201SNeil Armstrong		};
126976e9201SNeil Armstrong
127976e9201SNeil Armstrong		/* hdmi glue */
128976e9201SNeil Armstrong		dai-link-8 {
129976e9201SNeil Armstrong			sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
130976e9201SNeil Armstrong
131976e9201SNeil Armstrong			codec {
132976e9201SNeil Armstrong				sound-dai = <&hdmi_tx>;
133976e9201SNeil Armstrong			};
134976e9201SNeil Armstrong		};
135976e9201SNeil Armstrong
136976e9201SNeil Armstrong		/* acodec glue */
137976e9201SNeil Armstrong		dai-link-9 {
138976e9201SNeil Armstrong			sound-dai = <&toacodec TOACODEC_OUT>;
139976e9201SNeil Armstrong
140976e9201SNeil Armstrong			codec {
141976e9201SNeil Armstrong				sound-dai = <&acodec>;
142976e9201SNeil Armstrong			};
143976e9201SNeil Armstrong		};
144976e9201SNeil Armstrong	};
145976e9201SNeil Armstrong};
146976e9201SNeil Armstrong
147976e9201SNeil Armstrong&acodec {
148976e9201SNeil Armstrong	AVDD-supply = <&vddao_1v8>;
149976e9201SNeil Armstrong	status = "okay";
150976e9201SNeil Armstrong};
151976e9201SNeil Armstrong
152976e9201SNeil Armstrong
153976e9201SNeil Armstrong&clkc_audio {
154976e9201SNeil Armstrong	status = "okay";
155976e9201SNeil Armstrong};
156976e9201SNeil Armstrong
157976e9201SNeil Armstrong&cvbs_vdac_port {
158976e9201SNeil Armstrong	cvbs_vdac_out: endpoint {
159976e9201SNeil Armstrong		remote-endpoint = <&cvbs_connector_in>;
160976e9201SNeil Armstrong	};
161976e9201SNeil Armstrong};
162976e9201SNeil Armstrong
163976e9201SNeil Armstrong&frddr_a {
164976e9201SNeil Armstrong	status = "okay";
165976e9201SNeil Armstrong};
166976e9201SNeil Armstrong
167976e9201SNeil Armstrong&frddr_b {
168976e9201SNeil Armstrong	status = "okay";
169976e9201SNeil Armstrong};
170976e9201SNeil Armstrong
171976e9201SNeil Armstrong&frddr_c {
172976e9201SNeil Armstrong	status = "okay";
173976e9201SNeil Armstrong};
174976e9201SNeil Armstrong
175976e9201SNeil Armstrong&tdmif_b {
176976e9201SNeil Armstrong	status = "okay";
177976e9201SNeil Armstrong};
178976e9201SNeil Armstrong
179976e9201SNeil Armstrong&tdmif_c {
180976e9201SNeil Armstrong	status = "okay";
181976e9201SNeil Armstrong};
182976e9201SNeil Armstrong
183976e9201SNeil Armstrong&tdmin_a {
184976e9201SNeil Armstrong	status = "okay";
185976e9201SNeil Armstrong};
186976e9201SNeil Armstrong
187976e9201SNeil Armstrong&tdmin_b {
188976e9201SNeil Armstrong	status = "okay";
189976e9201SNeil Armstrong};
190976e9201SNeil Armstrong
191976e9201SNeil Armstrong&tdmin_c {
192976e9201SNeil Armstrong	status = "okay";
193976e9201SNeil Armstrong};
194976e9201SNeil Armstrong
195976e9201SNeil Armstrong&tdmout_b {
196976e9201SNeil Armstrong	status = "okay";
197976e9201SNeil Armstrong};
198976e9201SNeil Armstrong
199976e9201SNeil Armstrong&tdmout_c {
200976e9201SNeil Armstrong	status = "okay";
201976e9201SNeil Armstrong};
202976e9201SNeil Armstrong
203976e9201SNeil Armstrong&toacodec {
204976e9201SNeil Armstrong	status = "okay";
205976e9201SNeil Armstrong};
206976e9201SNeil Armstrong
207976e9201SNeil Armstrong&tohdmitx {
208976e9201SNeil Armstrong	status = "okay";
209976e9201SNeil Armstrong};
210976e9201SNeil Armstrong
211976e9201SNeil Armstrong&toddr_a {
212976e9201SNeil Armstrong	status = "okay";
213976e9201SNeil Armstrong};
214976e9201SNeil Armstrong
215976e9201SNeil Armstrong&toddr_b {
216976e9201SNeil Armstrong	status = "okay";
217976e9201SNeil Armstrong};
218976e9201SNeil Armstrong
219976e9201SNeil Armstrong&toddr_c {
220976e9201SNeil Armstrong	status = "okay";
221976e9201SNeil Armstrong};
222