forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
arm64: dts: amlogic: meson-g12b-bananapi-cm4: add support for MNT Ref…
…orm2 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 <lukas@mntre.com> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
- Loading branch information
1 parent
03a39e1
commit 71d6a8c
Showing
2 changed files
with
390 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
389 changes: 389 additions & 0 deletions
389
arch/arm64/boot/dts/amlogic/meson-g12b-bananapi-cm4-mnt-reform2.dts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,389 @@ | ||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||
/* | ||
* Copyright (c) 2023 Neil Armstrong <neil.armstrong@linaro.org> | ||
* Copyright 2023 MNT Research GmbH | ||
*/ | ||
|
||
/dts-v1/; | ||
|
||
#include "meson-g12b-bananapi-cm4.dtsi" | ||
#include <dt-bindings/input/input.h> | ||
#include <dt-bindings/leds/common.h> | ||
#include <dt-bindings/sound/meson-g12a-tohdmitx.h> | ||
|
||
/ { | ||
model = "MNT Reform 2 with BPI-CM4 Module"; | ||
compatible = "mntre,reform2-cm4", "bananapi,bpi-cm4", "amlogic,a311d", "amlogic,g12b"; | ||
chassis-type = "laptop"; | ||
|
||
aliases { | ||
ethernet0 = ðmac; | ||
i2c0 = &i2c1; | ||
i2c1 = &i2c3; | ||
}; | ||
|
||
hdmi_connector: hdmi-connector { | ||
compatible = "hdmi-connector"; | ||
type = "a"; | ||
|
||
port { | ||
hdmi_connector_in: endpoint { | ||
remote-endpoint = <&hdmi_tx_tmds_out>; | ||
}; | ||
}; | ||
}; | ||
|
||
leds { | ||
compatible = "gpio-leds"; | ||
|
||
led-blue { | ||
color = <LED_COLOR_ID_BLUE>; | ||
function = LED_FUNCTION_STATUS; | ||
gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>; | ||
linux,default-trigger = "heartbeat"; | ||
}; | ||
|
||
led-green { | ||
color = <LED_COLOR_ID_GREEN>; | ||
function = LED_FUNCTION_STATUS; | ||
gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>; | ||
}; | ||
}; | ||
|
||
sound { | ||
compatible = "amlogic,axg-sound-card"; | ||
model = "MNT-REFORM2-BPI-CM4"; | ||
simple-audio-card,widgets = "Headphone", "Headphone Jack", | ||
"Speaker", "External Speaker", | ||
"Microphone", "Mic Jack"; | ||
audio-aux-devs = <&tdmout_a>, <&tdmout_b>, <&tdmin_b>; | ||
audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0", | ||
"TDMOUT_A IN 1", "FRDDR_B OUT 0", | ||
"TDMOUT_A IN 2", "FRDDR_C OUT 0", | ||
"TDM_A Playback", "TDMOUT_A OUT", | ||
"TDMOUT_B IN 0", "FRDDR_A OUT 1", | ||
"TDMOUT_B IN 1", "FRDDR_B OUT 1", | ||
"TDMOUT_B IN 2", "FRDDR_C OUT 1", | ||
"TDM_B Playback", "TDMOUT_B OUT", | ||
"TDMIN_B IN 1", "TDM_B Capture", | ||
"TDMIN_B IN 4", "TDM_B Loopback", | ||
"TODDR_A IN 1", "TDMIN_B OUT", | ||
"TODDR_B IN 1", "TDMIN_B OUT", | ||
"TODDR_C IN 1", "TDMIN_B OUT", | ||
"Headphone Jack", "HP_L", | ||
"Headphone Jack", "HP_R", | ||
"External Speaker", "SPK_LP", | ||
"External Speaker", "SPK_LN", | ||
"External Speaker", "SPK_RP", | ||
"External Speaker", "SPK_RN", | ||
"LINPUT1", "Mic Jack", | ||
"Mic Jack", "MICB"; | ||
|
||
assigned-clocks = <&clkc CLKID_MPLL2>, | ||
<&clkc CLKID_MPLL0>, | ||
<&clkc CLKID_MPLL1>; | ||
assigned-clock-parents = <0>, <0>, <0>; | ||
assigned-clock-rates = <294912000>, | ||
<270950400>, | ||
<393216000>; | ||
|
||
dai-link-0 { | ||
sound-dai = <&frddr_a>; | ||
}; | ||
|
||
dai-link-1 { | ||
sound-dai = <&frddr_b>; | ||
}; | ||
|
||
dai-link-2 { | ||
sound-dai = <&frddr_c>; | ||
}; | ||
|
||
dai-link-3 { | ||
sound-dai = <&toddr_a>; | ||
}; | ||
|
||
dai-link-4 { | ||
sound-dai = <&toddr_b>; | ||
}; | ||
|
||
dai-link-5 { | ||
sound-dai = <&toddr_c>; | ||
}; | ||
|
||
/* 8ch hdmi interface */ | ||
dai-link-6 { | ||
sound-dai = <&tdmif_a>; | ||
dai-format = "i2s"; | ||
dai-tdm-slot-tx-mask-0 = <1 1>; | ||
dai-tdm-slot-tx-mask-1 = <1 1>; | ||
dai-tdm-slot-tx-mask-2 = <1 1>; | ||
dai-tdm-slot-tx-mask-3 = <1 1>; | ||
mclk-fs = <256>; | ||
|
||
codec { | ||
sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>; | ||
}; | ||
}; | ||
|
||
/* Analog Audio */ | ||
dai-link-7 { | ||
sound-dai = <&tdmif_b>; | ||
dai-format = "i2s"; | ||
dai-tdm-slot-tx-mask-0 = <1 1>; | ||
mclk-fs = <256>; | ||
|
||
codec { | ||
sound-dai = <&wm8960>; | ||
}; | ||
}; | ||
|
||
/* hdmi glue */ | ||
dai-link-8 { | ||
sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; | ||
|
||
codec { | ||
sound-dai = <&hdmi_tx>; | ||
}; | ||
}; | ||
}; | ||
|
||
reg_main_1v8: regulator-main-1v8 { | ||
compatible = "regulator-fixed"; | ||
regulator-name = "1V8"; | ||
regulator-min-microvolt = <1800000>; | ||
regulator-max-microvolt = <1800000>; | ||
vin-supply = <®_main_3v3>; | ||
}; | ||
|
||
reg_main_1v2: regulator-main-1v2 { | ||
compatible = "regulator-fixed"; | ||
regulator-name = "1V2"; | ||
regulator-min-microvolt = <1200000>; | ||
regulator-max-microvolt = <1200000>; | ||
vin-supply = <®_main_5v>; | ||
}; | ||
|
||
reg_main_3v3: regulator-main-3v3 { | ||
compatible = "regulator-fixed"; | ||
regulator-name = "3V3"; | ||
regulator-min-microvolt = <3300000>; | ||
regulator-max-microvolt = <3300000>; | ||
}; | ||
|
||
reg_main_5v: regulator-main-5v { | ||
compatible = "regulator-fixed"; | ||
regulator-name = "5V"; | ||
regulator-min-microvolt = <5000000>; | ||
regulator-max-microvolt = <5000000>; | ||
}; | ||
|
||
reg_main_usb: regulator-main-usb { | ||
compatible = "regulator-fixed"; | ||
regulator-name = "USB_PWR"; | ||
regulator-min-microvolt = <5000000>; | ||
regulator-max-microvolt = <5000000>; | ||
vin-supply = <®_main_5v>; | ||
}; | ||
|
||
backlight: backlight { | ||
compatible = "pwm-backlight"; | ||
pwms = <&pwm_AO_ab 0 10000 0>; | ||
power-supply = <®_main_usb>; | ||
enable-gpios = <&gpio 58 GPIO_ACTIVE_HIGH>; | ||
brightness-levels = <0 32 64 128 160 200 255>; | ||
default-brightness-level = <6>; | ||
|
||
status = "okay"; | ||
}; | ||
|
||
panel { | ||
compatible = "innolux,n125hce-gn1", "simple-panel"; | ||
power-supply = <®_main_3v3>; | ||
backlight = <&backlight>; | ||
no-hpd; | ||
|
||
status = "okay"; | ||
|
||
port { | ||
panel_in: endpoint { | ||
remote-endpoint = <&edp_bridge_out>; | ||
}; | ||
}; | ||
}; | ||
|
||
clock_12288: clock_12288 { | ||
compatible = "fixed-clock"; | ||
#clock-cells = <0>; | ||
clock-frequency = <12288000>; | ||
}; | ||
}; | ||
|
||
&mipi_analog_dphy { | ||
status = "okay"; | ||
}; | ||
|
||
&mipi_dphy { | ||
status = "okay"; | ||
}; | ||
|
||
&mipi_dsi { | ||
status = "okay"; | ||
|
||
assigned-clocks = <&clkc CLKID_GP0_PLL>, | ||
<&clkc CLKID_MIPI_DSI_PXCLK_SEL>, | ||
<&clkc CLKID_MIPI_DSI_PXCLK>, | ||
<&clkc CLKID_CTS_ENCL_SEL>, | ||
<&clkc CLKID_VCLK2_SEL>; | ||
assigned-clock-parents = <0>, | ||
<&clkc CLKID_GP0_PLL>, | ||
<0>, | ||
<&clkc CLKID_VCLK2_DIV1>, | ||
<&clkc CLKID_GP0_PLL>; | ||
assigned-clock-rates = <936000000>, | ||
<0>, | ||
<936000000>, | ||
<0>, | ||
<0>; | ||
}; | ||
|
||
&mipi_dsi_panel_port { | ||
mipi_dsi_out: endpoint { | ||
remote-endpoint = <&edp_bridge_in>; | ||
}; | ||
}; | ||
|
||
&cecb_AO { | ||
status = "okay"; | ||
}; | ||
|
||
ðmac { | ||
status = "okay"; | ||
}; | ||
|
||
&hdmi_tx { | ||
status = "okay"; | ||
}; | ||
|
||
&hdmi_tx_tmds_port { | ||
hdmi_tx_tmds_out: endpoint { | ||
remote-endpoint = <&hdmi_connector_in>; | ||
}; | ||
}; | ||
|
||
&pwm_AO_ab { | ||
pinctrl-names = "default"; | ||
pinctrl-0 = <&pwm_ao_a_pins>; | ||
status = "okay"; | ||
}; | ||
|
||
&i2c0 { | ||
status = "okay"; | ||
}; | ||
|
||
&i2c3 { | ||
status = "okay"; | ||
|
||
edp_bridge: bridge@2c { | ||
compatible = "ti,sn65dsi86"; | ||
reg = <0x2c>; | ||
enable-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_HIGH>; // PIN_24 / GPIO8 | ||
vccio-supply = <®_main_1v8>; | ||
vpll-supply = <®_main_1v8>; | ||
vcca-supply = <®_main_1v2>; | ||
vcc-supply = <®_main_1v2>; | ||
|
||
ports { | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
|
||
port@0 { | ||
reg = <0>; | ||
|
||
edp_bridge_in: endpoint { | ||
remote-endpoint = <&mipi_dsi_out>; | ||
}; | ||
}; | ||
|
||
port@1 { | ||
reg = <1>; | ||
|
||
edp_bridge_out: endpoint { | ||
remote-endpoint = <&panel_in>; | ||
}; | ||
}; | ||
}; | ||
}; | ||
}; | ||
|
||
&i2c2 { | ||
status = "okay"; | ||
|
||
wm8960: codec@1a { | ||
compatible = "wlf,wm8960"; | ||
reg = <0x1a>; | ||
clocks = <&clock_12288>; | ||
clock-names = "mclk"; | ||
#sound-dai-cells = <0>; | ||
wlf,shared-lrclk; | ||
}; | ||
|
||
rtc@68 { | ||
compatible = "nxp,pcf8523"; | ||
reg = <0x68>; | ||
}; | ||
}; | ||
|
||
&pcie { | ||
status = "okay"; | ||
}; | ||
|
||
&sd_emmc_b { | ||
status = "okay"; | ||
}; | ||
|
||
&tdmif_a { | ||
status = "okay"; | ||
}; | ||
|
||
&tdmout_a { | ||
status = "okay"; | ||
}; | ||
|
||
&tdmif_b { | ||
pinctrl-0 = <&tdm_b_dout0_pins>, <&tdm_b_fs_pins>, <&tdm_b_sclk_pins>, <&tdm_b_din1_pins>; | ||
pinctrl-names = "default"; | ||
|
||
assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD1>, | ||
<&clkc_audio AUD_CLKID_TDM_LRCLK_PAD1>; | ||
assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_B_SCLK>, | ||
<&clkc_audio AUD_CLKID_MST_B_LRCLK>; | ||
assigned-clock-rates = <0>, <0>; | ||
}; | ||
|
||
|
||
&tdmin_b { | ||
status = "okay"; | ||
}; | ||
|
||
&toddr_a { | ||
status = "okay"; | ||
}; | ||
|
||
&toddr_b { | ||
status = "okay"; | ||
}; | ||
|
||
&toddr_c { | ||
status = "okay"; | ||
}; | ||
|
||
&tohdmitx { | ||
status = "okay"; | ||
}; | ||
|
||
&usb { | ||
dr_mode = "host"; | ||
|
||
status = "okay"; | ||
}; |