blob: cb21ac9f517c110b102e1d625abd9070e3686d6e [file] [log] [blame]
Neil Armstrong5a9ae232019-05-27 15:38:54 +02001// SPDX-License-Identifier: GPL-2.0 OR MIT
Carlo Caione4a69fcd2015-10-07 22:31:04 +02002/*
3 * Copyright 2015 Endless Mobile, Inc.
4 * Author: Carlo Caione <carlo@endlessm.com>
Carlo Caione4a69fcd2015-10-07 22:31:04 +02005 */
6
7/dts-v1/;
8#include "meson8b.dtsi"
Edward Craggc16d1fd2015-11-27 09:45:28 +01009#include <dt-bindings/gpio/gpio.h>
Carlo Caione4a69fcd2015-10-07 22:31:04 +020010
11/ {
12 model = "Hardkernel ODROID-C1";
13 compatible = "hardkernel,odroid-c1", "amlogic,meson8b";
14
15 aliases {
16 serial0 = &uart_AO;
Linus Lüssinge03efbc2018-03-17 21:11:14 +010017 mmc0 = &sd_card_slot;
Carlo Caione4a69fcd2015-10-07 22:31:04 +020018 };
19
Martin Blumenstingl54ef8532018-09-13 22:29:19 +020020 chosen {
21 stdout-path = "serial0:115200n8";
22 };
23
Carlo Caione4a69fcd2015-10-07 22:31:04 +020024 memory {
Rob Herringabe60a32019-01-09 10:26:14 -060025 device_type = "memory";
Carlo Caione4a69fcd2015-10-07 22:31:04 +020026 reg = <0x40000000 0x40000000>;
27 };
Edward Craggc16d1fd2015-11-27 09:45:28 +010028
29 leds {
30 compatible = "gpio-leds";
31 blue {
32 label = "c1:blue:alive";
33 gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_LOW>;
34 linux,default-trigger = "heartbeat";
35 default-state = "off";
36 };
37 };
Linus Lüssinge03efbc2018-03-17 21:11:14 +010038
Martin Blumenstingl288cb5d2018-09-13 22:29:17 +020039 p5v0: regulator-p5v0 {
40 compatible = "regulator-fixed";
41
42 regulator-name = "P5V0";
43 regulator-min-microvolt = <5000000>;
44 regulator-max-microvolt = <5000000>;
45 };
46
Linus Lüssinge03efbc2018-03-17 21:11:14 +010047 tflash_vdd: regulator-tflash_vdd {
48 /*
49 * signal name from schematics: TFLASH_VDD_EN
50 */
51 compatible = "regulator-fixed";
52
53 regulator-name = "TFLASH_VDD";
54 regulator-min-microvolt = <3300000>;
55 regulator-max-microvolt = <3300000>;
56
Martin Blumenstingl288cb5d2018-09-13 22:29:17 +020057 vin-supply = <&vcc_3v3>;
58
Linus Lüssinge03efbc2018-03-17 21:11:14 +010059 gpio = <&gpio GPIOY_12 GPIO_ACTIVE_HIGH>;
60 enable-active-high;
61 };
62
63 tf_io: gpio-regulator-tf_io {
64 compatible = "regulator-gpio";
65
66 regulator-name = "TF_IO";
67 regulator-min-microvolt = <1800000>;
68 regulator-max-microvolt = <3300000>;
69
Martin Blumenstingl288cb5d2018-09-13 22:29:17 +020070 vin-supply = <&vcc_3v3>;
71
Linus Lüssinge03efbc2018-03-17 21:11:14 +010072 /*
73 * signal name from schematics: TF_3V3N_1V8_EN
74 */
75 gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
76 gpios-states = <0>;
77
78 states = <3300000 0
79 1800000 1>;
80 };
Martin Blumenstingl524d9602018-09-13 22:29:16 +020081
Martin Blumenstingla6c949282019-01-18 23:52:26 +010082 iio-hwmon {
83 compatible = "iio-hwmon";
84 io-channels = <&saradc 8>;
85 };
86
Martin Blumenstingl09ee9512019-04-13 18:34:23 +020087 rtc32k_xtal: rtc32k-xtal-clk {
88 /* X3 in the schematics */
89 compatible = "fixed-clock";
90 clock-frequency = <32768>;
91 clock-output-names = "RTC32K";
92 #clock-cells = <0>;
93 };
94
Martin Blumenstingl288cb5d2018-09-13 22:29:17 +020095 vcc_1v8: regulator-vcc-1v8 {
96 /*
97 * RICHTEK RT9179 configured for a fixed output voltage of
98 * 1.8V. This supplies not only VCC1V8 but also IOREF_1V8 and
99 * VDD1V8 according to the schematics.
100 */
101 compatible = "regulator-fixed";
102
103 regulator-name = "VCC1V8";
104 regulator-min-microvolt = <1800000>;
105 regulator-max-microvolt = <1800000>;
106
107 vin-supply = <&p5v0>;
108 };
109
110 vcc_3v3: regulator-vcc-3v3 {
111 /*
112 * Monolithic Power Systems MP2161 configured for a fixed
113 * output voltage of 3.3V. This supplies not only VCC3V3 but
114 * also VDD3V3 and VDDIO_AO3V3 according to the schematics.
115 */
116 compatible = "regulator-fixed";
117
118 regulator-name = "VCC3V3";
119 regulator-min-microvolt = <3300000>;
120 regulator-max-microvolt = <3300000>;
121
122 vin-supply = <&p5v0>;
123 };
124
Martin Blumenstingl524d9602018-09-13 22:29:16 +0200125 vcck: regulator-vcck {
126 /* Monolithic Power Systems MP2161 */
127 compatible = "pwm-regulator";
128
129 regulator-name = "VCCK";
130 regulator-min-microvolt = <860000>;
131 regulator-max-microvolt = <1140000>;
132
Martin Blumenstingl288cb5d2018-09-13 22:29:17 +0200133 vin-supply = <&p5v0>;
134
Martin Blumenstingl524d9602018-09-13 22:29:16 +0200135 pwms = <&pwm_cd 0 12218 0>;
136 pwm-dutycycle-range = <91 0>;
137
138 regulator-boot-on;
139 regulator-always-on;
140 };
Martin Blumenstingl288cb5d2018-09-13 22:29:17 +0200141
142 vddc_ddr: regulator-vddc-ddr {
143 /*
144 * Monolithic Power Systems MP2161 configured for a fixed
145 * output voltage of 1.5V. This supplies not only DDR_VDDC but
146 * also DDR3_1V5 according to the schematics.
147 */
148 compatible = "regulator-fixed";
149
150 regulator-name = "DDR_VDDC";
151 regulator-min-microvolt = <1500000>;
152 regulator-max-microvolt = <1500000>;
153
154 vin-supply = <&p5v0>;
155 };
156
Martin Blumenstingl8bdf38b2019-07-27 14:12:56 +0200157 vddee: regulator-vddee {
158 /* Monolithic Power Systems MP2161 */
159 compatible = "pwm-regulator";
160
161 regulator-name = "VDDEE";
162 regulator-min-microvolt = <860000>;
163 regulator-max-microvolt = <1140000>;
164
165 vin-supply = <&p5v0>;
166
167 pwms = <&pwm_cd 1 12218 0>;
168 pwm-dutycycle-range = <91 0>;
169
170 regulator-boot-on;
171 regulator-always-on;
172 };
173
Martin Blumenstingl288cb5d2018-09-13 22:29:17 +0200174 vdd_rtc: regulator-vdd-rtc {
175 /*
176 * Torex Semiconductor XC6215 configured for a fixed output of
177 * 0.9V.
178 */
179 compatible = "regulator-fixed";
180
181 regulator-name = "VDD_RTC";
182 regulator-min-microvolt = <900000>;
183 regulator-max-microvolt = <900000>;
184
185 vin-supply = <&vcc_3v3>;
186 };
Martin Blumenstingl524d9602018-09-13 22:29:16 +0200187};
188
189&cpu0 {
190 cpu-supply = <&vcck>;
Carlo Caione4a69fcd2015-10-07 22:31:04 +0200191};
192
Martin Blumenstingl6b14dd72019-08-12 19:50:04 +0200193&efuse {
194 ethernet_mac_address: mac@1b4 {
195 reg = <0x1b4 0x6>;
196 };
197};
198
Emiliano Ingrassia9c157952018-01-19 02:49:17 +0100199&ethmac {
200 status = "okay";
201
Emiliano Ingrassia9c157952018-01-19 02:49:17 +0100202 pinctrl-0 = <&eth_rgmii_pins>;
203 pinctrl-names = "default";
204
Emiliano Ingrassia9c157952018-01-19 02:49:17 +0100205 phy-handle = <&eth_phy>;
Martin Blumenstingl00523112020-05-12 23:51:48 +0200206 phy-mode = "rgmii-id";
Emiliano Ingrassia9c157952018-01-19 02:49:17 +0100207
Martin Blumenstingl6b14dd72019-08-12 19:50:04 +0200208 nvmem-cells = <&ethernet_mac_address>;
209 nvmem-cell-names = "mac-address";
210
Emiliano Ingrassia9c157952018-01-19 02:49:17 +0100211 mdio {
212 compatible = "snps,dwmac-mdio";
213 #address-cells = <1>;
214 #size-cells = <0>;
215
216 /* Realtek RTL8211F (0x001cc916) */
217 eth_phy: ethernet-phy@0 {
218 reg = <0>;
Martin Blumenstingla2c6e822019-06-15 12:38:30 +0200219
220 reset-assert-us = <10000>;
221 reset-deassert-us = <30000>;
222 reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>;
223
Emiliano Ingrassia9c157952018-01-19 02:49:17 +0100224 interrupt-parent = <&gpio_intc>;
225 /* GPIOH_3 */
226 interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
227 };
228 };
229};
Martin Blumenstingl9bec5c52018-05-06 22:57:48 +0200230
Martin Blumenstingl07f9da22019-03-28 21:47:21 +0100231&gpio {
232 gpio-line-names = /* Bank GPIOX */
233 "J2 Header Pin 35", "J2 Header Pin 36",
234 "J2 Header Pin 32", "J2 Header Pin 31",
235 "J2 Header Pin 29", "J2 Header Pin 18",
236 "J2 Header Pin 22", "J2 Header Pin 16",
237 "J2 Header Pin 23", "J2 Header Pin 21",
238 "J2 Header Pin 19", "J2 Header Pin 33",
239 "J2 Header Pin 8", "J2 Header Pin 10",
240 "J2 Header Pin 15", "J2 Header Pin 13",
241 "J2 Header Pin 24", "J2 Header Pin 26",
242 /* Bank GPIOY */
243 "Revision (upper)", "Revision (lower)",
244 "J2 Header Pin 7", "", "J2 Header Pin 12",
245 "J2 Header Pin 11", "", "", "",
246 "TFLASH_VDD_EN", "", "",
247 /* Bank GPIODV */
248 "VCCK_PWM (PWM_C)", "I2CA_SDA", "I2CA_SCL",
249 "I2CB_SDA", "I2CB_SCL", "VDDEE_PWM (PWM_D)",
250 "",
251 /* Bank GPIOH */
252 "HDMI_HPD", "HDMI_I2C_SDA", "HDMI_I2C_SCL",
253 "ETH_PHY_INTR", "ETH_PHY_NRST", "ETH_TXD1",
254 "ETH_TXD0", "ETH_TXD3", "ETH_TXD2",
255 "ETH_RGMII_TX_CLK",
256 /* Bank CARD */
257 "SD_DATA1 (SDB_D1)", "SD_DATA0 (SDB_D0)",
258 "SD_CLK", "SD_CMD", "SD_DATA3 (SDB_D3)",
259 "SD_DATA2 (SDB_D2)", "SD_CDN (SD_DET_N)",
260 /* Bank BOOT */
261 "SDC_D0 (EMMC)", "SDC_D1 (EMMC)",
262 "SDC_D2 (EMMC)", "SDC_D3 (EMMC)",
263 "SDC_D4 (EMMC)", "SDC_D5 (EMMC)",
264 "SDC_D6 (EMMC)", "SDC_D7 (EMMC)",
265 "SDC_CLK (EMMC)", "SDC_RSTn (EMMC)",
266 "SDC_CMD (EMMC)", "BOOT_SEL", "", "", "",
267 "", "", "", "",
268 /* Bank DIF */
269 "ETH_RXD1", "ETH_RXD0", "ETH_RX_DV",
270 "RGMII_RX_CLK", "ETH_RXD3", "ETH_RXD2",
271 "ETH_TXEN", "ETH_PHY_REF_CLK_25MOUT",
272 "ETH_MDC", "ETH_MDIO";
273};
274
Martin Blumenstingl9bec5c52018-05-06 22:57:48 +0200275&gpio_ao {
Martin Blumenstingl07f9da22019-03-28 21:47:21 +0100276 gpio-line-names = "UART TX", "UART RX", "",
277 "TF_3V3N_1V8_EN", "USB_HUB_RST_N",
278 "USB_OTG_PWREN", "J7 Header Pin 2",
279 "IR_IN", "J7 Header Pin 4",
280 "J7 Header Pin 6", "J7 Header Pin 5",
281 "J7 Header Pin 7", "HDMI_CEC",
282 "SYS_LED", "", "";
283
Martin Blumenstingl9bec5c52018-05-06 22:57:48 +0200284 /*
285 * WARNING: The USB Hub on the Odroid-C1/C1+ needs a reset signal
286 * to be turned high in order to be detected by the USB Controller.
287 * This signal should be handled by a USB specific power sequence
288 * in order to reset the Hub when USB bus is powered down.
289 */
290 usb-hub {
291 gpio-hog;
292 gpios = <GPIOAO_4 GPIO_ACTIVE_HIGH>;
293 output-high;
294 line-name = "usb-hub-reset";
295 };
296};
297
Martin Blumenstingl15b520f2018-05-06 22:57:49 +0200298&ir_receiver {
299 status = "okay";
300 pinctrl-0 = <&ir_recv_pins>;
301 pinctrl-names = "default";
302};
303
Martin Blumenstingl8bdf38b2019-07-27 14:12:56 +0200304&mali {
305 mali-supply = <&vddee>;
306};
307
Martin Blumenstinglfd664312018-09-13 22:29:18 +0200308&saradc {
309 status = "okay";
310 vref-supply = <&vcc_1v8>;
311};
312
Martin Blumenstingl9bec5c52018-05-06 22:57:48 +0200313&sdio {
314 status = "okay";
315
316 pinctrl-0 = <&sd_b_pins>;
317 pinctrl-names = "default";
318
319 /* SD card */
320 sd_card_slot: slot@1 {
321 compatible = "mmc-slot";
322 reg = <1>;
323 status = "okay";
324
325 bus-width = <4>;
326 no-sdio;
327 cap-mmc-highspeed;
328 cap-sd-highspeed;
329 disable-wp;
330
Martin Blumenstingl3fb348e2018-12-29 13:57:09 +0100331 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
Martin Blumenstingl9bec5c52018-05-06 22:57:48 +0200332
333 vmmc-supply = <&tflash_vdd>;
334 vqmmc-supply = <&tf_io>;
335 };
336};
337
Martin Blumenstingl524d9602018-09-13 22:29:16 +0200338&pwm_cd {
339 status = "okay";
Martin Blumenstingl8bdf38b2019-07-27 14:12:56 +0200340 pinctrl-0 = <&pwm_c1_pins>, <&pwm_d_pins>;
Martin Blumenstingl524d9602018-09-13 22:29:16 +0200341 pinctrl-names = "default";
Martin Blumenstingl630ea312019-12-08 19:05:23 +0100342 clocks = <&xtal>, <&xtal>;
Martin Blumenstingl8bdf38b2019-07-27 14:12:56 +0200343 clock-names = "clkin0", "clkin1";
Martin Blumenstingl524d9602018-09-13 22:29:16 +0200344};
345
Martin Blumenstingl09ee9512019-04-13 18:34:23 +0200346&rtc {
347 /* needs to be enabled manually when a battery is connected */
348 clocks = <&rtc32k_xtal>;
349 vdd-supply = <&vdd_rtc>;
350};
351
Martin Blumenstingl9bec5c52018-05-06 22:57:48 +0200352&uart_AO {
353 status = "okay";
354 pinctrl-0 = <&uart_ao_a_pins>;
355 pinctrl-names = "default";
356};
357
358&usb1_phy {
359 status = "okay";
360};
361
362&usb1 {
363 status = "okay";
364};