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