xref: /linux/scripts/dtc/include-prefixes/arm64/amlogic/meson-g12b-bananapi-cm4-cm4io.dts (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
10262f273SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
20262f273SNeil Armstrong/*
30262f273SNeil Armstrong * Copyright (c) 2023 Neil Armstrong <neil.armstrong@linaro.org>
40262f273SNeil Armstrong */
50262f273SNeil Armstrong
60262f273SNeil Armstrong/dts-v1/;
70262f273SNeil Armstrong
80262f273SNeil Armstrong#include "meson-g12b-bananapi-cm4.dtsi"
90262f273SNeil Armstrong#include <dt-bindings/input/input.h>
100262f273SNeil Armstrong#include <dt-bindings/leds/common.h>
110262f273SNeil Armstrong#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
120262f273SNeil Armstrong
130262f273SNeil Armstrong/ {
140262f273SNeil Armstrong	compatible = "bananapi,bpi-cm4io", "bananapi,bpi-cm4", "amlogic,a311d", "amlogic,g12b";
150262f273SNeil Armstrong	model = "BananaPi BPI-CM4IO Baseboard with BPI-CM4 Module";
160262f273SNeil Armstrong
170262f273SNeil Armstrong	aliases {
180262f273SNeil Armstrong		ethernet0 = &ethmac;
190262f273SNeil Armstrong		i2c0 = &i2c1;
200262f273SNeil Armstrong		i2c1 = &i2c3;
210262f273SNeil Armstrong	};
220262f273SNeil Armstrong
230262f273SNeil Armstrong	adc-keys {
240262f273SNeil Armstrong		compatible = "adc-keys";
250262f273SNeil Armstrong		io-channels = <&saradc 2>;
260262f273SNeil Armstrong		io-channel-names = "buttons";
270262f273SNeil Armstrong		keyup-threshold-microvolt = <1710000>;
280262f273SNeil Armstrong
290262f273SNeil Armstrong		button-function {
300262f273SNeil Armstrong			label = "Function";
310262f273SNeil Armstrong			linux,code = <KEY_FN>;
320262f273SNeil Armstrong			press-threshold-microvolt = <10000>;
330262f273SNeil Armstrong		};
340262f273SNeil Armstrong	};
350262f273SNeil Armstrong
360262f273SNeil Armstrong	hdmi_connector: hdmi-connector {
370262f273SNeil Armstrong		compatible = "hdmi-connector";
380262f273SNeil Armstrong		type = "a";
390262f273SNeil Armstrong
400262f273SNeil Armstrong		port {
410262f273SNeil Armstrong			hdmi_connector_in: endpoint {
420262f273SNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
430262f273SNeil Armstrong			};
440262f273SNeil Armstrong		};
450262f273SNeil Armstrong	};
460262f273SNeil Armstrong
470262f273SNeil Armstrong	leds {
480262f273SNeil Armstrong		compatible = "gpio-leds";
490262f273SNeil Armstrong
500262f273SNeil Armstrong		led-blue {
510262f273SNeil Armstrong			color = <LED_COLOR_ID_BLUE>;
520262f273SNeil Armstrong			function = LED_FUNCTION_STATUS;
530262f273SNeil Armstrong			gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>;
540262f273SNeil Armstrong			linux,default-trigger = "heartbeat";
550262f273SNeil Armstrong		};
560262f273SNeil Armstrong
570262f273SNeil Armstrong		led-green {
580262f273SNeil Armstrong			color = <LED_COLOR_ID_GREEN>;
590262f273SNeil Armstrong			function = LED_FUNCTION_STATUS;
600262f273SNeil Armstrong			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
610262f273SNeil Armstrong		};
620262f273SNeil Armstrong	};
630262f273SNeil Armstrong
640262f273SNeil Armstrong	sound {
650262f273SNeil Armstrong		compatible = "amlogic,axg-sound-card";
660262f273SNeil Armstrong		model = "BPI-CM4IO";
670262f273SNeil Armstrong		audio-aux-devs = <&tdmout_b>;
680262f273SNeil Armstrong		audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
690262f273SNeil Armstrong				"TDMOUT_B IN 1", "FRDDR_B OUT 1",
700262f273SNeil Armstrong				"TDMOUT_B IN 2", "FRDDR_C OUT 1",
710262f273SNeil Armstrong				"TDM_B Playback", "TDMOUT_B OUT";
720262f273SNeil Armstrong
73*9b5d2511SNeil Armstrong		clocks = <&clkc CLKID_MPLL2>,
74*9b5d2511SNeil Armstrong			 <&clkc CLKID_MPLL0>,
75*9b5d2511SNeil Armstrong			 <&clkc CLKID_MPLL1>;
76*9b5d2511SNeil Armstrong
770262f273SNeil Armstrong		assigned-clocks = <&clkc CLKID_MPLL2>,
780262f273SNeil Armstrong				  <&clkc CLKID_MPLL0>,
790262f273SNeil Armstrong				  <&clkc CLKID_MPLL1>;
800262f273SNeil Armstrong		assigned-clock-parents = <0>, <0>, <0>;
810262f273SNeil Armstrong		assigned-clock-rates = <294912000>,
820262f273SNeil Armstrong				       <270950400>,
830262f273SNeil Armstrong				       <393216000>;
840262f273SNeil Armstrong
850262f273SNeil Armstrong		dai-link-0 {
860262f273SNeil Armstrong			sound-dai = <&frddr_a>;
870262f273SNeil Armstrong		};
880262f273SNeil Armstrong
890262f273SNeil Armstrong		dai-link-1 {
900262f273SNeil Armstrong			sound-dai = <&frddr_b>;
910262f273SNeil Armstrong		};
920262f273SNeil Armstrong
930262f273SNeil Armstrong		dai-link-2 {
940262f273SNeil Armstrong			sound-dai = <&frddr_c>;
950262f273SNeil Armstrong		};
960262f273SNeil Armstrong
970262f273SNeil Armstrong		/* 8ch hdmi interface */
980262f273SNeil Armstrong		dai-link-3 {
990262f273SNeil Armstrong			sound-dai = <&tdmif_b>;
1000262f273SNeil Armstrong			dai-format = "i2s";
1010262f273SNeil Armstrong			dai-tdm-slot-tx-mask-0 = <1 1>;
1020262f273SNeil Armstrong			dai-tdm-slot-tx-mask-1 = <1 1>;
1030262f273SNeil Armstrong			dai-tdm-slot-tx-mask-2 = <1 1>;
1040262f273SNeil Armstrong			dai-tdm-slot-tx-mask-3 = <1 1>;
1050262f273SNeil Armstrong			mclk-fs = <256>;
1060262f273SNeil Armstrong
1070262f273SNeil Armstrong			codec {
1080262f273SNeil Armstrong				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
1090262f273SNeil Armstrong			};
1100262f273SNeil Armstrong		};
1110262f273SNeil Armstrong
1120262f273SNeil Armstrong		/* hdmi glue */
1130262f273SNeil Armstrong		dai-link-4 {
1140262f273SNeil Armstrong			sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
1150262f273SNeil Armstrong
1160262f273SNeil Armstrong			codec {
1170262f273SNeil Armstrong				sound-dai = <&hdmi_tx>;
1180262f273SNeil Armstrong			};
1190262f273SNeil Armstrong		};
1200262f273SNeil Armstrong	};
1210262f273SNeil Armstrong};
1220262f273SNeil Armstrong
1230262f273SNeil Armstrong&cecb_AO {
1240262f273SNeil Armstrong	status = "okay";
1250262f273SNeil Armstrong};
1260262f273SNeil Armstrong
1270262f273SNeil Armstrong&ethmac {
1280262f273SNeil Armstrong	status = "okay";
1290262f273SNeil Armstrong};
1300262f273SNeil Armstrong
1310262f273SNeil Armstrong&hdmi_tx {
1320262f273SNeil Armstrong	status = "okay";
1330262f273SNeil Armstrong};
1340262f273SNeil Armstrong
1350262f273SNeil Armstrong&hdmi_tx_tmds_port {
1360262f273SNeil Armstrong	hdmi_tx_tmds_out: endpoint {
1370262f273SNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
1380262f273SNeil Armstrong	};
1390262f273SNeil Armstrong};
1400262f273SNeil Armstrong
1410262f273SNeil Armstrong/* CSI port */
1420262f273SNeil Armstrong&i2c1 {
1430262f273SNeil Armstrong	status = "okay";
1440262f273SNeil Armstrong};
1450262f273SNeil Armstrong
1460262f273SNeil Armstrong/* DSI port for touchscreen */
1470262f273SNeil Armstrong&i2c3 {
1480262f273SNeil Armstrong	status = "okay";
1490262f273SNeil Armstrong};
1500262f273SNeil Armstrong
1510262f273SNeil Armstrong/* miniPCIe port with USB + SIM slot */
1520262f273SNeil Armstrong&pcie {
1530262f273SNeil Armstrong	status = "okay";
1540262f273SNeil Armstrong};
1550262f273SNeil Armstrong
1560262f273SNeil Armstrong&sd_emmc_b {
1570262f273SNeil Armstrong	status = "okay";
1580262f273SNeil Armstrong};
1590262f273SNeil Armstrong
1600262f273SNeil Armstrong&tohdmitx {
1610262f273SNeil Armstrong	status = "okay";
1620262f273SNeil Armstrong};
1630262f273SNeil Armstrong
1640262f273SNeil Armstrong/* Peripheral Only USB-C port */
1650262f273SNeil Armstrong&usb {
1660262f273SNeil Armstrong	dr_mode = "peripheral";
1670262f273SNeil Armstrong
1680262f273SNeil Armstrong	status = "okay";
1690262f273SNeil Armstrong};
170