Skip to content

Commit fde2d69

Browse files
committed
arm64: dts: amlogic: meson-g12b-bananapi-cm4: add support for MNT Reform2 with CM4 adaper
This adds a basic devicetree for the MNT Reform2 DIY laptop when using a CM4 adapter and a BPI-CM4 module. Co-developed-by: Lukas F. Hartmann <[email protected]> Link: https://lore.kernel.org/r/20240403-amlogic-v6-4-upstream-dsi-ccf-vim3-v12-7-99ecdfdc87fc@linaro.org Signed-off-by: Neil Armstrong <[email protected]>
1 parent 2a885ba commit fde2d69

File tree

2 files changed

+385
-0
lines changed

2 files changed

+385
-0
lines changed

arch/arm64/boot/dts/amlogic/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-bananapi-m2s.dtb
1818
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
1919
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3-ts050.dtb
2020
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-bananapi-cm4-cm4io.dtb
21+
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-bananapi-cm4-mnt-reform2.dtb
2122
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gsking-x.dtb
2223
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb
2324
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking.dtb
Lines changed: 384 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,384 @@
1+
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2+
/*
3+
* Copyright (c) 2023 Neil Armstrong <[email protected]>
4+
* Copyright 2023 MNT Research GmbH
5+
*/
6+
7+
/dts-v1/;
8+
9+
#include "meson-g12b-bananapi-cm4.dtsi"
10+
#include <dt-bindings/input/input.h>
11+
#include <dt-bindings/leds/common.h>
12+
#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
13+
14+
/ {
15+
model = "MNT Reform 2 with BPI-CM4 Module";
16+
compatible = "mntre,reform2-cm4", "bananapi,bpi-cm4", "amlogic,a311d", "amlogic,g12b";
17+
chassis-type = "laptop";
18+
19+
aliases {
20+
ethernet0 = &ethmac;
21+
i2c0 = &i2c1;
22+
i2c1 = &i2c3;
23+
};
24+
25+
hdmi_connector: hdmi-connector {
26+
compatible = "hdmi-connector";
27+
type = "a";
28+
29+
port {
30+
hdmi_connector_in: endpoint {
31+
remote-endpoint = <&hdmi_tx_tmds_out>;
32+
};
33+
};
34+
};
35+
36+
leds {
37+
compatible = "gpio-leds";
38+
39+
led-blue {
40+
color = <LED_COLOR_ID_BLUE>;
41+
function = LED_FUNCTION_STATUS;
42+
gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>;
43+
linux,default-trigger = "heartbeat";
44+
};
45+
46+
led-green {
47+
color = <LED_COLOR_ID_GREEN>;
48+
function = LED_FUNCTION_STATUS;
49+
gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
50+
};
51+
};
52+
53+
sound {
54+
compatible = "amlogic,axg-sound-card";
55+
model = "MNT-REFORM2-BPI-CM4";
56+
audio-widgets = "Headphone", "Headphone Jack",
57+
"Speaker", "External Speaker",
58+
"Microphone", "Mic Jack";
59+
audio-aux-devs = <&tdmout_a>, <&tdmout_b>, <&tdmin_b>;
60+
audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
61+
"TDMOUT_A IN 1", "FRDDR_B OUT 0",
62+
"TDMOUT_A IN 2", "FRDDR_C OUT 0",
63+
"TDM_A Playback", "TDMOUT_A OUT",
64+
"TDMOUT_B IN 0", "FRDDR_A OUT 1",
65+
"TDMOUT_B IN 1", "FRDDR_B OUT 1",
66+
"TDMOUT_B IN 2", "FRDDR_C OUT 1",
67+
"TDM_B Playback", "TDMOUT_B OUT",
68+
"TDMIN_B IN 1", "TDM_B Capture",
69+
"TDMIN_B IN 4", "TDM_B Loopback",
70+
"TODDR_A IN 1", "TDMIN_B OUT",
71+
"TODDR_B IN 1", "TDMIN_B OUT",
72+
"TODDR_C IN 1", "TDMIN_B OUT",
73+
"Headphone Jack", "HP_L",
74+
"Headphone Jack", "HP_R",
75+
"External Speaker", "SPK_LP",
76+
"External Speaker", "SPK_LN",
77+
"External Speaker", "SPK_RP",
78+
"External Speaker", "SPK_RN",
79+
"LINPUT1", "Mic Jack",
80+
"Mic Jack", "MICB";
81+
82+
assigned-clocks = <&clkc CLKID_MPLL2>,
83+
<&clkc CLKID_MPLL0>,
84+
<&clkc CLKID_MPLL1>;
85+
assigned-clock-parents = <0>, <0>, <0>;
86+
assigned-clock-rates = <294912000>,
87+
<270950400>,
88+
<393216000>;
89+
90+
dai-link-0 {
91+
sound-dai = <&frddr_a>;
92+
};
93+
94+
dai-link-1 {
95+
sound-dai = <&frddr_b>;
96+
};
97+
98+
dai-link-2 {
99+
sound-dai = <&frddr_c>;
100+
};
101+
102+
dai-link-3 {
103+
sound-dai = <&toddr_a>;
104+
};
105+
106+
dai-link-4 {
107+
sound-dai = <&toddr_b>;
108+
};
109+
110+
dai-link-5 {
111+
sound-dai = <&toddr_c>;
112+
};
113+
114+
/* 8ch hdmi interface */
115+
dai-link-6 {
116+
sound-dai = <&tdmif_a>;
117+
dai-format = "i2s";
118+
dai-tdm-slot-tx-mask-0 = <1 1>;
119+
dai-tdm-slot-tx-mask-1 = <1 1>;
120+
dai-tdm-slot-tx-mask-2 = <1 1>;
121+
dai-tdm-slot-tx-mask-3 = <1 1>;
122+
mclk-fs = <256>;
123+
124+
codec {
125+
sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
126+
};
127+
};
128+
129+
/* Analog Audio */
130+
dai-link-7 {
131+
sound-dai = <&tdmif_b>;
132+
dai-format = "i2s";
133+
dai-tdm-slot-tx-mask-0 = <1 1>;
134+
mclk-fs = <256>;
135+
136+
codec {
137+
sound-dai = <&wm8960>;
138+
};
139+
};
140+
141+
/* hdmi glue */
142+
dai-link-8 {
143+
sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
144+
145+
codec {
146+
sound-dai = <&hdmi_tx>;
147+
};
148+
};
149+
};
150+
151+
reg_main_1v8: regulator-main-1v8 {
152+
compatible = "regulator-fixed";
153+
regulator-name = "1V8";
154+
regulator-min-microvolt = <1800000>;
155+
regulator-max-microvolt = <1800000>;
156+
vin-supply = <&reg_main_3v3>;
157+
};
158+
159+
reg_main_1v2: regulator-main-1v2 {
160+
compatible = "regulator-fixed";
161+
regulator-name = "1V2";
162+
regulator-min-microvolt = <1200000>;
163+
regulator-max-microvolt = <1200000>;
164+
vin-supply = <&reg_main_5v>;
165+
};
166+
167+
reg_main_3v3: regulator-main-3v3 {
168+
compatible = "regulator-fixed";
169+
regulator-name = "3V3";
170+
regulator-min-microvolt = <3300000>;
171+
regulator-max-microvolt = <3300000>;
172+
};
173+
174+
reg_main_5v: regulator-main-5v {
175+
compatible = "regulator-fixed";
176+
regulator-name = "5V";
177+
regulator-min-microvolt = <5000000>;
178+
regulator-max-microvolt = <5000000>;
179+
};
180+
181+
reg_main_usb: regulator-main-usb {
182+
compatible = "regulator-fixed";
183+
regulator-name = "USB_PWR";
184+
regulator-min-microvolt = <5000000>;
185+
regulator-max-microvolt = <5000000>;
186+
vin-supply = <&reg_main_5v>;
187+
};
188+
189+
backlight: backlight {
190+
compatible = "pwm-backlight";
191+
pwms = <&pwm_AO_ab 0 10000 0>;
192+
power-supply = <&reg_main_usb>;
193+
enable-gpios = <&gpio 58 GPIO_ACTIVE_HIGH>;
194+
brightness-levels = <0 32 64 128 160 200 255>;
195+
default-brightness-level = <6>;
196+
};
197+
198+
panel {
199+
compatible = "innolux,n125hce-gn1";
200+
power-supply = <&reg_main_3v3>;
201+
backlight = <&backlight>;
202+
no-hpd;
203+
204+
port {
205+
panel_in: endpoint {
206+
remote-endpoint = <&edp_bridge_out>;
207+
};
208+
};
209+
};
210+
211+
clock_12288: clock_12288 {
212+
compatible = "fixed-clock";
213+
#clock-cells = <0>;
214+
clock-frequency = <12288000>;
215+
};
216+
};
217+
218+
&mipi_analog_dphy {
219+
status = "okay";
220+
};
221+
222+
&mipi_dphy {
223+
status = "okay";
224+
};
225+
226+
&mipi_dsi {
227+
status = "okay";
228+
229+
assigned-clocks = <&clkc CLKID_GP0_PLL>,
230+
<&clkc CLKID_MIPI_DSI_PXCLK_SEL>,
231+
<&clkc CLKID_MIPI_DSI_PXCLK>,
232+
<&clkc CLKID_CTS_ENCL_SEL>,
233+
<&clkc CLKID_VCLK2_SEL>;
234+
assigned-clock-parents = <0>,
235+
<&clkc CLKID_GP0_PLL>,
236+
<0>,
237+
<&clkc CLKID_VCLK2_DIV1>,
238+
<&clkc CLKID_GP0_PLL>;
239+
assigned-clock-rates = <936000000>,
240+
<0>,
241+
<936000000>,
242+
<0>,
243+
<0>;
244+
};
245+
246+
&mipi_dsi_panel_port {
247+
mipi_dsi_out: endpoint {
248+
remote-endpoint = <&edp_bridge_in>;
249+
};
250+
};
251+
252+
&cecb_AO {
253+
status = "okay";
254+
};
255+
256+
&ethmac {
257+
status = "okay";
258+
};
259+
260+
&hdmi_tx {
261+
status = "okay";
262+
};
263+
264+
&hdmi_tx_tmds_port {
265+
hdmi_tx_tmds_out: endpoint {
266+
remote-endpoint = <&hdmi_connector_in>;
267+
};
268+
};
269+
270+
&pwm_AO_ab {
271+
pinctrl-names = "default";
272+
pinctrl-0 = <&pwm_ao_a_pins>;
273+
status = "okay";
274+
};
275+
276+
&i2c0 {
277+
status = "okay";
278+
};
279+
280+
&i2c3 {
281+
status = "okay";
282+
283+
edp_bridge: bridge@2c {
284+
compatible = "ti,sn65dsi86";
285+
reg = <0x2c>;
286+
enable-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_HIGH>; // PIN_24 / GPIO8
287+
vccio-supply = <&reg_main_1v8>;
288+
vpll-supply = <&reg_main_1v8>;
289+
vcca-supply = <&reg_main_1v2>;
290+
vcc-supply = <&reg_main_1v2>;
291+
292+
ports {
293+
#address-cells = <1>;
294+
#size-cells = <0>;
295+
296+
port@0 {
297+
reg = <0>;
298+
299+
edp_bridge_in: endpoint {
300+
remote-endpoint = <&mipi_dsi_out>;
301+
};
302+
};
303+
304+
port@1 {
305+
reg = <1>;
306+
307+
edp_bridge_out: endpoint {
308+
remote-endpoint = <&panel_in>;
309+
};
310+
};
311+
};
312+
};
313+
};
314+
315+
&i2c2 {
316+
status = "okay";
317+
318+
wm8960: codec@1a {
319+
compatible = "wlf,wm8960";
320+
reg = <0x1a>;
321+
clocks = <&clock_12288>;
322+
clock-names = "mclk";
323+
#sound-dai-cells = <0>;
324+
wlf,shared-lrclk;
325+
};
326+
327+
rtc@68 {
328+
compatible = "nxp,pcf8523";
329+
reg = <0x68>;
330+
};
331+
};
332+
333+
&pcie {
334+
status = "okay";
335+
};
336+
337+
&sd_emmc_b {
338+
status = "okay";
339+
};
340+
341+
&tdmif_a {
342+
status = "okay";
343+
};
344+
345+
&tdmout_a {
346+
status = "okay";
347+
};
348+
349+
&tdmif_b {
350+
pinctrl-0 = <&tdm_b_dout0_pins>, <&tdm_b_fs_pins>, <&tdm_b_sclk_pins>, <&tdm_b_din1_pins>;
351+
pinctrl-names = "default";
352+
353+
assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD1>,
354+
<&clkc_audio AUD_CLKID_TDM_LRCLK_PAD1>;
355+
assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_B_SCLK>,
356+
<&clkc_audio AUD_CLKID_MST_B_LRCLK>;
357+
assigned-clock-rates = <0>, <0>;
358+
};
359+
360+
&tdmin_b {
361+
status = "okay";
362+
};
363+
364+
&toddr_a {
365+
status = "okay";
366+
};
367+
368+
&toddr_b {
369+
status = "okay";
370+
};
371+
372+
&toddr_c {
373+
status = "okay";
374+
};
375+
376+
&tohdmitx {
377+
status = "okay";
378+
};
379+
380+
&usb {
381+
dr_mode = "host";
382+
383+
status = "okay";
384+
};

0 commit comments

Comments
 (0)