blob: 2d74456e685df93d596c1de6202d6d6e28051144 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// 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
Tom Rini9c8af152024-12-24 12:03:04 -060073 clocks = <&clkc CLKID_MPLL2>,
74 <&clkc CLKID_MPLL0>,
75 <&clkc CLKID_MPLL1>;
76
Tom Rini53633a82024-02-29 12:33:36 -050077 assigned-clocks = <&clkc CLKID_MPLL2>,
78 <&clkc CLKID_MPLL0>,
79 <&clkc CLKID_MPLL1>;
80 assigned-clock-parents = <0>, <0>, <0>;
81 assigned-clock-rates = <294912000>,
82 <270950400>,
83 <393216000>;
84
85 dai-link-0 {
86 sound-dai = <&frddr_a>;
87 };
88
89 dai-link-1 {
90 sound-dai = <&frddr_b>;
91 };
92
93 dai-link-2 {
94 sound-dai = <&frddr_c>;
95 };
96
97 /* 8ch hdmi interface */
98 dai-link-3 {
99 sound-dai = <&tdmif_b>;
100 dai-format = "i2s";
101 dai-tdm-slot-tx-mask-0 = <1 1>;
102 dai-tdm-slot-tx-mask-1 = <1 1>;
103 dai-tdm-slot-tx-mask-2 = <1 1>;
104 dai-tdm-slot-tx-mask-3 = <1 1>;
105 mclk-fs = <256>;
106
107 codec {
108 sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
109 };
110 };
111
112 /* hdmi glue */
113 dai-link-4 {
114 sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
115
116 codec {
117 sound-dai = <&hdmi_tx>;
118 };
119 };
120 };
121};
122
123&cecb_AO {
124 status = "okay";
125};
126
127&ethmac {
128 status = "okay";
129};
130
131&hdmi_tx {
132 status = "okay";
133};
134
135&hdmi_tx_tmds_port {
136 hdmi_tx_tmds_out: endpoint {
137 remote-endpoint = <&hdmi_connector_in>;
138 };
139};
140
141/* CSI port */
142&i2c1 {
143 status = "okay";
144};
145
146/* DSI port for touchscreen */
147&i2c3 {
148 status = "okay";
149};
150
151/* miniPCIe port with USB + SIM slot */
152&pcie {
153 status = "okay";
154};
155
156&sd_emmc_b {
157 status = "okay";
158};
159
160&tohdmitx {
161 status = "okay";
162};
163
164/* Peripheral Only USB-C port */
165&usb {
166 dr_mode = "peripheral";
167
168 status = "okay";
169};