blob: 5b77300307dea7fdbe7db7d610ceffaf9b1e97b7 [file] [log] [blame]
Marcus Cooperd299e5b2019-06-02 08:38:40 +02001/*
2 * Copyright (C) 2017 Marcus Cooper <codekipper@gmail.com>
3 *
4 * This file is dual-licensed: you can use it either under the terms
5 * of the GPL or the X11 license, at your option. Note that this dual
6 * licensing only applies to this file, and not this project as a
7 * whole.
8 *
9 * a) This file is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation; either version 2 of the
12 * License, or (at your option) any later version.
13 *
14 * This file is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * Or, alternatively,
20 *
21 * b) Permission is hereby granted, free of charge, to any person
22 * obtaining a copy of this software and associated documentation
23 * files (the "Software"), to deal in the Software without
24 * restriction, including without limitation the rights to use,
25 * copy, modify, merge, publish, distribute, sublicense, and/or
26 * sell copies of the Software, and to permit persons to whom the
27 * Software is furnished to do so, subject to the following
28 * conditions:
29 *
30 * The above copyright notice and this permission notice shall be
31 * included in all copies or substantial portions of the Software.
32 *
33 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
34 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
35 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
36 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
37 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
38 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
39 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
40 * OTHER DEALINGS IN THE SOFTWARE.
41 */
42
43/dts-v1/;
44#include "sun8i-h3.dtsi"
45#include "sunxi-common-regulators.dtsi"
46
47#include <dt-bindings/gpio/gpio.h>
48#include <dt-bindings/input/input.h>
49
50/ {
51 model = "Beelink X2";
52 compatible = "roofull,beelink-x2", "allwinner,sun8i-h3";
53
54 aliases {
55 serial0 = &uart0;
56 ethernet0 = &emac;
57 ethernet1 = &sdiowifi;
58 };
59
Andre Przywara3e435d12023-04-02 01:17:07 +010060 cec {
Samuel Hollandeef99ea2022-04-27 15:31:27 -050061 compatible = "cec-gpio";
62 cec-gpios = <&pio 0 14 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; /* PA14 */
63 hdmi-phandle = <&hdmi>;
64 };
65
Marcus Cooperd299e5b2019-06-02 08:38:40 +020066 chosen {
67 stdout-path = "serial0:115200n8";
68 };
69
70 connector {
71 compatible = "hdmi-connector";
72 type = "a";
73
74 port {
75 hdmi_con_in: endpoint {
76 remote-endpoint = <&hdmi_out_con>;
77 };
78 };
79 };
80
81 leds {
82 compatible = "gpio-leds";
83
Andre Przywarac4b526c2021-05-25 01:20:25 +010084 led-0 {
Marcus Cooperd299e5b2019-06-02 08:38:40 +020085 label = "beelink-x2:blue:pwr";
86 gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */
87 default-state = "on";
88 };
89
Andre Przywarac4b526c2021-05-25 01:20:25 +010090 led-1 {
Marcus Cooperd299e5b2019-06-02 08:38:40 +020091 label = "beelink-x2:red:standby";
92 gpios = <&pio 0 15 GPIO_ACTIVE_HIGH>; /* PA15 */
93 };
94 };
95
Andre Przywarafa15e502022-09-13 00:52:52 +010096 gpio-keys {
Samuel Hollandeef99ea2022-04-27 15:31:27 -050097 compatible = "gpio-keys";
98
Andre Przywarafa15e502022-09-13 00:52:52 +010099 key-power {
Samuel Hollandeef99ea2022-04-27 15:31:27 -0500100 label = "power";
101 linux,code = <KEY_POWER>;
102 gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>;
103 wakeup-source;
104 };
Marcus Cooperd299e5b2019-06-02 08:38:40 +0200105 };
106
107 sound_spdif {
108 compatible = "simple-audio-card";
109 simple-audio-card,name = "On-board SPDIF";
110
111 simple-audio-card,cpu {
112 sound-dai = <&spdif>;
113 };
114
115 simple-audio-card,codec {
116 sound-dai = <&spdif_out>;
117 };
118 };
119
120 spdif_out: spdif-out {
121 #sound-dai-cells = <0>;
122 compatible = "linux,spdif-dit";
123 };
Samuel Hollandeef99ea2022-04-27 15:31:27 -0500124
Andre Przywara3b798212024-04-19 17:59:52 +0100125 wifi_pwrseq: pwrseq {
Samuel Hollandeef99ea2022-04-27 15:31:27 -0500126 compatible = "mmc-pwrseq-simple";
127 reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
Andre Przywarafa15e502022-09-13 00:52:52 +0100128 clocks = <&rtc CLK_OSC32K_FANOUT>;
Samuel Hollandeef99ea2022-04-27 15:31:27 -0500129 clock-names = "ext_clock";
130 };
Marcus Cooperd299e5b2019-06-02 08:38:40 +0200131};
132
133&de {
134 status = "okay";
135};
136
137&ehci0 {
138 status = "okay";
139};
140
141&ehci1 {
142 status = "okay";
143};
144
145&emac {
146 phy-handle = <&int_mii_phy>;
147 phy-mode = "mii";
148 allwinner,leds-active-low;
149 status = "okay";
150};
151
152&hdmi {
153 status = "okay";
154};
155
156&hdmi_out {
157 hdmi_out_con: endpoint {
158 remote-endpoint = <&hdmi_con_in>;
159 };
160};
161
162&ir {
Chen-Yu Tsai8d7da692020-01-12 23:36:13 +0800163 linux,rc-map-name = "rc-tanix-tx3mini";
Marcus Cooperd299e5b2019-06-02 08:38:40 +0200164 pinctrl-names = "default";
Chen-Yu Tsai8d7da692020-01-12 23:36:13 +0800165 pinctrl-0 = <&r_ir_rx_pin>;
Marcus Cooperd299e5b2019-06-02 08:38:40 +0200166 status = "okay";
167};
168
169&mmc0 {
170 vmmc-supply = <&reg_vcc3v3>;
171 bus-width = <4>;
172 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
173 status = "okay";
174};
175
176&mmc1 {
177 vmmc-supply = <&reg_vcc3v3>;
Chen-Yu Tsai8d7da692020-01-12 23:36:13 +0800178 vqmmc-supply = <&reg_vcc3v3>;
179 mmc-pwrseq = <&wifi_pwrseq>;
Marcus Cooperd299e5b2019-06-02 08:38:40 +0200180 bus-width = <4>;
181 non-removable;
182 status = "okay";
183
184 /*
185 * Explicitly define the sdio device, so that we can add an ethernet
186 * alias for it (which e.g. makes u-boot set a mac-address).
187 */
Andre Przywara3b798212024-04-19 17:59:52 +0100188 sdiowifi: wifi@1 {
Marcus Cooperd299e5b2019-06-02 08:38:40 +0200189 reg = <1>;
190 };
191};
192
193&mmc2 {
194 pinctrl-names = "default";
195 pinctrl-0 = <&mmc2_8bit_pins>;
196 vmmc-supply = <&reg_vcc3v3>;
197 bus-width = <8>;
198 non-removable;
199 cap-mmc-hw-reset;
200 status = "okay";
201};
202
203&ohci0 {
204 status = "okay";
205};
206
207&ohci1 {
208 status = "okay";
209};
210
211&reg_usb0_vbus {
212 gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */
213 status = "okay";
214};
215
216&spdif {
217 pinctrl-names = "default";
Chen-Yu Tsai8d7da692020-01-12 23:36:13 +0800218 pinctrl-0 = <&spdif_tx_pin>;
Marcus Cooperd299e5b2019-06-02 08:38:40 +0200219 status = "okay";
220};
221
222&uart0 {
223 pinctrl-names = "default";
Chen-Yu Tsai8d7da692020-01-12 23:36:13 +0800224 pinctrl-0 = <&uart0_pa_pins>;
Marcus Cooperd299e5b2019-06-02 08:38:40 +0200225 status = "okay";
226};
227
228&usb_otg {
229 dr_mode = "otg";
230 status = "okay";
231};
232
233&usbphy {
234 /* USB VBUS is always on except for the OTG port */
235 status = "okay";
236 usb0_id_det-gpios = <&pio 0 7 GPIO_ACTIVE_HIGH>; /* PA07 */
237 usb0_vbus-supply = <&reg_usb0_vbus>;
238};