Linux Audio

Check our new training course

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