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