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