162306a36Sopenharmony_ci// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2023 Neil Armstrong <neil.armstrong@linaro.org> 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci/dts-v1/; 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#include "meson-g12b-bananapi-cm4.dtsi" 962306a36Sopenharmony_ci#include <dt-bindings/input/input.h> 1062306a36Sopenharmony_ci#include <dt-bindings/leds/common.h> 1162306a36Sopenharmony_ci#include <dt-bindings/sound/meson-g12a-tohdmitx.h> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci/ { 1462306a36Sopenharmony_ci compatible = "bananapi,bpi-cm4io", "bananapi,bpi-cm4", "amlogic,a311d", "amlogic,g12b"; 1562306a36Sopenharmony_ci model = "BananaPi BPI-CM4IO Baseboard with BPI-CM4 Module"; 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci aliases { 1862306a36Sopenharmony_ci ethernet0 = ðmac; 1962306a36Sopenharmony_ci i2c0 = &i2c1; 2062306a36Sopenharmony_ci i2c1 = &i2c3; 2162306a36Sopenharmony_ci }; 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci adc-keys { 2462306a36Sopenharmony_ci compatible = "adc-keys"; 2562306a36Sopenharmony_ci io-channels = <&saradc 2>; 2662306a36Sopenharmony_ci io-channel-names = "buttons"; 2762306a36Sopenharmony_ci keyup-threshold-microvolt = <1710000>; 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci button-function { 3062306a36Sopenharmony_ci label = "Function"; 3162306a36Sopenharmony_ci linux,code = <KEY_FN>; 3262306a36Sopenharmony_ci press-threshold-microvolt = <10000>; 3362306a36Sopenharmony_ci }; 3462306a36Sopenharmony_ci }; 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci hdmi_connector: hdmi-connector { 3762306a36Sopenharmony_ci compatible = "hdmi-connector"; 3862306a36Sopenharmony_ci type = "a"; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci port { 4162306a36Sopenharmony_ci hdmi_connector_in: endpoint { 4262306a36Sopenharmony_ci remote-endpoint = <&hdmi_tx_tmds_out>; 4362306a36Sopenharmony_ci }; 4462306a36Sopenharmony_ci }; 4562306a36Sopenharmony_ci }; 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci leds { 4862306a36Sopenharmony_ci compatible = "gpio-leds"; 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci led-blue { 5162306a36Sopenharmony_ci color = <LED_COLOR_ID_BLUE>; 5262306a36Sopenharmony_ci function = LED_FUNCTION_STATUS; 5362306a36Sopenharmony_ci gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>; 5462306a36Sopenharmony_ci linux,default-trigger = "heartbeat"; 5562306a36Sopenharmony_ci }; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci led-green { 5862306a36Sopenharmony_ci color = <LED_COLOR_ID_GREEN>; 5962306a36Sopenharmony_ci function = LED_FUNCTION_STATUS; 6062306a36Sopenharmony_ci gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>; 6162306a36Sopenharmony_ci }; 6262306a36Sopenharmony_ci }; 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci sound { 6562306a36Sopenharmony_ci compatible = "amlogic,axg-sound-card"; 6662306a36Sopenharmony_ci model = "BPI-CM4IO"; 6762306a36Sopenharmony_ci audio-aux-devs = <&tdmout_b>; 6862306a36Sopenharmony_ci audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1", 6962306a36Sopenharmony_ci "TDMOUT_B IN 1", "FRDDR_B OUT 1", 7062306a36Sopenharmony_ci "TDMOUT_B IN 2", "FRDDR_C OUT 1", 7162306a36Sopenharmony_ci "TDM_B Playback", "TDMOUT_B OUT"; 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci assigned-clocks = <&clkc CLKID_MPLL2>, 7462306a36Sopenharmony_ci <&clkc CLKID_MPLL0>, 7562306a36Sopenharmony_ci <&clkc CLKID_MPLL1>; 7662306a36Sopenharmony_ci assigned-clock-parents = <0>, <0>, <0>; 7762306a36Sopenharmony_ci assigned-clock-rates = <294912000>, 7862306a36Sopenharmony_ci <270950400>, 7962306a36Sopenharmony_ci <393216000>; 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci dai-link-0 { 8262306a36Sopenharmony_ci sound-dai = <&frddr_a>; 8362306a36Sopenharmony_ci }; 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci dai-link-1 { 8662306a36Sopenharmony_ci sound-dai = <&frddr_b>; 8762306a36Sopenharmony_ci }; 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci dai-link-2 { 9062306a36Sopenharmony_ci sound-dai = <&frddr_c>; 9162306a36Sopenharmony_ci }; 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci /* 8ch hdmi interface */ 9462306a36Sopenharmony_ci dai-link-3 { 9562306a36Sopenharmony_ci sound-dai = <&tdmif_b>; 9662306a36Sopenharmony_ci dai-format = "i2s"; 9762306a36Sopenharmony_ci dai-tdm-slot-tx-mask-0 = <1 1>; 9862306a36Sopenharmony_ci dai-tdm-slot-tx-mask-1 = <1 1>; 9962306a36Sopenharmony_ci dai-tdm-slot-tx-mask-2 = <1 1>; 10062306a36Sopenharmony_ci dai-tdm-slot-tx-mask-3 = <1 1>; 10162306a36Sopenharmony_ci mclk-fs = <256>; 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci codec { 10462306a36Sopenharmony_ci sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; 10562306a36Sopenharmony_ci }; 10662306a36Sopenharmony_ci }; 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci /* hdmi glue */ 10962306a36Sopenharmony_ci dai-link-4 { 11062306a36Sopenharmony_ci sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci codec { 11362306a36Sopenharmony_ci sound-dai = <&hdmi_tx>; 11462306a36Sopenharmony_ci }; 11562306a36Sopenharmony_ci }; 11662306a36Sopenharmony_ci }; 11762306a36Sopenharmony_ci}; 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_ci&cecb_AO { 12062306a36Sopenharmony_ci status = "okay"; 12162306a36Sopenharmony_ci}; 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ciðmac { 12462306a36Sopenharmony_ci status = "okay"; 12562306a36Sopenharmony_ci}; 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci&hdmi_tx { 12862306a36Sopenharmony_ci status = "okay"; 12962306a36Sopenharmony_ci}; 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci&hdmi_tx_tmds_port { 13262306a36Sopenharmony_ci hdmi_tx_tmds_out: endpoint { 13362306a36Sopenharmony_ci remote-endpoint = <&hdmi_connector_in>; 13462306a36Sopenharmony_ci }; 13562306a36Sopenharmony_ci}; 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ci/* CSI port */ 13862306a36Sopenharmony_ci&i2c1 { 13962306a36Sopenharmony_ci status = "okay"; 14062306a36Sopenharmony_ci}; 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci/* DSI port for touchscreen */ 14362306a36Sopenharmony_ci&i2c3 { 14462306a36Sopenharmony_ci status = "okay"; 14562306a36Sopenharmony_ci}; 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci/* miniPCIe port with USB + SIM slot */ 14862306a36Sopenharmony_ci&pcie { 14962306a36Sopenharmony_ci status = "okay"; 15062306a36Sopenharmony_ci}; 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci&sd_emmc_b { 15362306a36Sopenharmony_ci status = "okay"; 15462306a36Sopenharmony_ci}; 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci&tohdmitx { 15762306a36Sopenharmony_ci status = "okay"; 15862306a36Sopenharmony_ci}; 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci/* Peripheral Only USB-C port */ 16162306a36Sopenharmony_ci&usb { 16262306a36Sopenharmony_ci dr_mode = "peripheral"; 16362306a36Sopenharmony_ci 16462306a36Sopenharmony_ci status = "okay"; 16562306a36Sopenharmony_ci}; 166