Skip to content

Commit 0262f27

Browse files
committed
arm64: dts: amlogic: Add initial support for BPI-CM4 module with BPI-CM4IO baseboard
Add support for both the BananaPi BPI-CM4 module and the BananaPi baseboard which is compatible with the RaspberryPi CM4IO baseboard. The BananaPi BPI-CM4 module follows the CM4 specifications at [1], but with a single HDMI port and a single DSI output. The current CM4IO baseboard DT should work fine on the Raspberry CM4 baseboard and other derivatives baseboards, but proper DT should be written for other baseboards. The split is done so it's easy to describe a new CM4 baseboard, enabling only the necessary HW used on the baseboard. [1] https://datasheets.raspberrypi.com/cm4io/cm4io-datasheet.pdf Tested-by: Christian Hewitt <christianshewitt@gmail.com> Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> Link: https://lore.kernel.org/r/20230303-topic-amlogic-upstream-bpi-cm4-v2-2-2ecfde76fc4d@linaro.org [narmstrong: fixed typos in commit message] Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
1 parent 92c0b26 commit 0262f27

3 files changed

Lines changed: 554 additions & 0 deletions

File tree

arch/arm64/boot/dts/amlogic/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12a-u200.dtb
1010
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-x96-max.dtb
1111
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-bananapi-m2s.dtb
1212
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
13+
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-bananapi-cm4-cm4io.dtb
1314
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gsking-x.dtb
1415
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb
1516
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking.dtb
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2+
/*
3+
* Copyright (c) 2023 Neil Armstrong <neil.armstrong@linaro.org>
4+
*/
5+
6+
/dts-v1/;
7+
8+
#include "meson-g12b-bananapi-cm4.dtsi"
9+
#include <dt-bindings/input/input.h>
10+
#include <dt-bindings/leds/common.h>
11+
#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
12+
13+
/ {
14+
compatible = "bananapi,bpi-cm4io", "bananapi,bpi-cm4", "amlogic,a311d", "amlogic,g12b";
15+
model = "BananaPi BPI-CM4IO Baseboard with BPI-CM4 Module";
16+
17+
aliases {
18+
ethernet0 = &ethmac;
19+
i2c0 = &i2c1;
20+
i2c1 = &i2c3;
21+
};
22+
23+
adc-keys {
24+
compatible = "adc-keys";
25+
io-channels = <&saradc 2>;
26+
io-channel-names = "buttons";
27+
keyup-threshold-microvolt = <1710000>;
28+
29+
button-function {
30+
label = "Function";
31+
linux,code = <KEY_FN>;
32+
press-threshold-microvolt = <10000>;
33+
};
34+
};
35+
36+
hdmi_connector: hdmi-connector {
37+
compatible = "hdmi-connector";
38+
type = "a";
39+
40+
port {
41+
hdmi_connector_in: endpoint {
42+
remote-endpoint = <&hdmi_tx_tmds_out>;
43+
};
44+
};
45+
};
46+
47+
leds {
48+
compatible = "gpio-leds";
49+
50+
led-blue {
51+
color = <LED_COLOR_ID_BLUE>;
52+
function = LED_FUNCTION_STATUS;
53+
gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>;
54+
linux,default-trigger = "heartbeat";
55+
};
56+
57+
led-green {
58+
color = <LED_COLOR_ID_GREEN>;
59+
function = LED_FUNCTION_STATUS;
60+
gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
61+
};
62+
};
63+
64+
sound {
65+
compatible = "amlogic,axg-sound-card";
66+
model = "BPI-CM4IO";
67+
audio-aux-devs = <&tdmout_b>;
68+
audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
69+
"TDMOUT_B IN 1", "FRDDR_B OUT 1",
70+
"TDMOUT_B IN 2", "FRDDR_C OUT 1",
71+
"TDM_B Playback", "TDMOUT_B OUT";
72+
73+
assigned-clocks = <&clkc CLKID_MPLL2>,
74+
<&clkc CLKID_MPLL0>,
75+
<&clkc CLKID_MPLL1>;
76+
assigned-clock-parents = <0>, <0>, <0>;
77+
assigned-clock-rates = <294912000>,
78+
<270950400>,
79+
<393216000>;
80+
81+
dai-link-0 {
82+
sound-dai = <&frddr_a>;
83+
};
84+
85+
dai-link-1 {
86+
sound-dai = <&frddr_b>;
87+
};
88+
89+
dai-link-2 {
90+
sound-dai = <&frddr_c>;
91+
};
92+
93+
/* 8ch hdmi interface */
94+
dai-link-3 {
95+
sound-dai = <&tdmif_b>;
96+
dai-format = "i2s";
97+
dai-tdm-slot-tx-mask-0 = <1 1>;
98+
dai-tdm-slot-tx-mask-1 = <1 1>;
99+
dai-tdm-slot-tx-mask-2 = <1 1>;
100+
dai-tdm-slot-tx-mask-3 = <1 1>;
101+
mclk-fs = <256>;
102+
103+
codec {
104+
sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
105+
};
106+
};
107+
108+
/* hdmi glue */
109+
dai-link-4 {
110+
sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
111+
112+
codec {
113+
sound-dai = <&hdmi_tx>;
114+
};
115+
};
116+
};
117+
};
118+
119+
&cecb_AO {
120+
status = "okay";
121+
};
122+
123+
&ethmac {
124+
status = "okay";
125+
};
126+
127+
&hdmi_tx {
128+
status = "okay";
129+
};
130+
131+
&hdmi_tx_tmds_port {
132+
hdmi_tx_tmds_out: endpoint {
133+
remote-endpoint = <&hdmi_connector_in>;
134+
};
135+
};
136+
137+
/* CSI port */
138+
&i2c1 {
139+
status = "okay";
140+
};
141+
142+
/* DSI port for touchscreen */
143+
&i2c3 {
144+
status = "okay";
145+
};
146+
147+
/* miniPCIe port with USB + SIM slot */
148+
&pcie {
149+
status = "okay";
150+
};
151+
152+
&sd_emmc_b {
153+
status = "okay";
154+
};
155+
156+
&tohdmitx {
157+
status = "okay";
158+
};
159+
160+
/* Peripheral Only USB-C port */
161+
&usb {
162+
dr_mode = "peripheral";
163+
164+
status = "okay";
165+
};

0 commit comments

Comments
 (0)