blob: 3e0d5a9c096d37cdc878d07aadb79cee4009b972 [file] [log] [blame]
Andre Przywarae7bd15e2017-02-16 01:20:29 +00001/*
Andre Przywara1caeae32018-07-04 14:16:37 +01002 * Copyright (C) 2016 ARM Ltd.
Andre Przywarae7bd15e2017-02-16 01:20:29 +00003 *
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 *
Andre Przywara1caeae32018-07-04 14:16:37 +01009 * a) This file is free software; you can redistribute it and/or
Andre Przywarae7bd15e2017-02-16 01:20:29 +000010 * 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 *
Andre Przywara1caeae32018-07-04 14:16:37 +010014 * This file is distributed in the hope that it will be useful,
Andre Przywarae7bd15e2017-02-16 01:20:29 +000015 * 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/;
Jagan Teki702a3e52017-05-25 18:15:36 +000044#include "sun50i-h5.dtsi"
Andre Przywarae7bd15e2017-02-16 01:20:29 +000045
Jagan Tekif3339732017-05-25 18:26:41 +000046#include <dt-bindings/gpio/gpio.h>
Andre Przywara1caeae32018-07-04 14:16:37 +010047#include <dt-bindings/input/input.h>
48#include <dt-bindings/pinctrl/sun4i-a10.h>
Jagan Tekif3339732017-05-25 18:26:41 +000049
Andre Przywarae7bd15e2017-02-16 01:20:29 +000050/ {
Andre Przywara1caeae32018-07-04 14:16:37 +010051 model = "Xunlong Orange Pi PC 2";
52 compatible = "xunlong,orangepi-pc2", "allwinner,sun50i-h5";
53
54 reg_vcc3v3: vcc3v3 {
55 compatible = "regulator-fixed";
56 regulator-name = "vcc3v3";
57 regulator-min-microvolt = <3300000>;
58 regulator-max-microvolt = <3300000>;
59 };
Andre Przywarae7bd15e2017-02-16 01:20:29 +000060
Jagan Teki0107cd42018-05-07 13:03:47 +053061 aliases {
Jagan Teki0107cd42018-05-07 13:03:47 +053062 ethernet0 = &emac;
Andre Przywara1caeae32018-07-04 14:16:37 +010063 serial0 = &uart0;
Jagan Teki0107cd42018-05-07 13:03:47 +053064 };
65
Andre Przywarae7bd15e2017-02-16 01:20:29 +000066 chosen {
67 stdout-path = "serial0:115200n8";
68 };
69
Andre Przywara1caeae32018-07-04 14:16:37 +010070 connector {
71 compatible = "hdmi-connector";
72 type = "a";
Andre Przywarae7bd15e2017-02-16 01:20:29 +000073
Andre Przywara1caeae32018-07-04 14:16:37 +010074 port {
75 hdmi_con_in: endpoint {
76 remote-endpoint = <&hdmi_out_con>;
77 };
Andre Przywarae7bd15e2017-02-16 01:20:29 +000078 };
79 };
Andre Przywara1caeae32018-07-04 14:16:37 +010080
81 leds {
82 compatible = "gpio-leds";
83
84 pwr {
85 label = "orangepi:green:pwr";
86 gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
87 default-state = "on";
88 };
89
90 status {
91 label = "orangepi:red:status";
92 gpios = <&pio 0 20 GPIO_ACTIVE_HIGH>;
93 };
94 };
95
96 r-gpio-keys {
97 compatible = "gpio-keys";
98
99 sw4 {
100 label = "sw4";
101 linux,code = <BTN_0>;
102 gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>;
103 };
104 };
105
106 reg_gmac_3v3: gmac-3v3 {
107 compatible = "regulator-fixed";
108 regulator-name = "gmac-3v3";
109 regulator-min-microvolt = <3300000>;
110 regulator-max-microvolt = <3300000>;
111 startup-delay-us = <100000>;
112 enable-active-high;
113 gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>;
114 };
115
116 reg_usb0_vbus: usb0-vbus {
117 compatible = "regulator-fixed";
118 regulator-name = "usb0-vbus";
119 regulator-min-microvolt = <5000000>;
120 regulator-max-microvolt = <5000000>;
121 enable-active-high;
122 gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */
123 status = "okay";
124 };
125};
126
127&codec {
128 allwinner,audio-routing =
129 "Line Out", "LINEOUT",
130 "MIC1", "Mic",
131 "Mic", "MBIAS";
132 status = "okay";
133};
134
135&de {
136 status = "okay";
Andre Przywarae7bd15e2017-02-16 01:20:29 +0000137};
138
Jagan Teki84c569c2018-05-07 13:03:48 +0530139&ehci0 {
140 status = "okay";
141};
142
Andre Przywarae7bd15e2017-02-16 01:20:29 +0000143&ehci1 {
144 status = "okay";
145};
146
Andre Przywara1caeae32018-07-04 14:16:37 +0100147&ehci2 {
148 status = "okay";
149};
150
151&ehci3 {
152 status = "okay";
153};
154
Andre Przywarae7bd15e2017-02-16 01:20:29 +0000155&emac {
156 pinctrl-names = "default";
157 pinctrl-0 = <&emac_rgmii_pins>;
Andre Przywara1caeae32018-07-04 14:16:37 +0100158 phy-supply = <&reg_gmac_3v3>;
Andre Przywara0bb48ef2018-04-04 01:31:19 +0100159 phy-handle = <&ext_rgmii_phy>;
Andre Przywara1caeae32018-07-04 14:16:37 +0100160 phy-mode = "rgmii";
Andre Przywarae7bd15e2017-02-16 01:20:29 +0000161 status = "okay";
Andre Przywara0bb48ef2018-04-04 01:31:19 +0100162};
Andre Przywarae7bd15e2017-02-16 01:20:29 +0000163
Andre Przywara0bb48ef2018-04-04 01:31:19 +0100164&external_mdio {
165 ext_rgmii_phy: ethernet-phy@1 {
166 compatible = "ethernet-phy-ieee802.3-c22";
Andre Przywarae7bd15e2017-02-16 01:20:29 +0000167 reg = <1>;
168 };
169};
Jagan Teki0107cd42018-05-07 13:03:47 +0530170
Andre Przywara1caeae32018-07-04 14:16:37 +0100171&hdmi {
172 status = "okay";
173};
174
175&hdmi_out {
176 hdmi_out_con: endpoint {
177 remote-endpoint = <&hdmi_con_in>;
178 };
179};
180
181&ir {
182 pinctrl-names = "default";
183 pinctrl-0 = <&ir_pins_a>;
184 status = "okay";
185};
186
Jagan Teki0107cd42018-05-07 13:03:47 +0530187&mmc0 {
Jagan Teki0107cd42018-05-07 13:03:47 +0530188 vmmc-supply = <&reg_vcc3v3>;
189 bus-width = <4>;
Andre Przywara1caeae32018-07-04 14:16:37 +0100190 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
Jagan Teki0107cd42018-05-07 13:03:47 +0530191 status = "okay";
192};
193
Jagan Teki84c569c2018-05-07 13:03:48 +0530194&ohci0 {
195 status = "okay";
196};
197
Jagan Teki0107cd42018-05-07 13:03:47 +0530198&ohci1 {
199 status = "okay";
200};
201
Andre Przywara1caeae32018-07-04 14:16:37 +0100202&ohci2 {
203 status = "okay";
204};
205
206&ohci3 {
207 status = "okay";
208};
209
Andre Przywara4c974ee2018-10-29 00:56:49 +0000210&spi0 {
211 status = "okay";
212
213 flash@0 {
214 #address-cells = <1>;
215 #size-cells = <1>;
216 compatible = "jedec,spi-nor";
217 reg = <0>;
218 spi-max-frequency = <40000000>;
219 };
220};
221
Jagan Teki0107cd42018-05-07 13:03:47 +0530222&uart0 {
223 pinctrl-names = "default";
224 pinctrl-0 = <&uart0_pins_a>;
225 status = "okay";
226};
227
Andre Przywara1caeae32018-07-04 14:16:37 +0100228&uart1 {
229 pinctrl-names = "default";
230 pinctrl-0 = <&uart1_pins>;
231 status = "disabled";
232};
233
234&uart2 {
235 pinctrl-names = "default";
236 pinctrl-0 = <&uart2_pins>;
237 status = "disabled";
238};
239
Jagan Teki84c569c2018-05-07 13:03:48 +0530240&usb_otg {
241 dr_mode = "otg";
242 status = "okay";
243};
244
Jagan Teki0107cd42018-05-07 13:03:47 +0530245&usbphy {
Andre Przywara1caeae32018-07-04 14:16:37 +0100246 /* USB Type-A ports' VBUS is always on */
247 usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
248 usb0_vbus-supply = <&reg_usb0_vbus>;
Jagan Teki0107cd42018-05-07 13:03:47 +0530249 status = "okay";
250};