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 = ðmac; 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ðmac { 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