1*724ba675SRob Herring// SPDX-License-Identifier: GPL-2.0 OR MIT
2*724ba675SRob Herring/*
3*724ba675SRob Herring * Copyright 2015 Endless Mobile, Inc.
4*724ba675SRob Herring * Author: Carlo Caione <carlo@endlessm.com>
5*724ba675SRob Herring */
6*724ba675SRob Herring
7*724ba675SRob Herring/dts-v1/;
8*724ba675SRob Herring#include "meson8b.dtsi"
9*724ba675SRob Herring#include <dt-bindings/gpio/gpio.h>
10*724ba675SRob Herring
11*724ba675SRob Herring/ {
12*724ba675SRob Herring	model = "Hardkernel ODROID-C1";
13*724ba675SRob Herring	compatible = "hardkernel,odroid-c1", "amlogic,meson8b";
14*724ba675SRob Herring
15*724ba675SRob Herring	aliases {
16*724ba675SRob Herring		serial0 = &uart_AO;
17*724ba675SRob Herring		mmc0 = &sd_card_slot;
18*724ba675SRob Herring		mmc1 = &sdhc;
19*724ba675SRob Herring	};
20*724ba675SRob Herring
21*724ba675SRob Herring	chosen {
22*724ba675SRob Herring		stdout-path = "serial0:115200n8";
23*724ba675SRob Herring	};
24*724ba675SRob Herring
25*724ba675SRob Herring	memory {
26*724ba675SRob Herring		device_type = "memory";
27*724ba675SRob Herring		reg = <0x40000000 0x40000000>;
28*724ba675SRob Herring	};
29*724ba675SRob Herring
30*724ba675SRob Herring	emmc_pwrseq: emmc-pwrseq {
31*724ba675SRob Herring		compatible = "mmc-pwrseq-emmc";
32*724ba675SRob Herring		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
33*724ba675SRob Herring	};
34*724ba675SRob Herring
35*724ba675SRob Herring	leds {
36*724ba675SRob Herring		compatible = "gpio-leds";
37*724ba675SRob Herring		led-blue {
38*724ba675SRob Herring			label = "c1:blue:alive";
39*724ba675SRob Herring			gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_LOW>;
40*724ba675SRob Herring			linux,default-trigger = "heartbeat";
41*724ba675SRob Herring			default-state = "off";
42*724ba675SRob Herring		};
43*724ba675SRob Herring	};
44*724ba675SRob Herring
45*724ba675SRob Herring	p5v0: regulator-p5v0 {
46*724ba675SRob Herring		compatible = "regulator-fixed";
47*724ba675SRob Herring
48*724ba675SRob Herring		regulator-name = "P5V0";
49*724ba675SRob Herring		regulator-min-microvolt = <5000000>;
50*724ba675SRob Herring		regulator-max-microvolt = <5000000>;
51*724ba675SRob Herring	};
52*724ba675SRob Herring
53*724ba675SRob Herring	tflash_vdd: regulator-tflash_vdd {
54*724ba675SRob Herring		/*
55*724ba675SRob Herring		 * signal name from schematics: TFLASH_VDD_EN
56*724ba675SRob Herring		 */
57*724ba675SRob Herring		compatible = "regulator-fixed";
58*724ba675SRob Herring
59*724ba675SRob Herring		regulator-name = "TFLASH_VDD";
60*724ba675SRob Herring		regulator-min-microvolt = <3300000>;
61*724ba675SRob Herring		regulator-max-microvolt = <3300000>;
62*724ba675SRob Herring
63*724ba675SRob Herring		vin-supply = <&vcc_3v3>;
64*724ba675SRob Herring
65*724ba675SRob Herring		gpio = <&gpio GPIOY_12 GPIO_ACTIVE_HIGH>;
66*724ba675SRob Herring		enable-active-high;
67*724ba675SRob Herring	};
68*724ba675SRob Herring
69*724ba675SRob Herring	tf_io: gpio-regulator-tf_io {
70*724ba675SRob Herring		compatible = "regulator-gpio";
71*724ba675SRob Herring
72*724ba675SRob Herring		regulator-name = "TF_IO";
73*724ba675SRob Herring		regulator-min-microvolt = <1800000>;
74*724ba675SRob Herring		regulator-max-microvolt = <3300000>;
75*724ba675SRob Herring
76*724ba675SRob Herring		vin-supply = <&vcc_3v3>;
77*724ba675SRob Herring
78*724ba675SRob Herring		/*
79*724ba675SRob Herring		 * signal name from schematics: TF_3V3N_1V8_EN
80*724ba675SRob Herring		 */
81*724ba675SRob Herring		gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
82*724ba675SRob Herring		gpios-states = <0>;
83*724ba675SRob Herring
84*724ba675SRob Herring		states = <3300000 0
85*724ba675SRob Herring			  1800000 1>;
86*724ba675SRob Herring	};
87*724ba675SRob Herring
88*724ba675SRob Herring	rtc32k_xtal: rtc32k-xtal-clk {
89*724ba675SRob Herring		/* X3 in the schematics */
90*724ba675SRob Herring		compatible = "fixed-clock";
91*724ba675SRob Herring		clock-frequency = <32768>;
92*724ba675SRob Herring		clock-output-names = "RTC32K";
93*724ba675SRob Herring		#clock-cells = <0>;
94*724ba675SRob Herring	};
95*724ba675SRob Herring
96*724ba675SRob Herring	vcc_1v8: regulator-vcc-1v8 {
97*724ba675SRob Herring		/*
98*724ba675SRob Herring		 * RICHTEK RT9179 configured for a fixed output voltage of
99*724ba675SRob Herring		 * 1.8V. This supplies not only VCC1V8 but also IOREF_1V8 and
100*724ba675SRob Herring		 * VDD1V8 according to the schematics.
101*724ba675SRob Herring		 */
102*724ba675SRob Herring		compatible = "regulator-fixed";
103*724ba675SRob Herring
104*724ba675SRob Herring		regulator-name = "VCC1V8";
105*724ba675SRob Herring		regulator-min-microvolt = <1800000>;
106*724ba675SRob Herring		regulator-max-microvolt = <1800000>;
107*724ba675SRob Herring
108*724ba675SRob Herring		vin-supply = <&p5v0>;
109*724ba675SRob Herring	};
110*724ba675SRob Herring
111*724ba675SRob Herring	vcc_3v3: regulator-vcc-3v3 {
112*724ba675SRob Herring		/*
113*724ba675SRob Herring		 * Monolithic Power Systems MP2161 configured for a fixed
114*724ba675SRob Herring		 * output voltage of 3.3V. This supplies not only VCC3V3 but
115*724ba675SRob Herring		 * also VDD3V3 and VDDIO_AO3V3 according to the schematics.
116*724ba675SRob Herring		 */
117*724ba675SRob Herring		compatible = "regulator-fixed";
118*724ba675SRob Herring
119*724ba675SRob Herring		regulator-name = "VCC3V3";
120*724ba675SRob Herring		regulator-min-microvolt = <3300000>;
121*724ba675SRob Herring		regulator-max-microvolt = <3300000>;
122*724ba675SRob Herring
123*724ba675SRob Herring		vin-supply = <&p5v0>;
124*724ba675SRob Herring	};
125*724ba675SRob Herring
126*724ba675SRob Herring	vcck: regulator-vcck {
127*724ba675SRob Herring		/* Monolithic Power Systems MP2161 */
128*724ba675SRob Herring		compatible = "pwm-regulator";
129*724ba675SRob Herring
130*724ba675SRob Herring		regulator-name = "VCCK";
131*724ba675SRob Herring		regulator-min-microvolt = <860000>;
132*724ba675SRob Herring		regulator-max-microvolt = <1140000>;
133*724ba675SRob Herring
134*724ba675SRob Herring		pwm-supply = <&p5v0>;
135*724ba675SRob Herring
136*724ba675SRob Herring		pwms = <&pwm_cd 0 12218 0>;
137*724ba675SRob Herring		pwm-dutycycle-range = <91 0>;
138*724ba675SRob Herring
139*724ba675SRob Herring		regulator-boot-on;
140*724ba675SRob Herring		regulator-always-on;
141*724ba675SRob Herring	};
142*724ba675SRob Herring
143*724ba675SRob Herring	vddc_ddr: regulator-vddc-ddr {
144*724ba675SRob Herring		/*
145*724ba675SRob Herring		 * Monolithic Power Systems MP2161 configured for a fixed
146*724ba675SRob Herring		 * output voltage of 1.5V. This supplies not only DDR_VDDC but
147*724ba675SRob Herring		 * also DDR3_1V5 according to the schematics.
148*724ba675SRob Herring		 */
149*724ba675SRob Herring		compatible = "regulator-fixed";
150*724ba675SRob Herring
151*724ba675SRob Herring		regulator-name = "DDR_VDDC";
152*724ba675SRob Herring		regulator-min-microvolt = <1500000>;
153*724ba675SRob Herring		regulator-max-microvolt = <1500000>;
154*724ba675SRob Herring
155*724ba675SRob Herring		vin-supply = <&p5v0>;
156*724ba675SRob Herring	};
157*724ba675SRob Herring
158*724ba675SRob Herring	vddee: regulator-vddee {
159*724ba675SRob Herring		/* Monolithic Power Systems MP2161 */
160*724ba675SRob Herring		compatible = "pwm-regulator";
161*724ba675SRob Herring
162*724ba675SRob Herring		regulator-name = "VDDEE";
163*724ba675SRob Herring		regulator-min-microvolt = <860000>;
164*724ba675SRob Herring		regulator-max-microvolt = <1140000>;
165*724ba675SRob Herring
166*724ba675SRob Herring		pwm-supply = <&p5v0>;
167*724ba675SRob Herring
168*724ba675SRob Herring		pwms = <&pwm_cd 1 12218 0>;
169*724ba675SRob Herring		pwm-dutycycle-range = <91 0>;
170*724ba675SRob Herring
171*724ba675SRob Herring		regulator-boot-on;
172*724ba675SRob Herring		regulator-always-on;
173*724ba675SRob Herring	};
174*724ba675SRob Herring
175*724ba675SRob Herring	vdd_rtc: regulator-vdd-rtc {
176*724ba675SRob Herring		/*
177*724ba675SRob Herring		 * Torex Semiconductor XC6215 configured for a fixed output of
178*724ba675SRob Herring		 * 0.9V.
179*724ba675SRob Herring		 */
180*724ba675SRob Herring		compatible = "regulator-fixed";
181*724ba675SRob Herring
182*724ba675SRob Herring		regulator-name = "VDD_RTC";
183*724ba675SRob Herring		regulator-min-microvolt = <900000>;
184*724ba675SRob Herring		regulator-max-microvolt = <900000>;
185*724ba675SRob Herring
186*724ba675SRob Herring		vin-supply = <&vcc_3v3>;
187*724ba675SRob Herring	};
188*724ba675SRob Herring};
189*724ba675SRob Herring
190*724ba675SRob Herring&cpu0 {
191*724ba675SRob Herring	cpu-supply = <&vcck>;
192*724ba675SRob Herring};
193*724ba675SRob Herring
194*724ba675SRob Herring&efuse {
195*724ba675SRob Herring	ethernet_mac_address: mac@1b4 {
196*724ba675SRob Herring		reg = <0x1b4 0x6>;
197*724ba675SRob Herring	};
198*724ba675SRob Herring};
199*724ba675SRob Herring
200*724ba675SRob Herring&ethmac {
201*724ba675SRob Herring	status = "okay";
202*724ba675SRob Herring
203*724ba675SRob Herring	pinctrl-0 = <&eth_rgmii_pins>;
204*724ba675SRob Herring	pinctrl-names = "default";
205*724ba675SRob Herring
206*724ba675SRob Herring	phy-handle = <&eth_phy>;
207*724ba675SRob Herring	phy-mode = "rgmii-id";
208*724ba675SRob Herring
209*724ba675SRob Herring	nvmem-cells = <&ethernet_mac_address>;
210*724ba675SRob Herring	nvmem-cell-names = "mac-address";
211*724ba675SRob Herring
212*724ba675SRob Herring	mdio {
213*724ba675SRob Herring		compatible = "snps,dwmac-mdio";
214*724ba675SRob Herring		#address-cells = <1>;
215*724ba675SRob Herring		#size-cells = <0>;
216*724ba675SRob Herring
217*724ba675SRob Herring		/* Realtek RTL8211F (0x001cc916) */
218*724ba675SRob Herring		eth_phy: ethernet-phy@0 {
219*724ba675SRob Herring			reg = <0>;
220*724ba675SRob Herring
221*724ba675SRob Herring			reset-assert-us = <10000>;
222*724ba675SRob Herring			reset-deassert-us = <80000>;
223*724ba675SRob Herring			reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>;
224*724ba675SRob Herring
225*724ba675SRob Herring			interrupt-parent = <&gpio_intc>;
226*724ba675SRob Herring			/* GPIOH_3 */
227*724ba675SRob Herring			interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
228*724ba675SRob Herring		};
229*724ba675SRob Herring	};
230*724ba675SRob Herring};
231*724ba675SRob Herring
232*724ba675SRob Herring&gpio {
233*724ba675SRob Herring	gpio-line-names = /* Bank GPIOX */
234*724ba675SRob Herring			  "J2 Header Pin 35", "J2 Header Pin 36",
235*724ba675SRob Herring			  "J2 Header Pin 32", "J2 Header Pin 31",
236*724ba675SRob Herring			  "J2 Header Pin 29", "J2 Header Pin 18",
237*724ba675SRob Herring			  "J2 Header Pin 22", "J2 Header Pin 16",
238*724ba675SRob Herring			  "J2 Header Pin 23", "J2 Header Pin 21",
239*724ba675SRob Herring			  "J2 Header Pin 19", "J2 Header Pin 33",
240*724ba675SRob Herring			  "J2 Header Pin 8", "J2 Header Pin 10",
241*724ba675SRob Herring			  "J2 Header Pin 15", "J2 Header Pin 13",
242*724ba675SRob Herring			  "J2 Header Pin 24", "J2 Header Pin 26",
243*724ba675SRob Herring			  /* Bank GPIOY */
244*724ba675SRob Herring			  "Revision (upper)", "Revision (lower)",
245*724ba675SRob Herring			  "J2 Header Pin 7", "", "J2 Header Pin 12",
246*724ba675SRob Herring			  "J2 Header Pin 11", "", "", "",
247*724ba675SRob Herring			  "TFLASH_VDD_EN", "", "",
248*724ba675SRob Herring			  /* Bank GPIODV */
249*724ba675SRob Herring			  "VCCK_PWM (PWM_C)", "I2CA_SDA", "I2CA_SCL",
250*724ba675SRob Herring			  "I2CB_SDA", "I2CB_SCL", "VDDEE_PWM (PWM_D)",
251*724ba675SRob Herring			  "",
252*724ba675SRob Herring			  /* Bank GPIOH */
253*724ba675SRob Herring			  "HDMI_HPD", "HDMI_I2C_SDA", "HDMI_I2C_SCL",
254*724ba675SRob Herring			  "ETH_PHY_INTR", "ETH_PHY_NRST", "ETH_TXD1",
255*724ba675SRob Herring			  "ETH_TXD0", "ETH_TXD3", "ETH_TXD2",
256*724ba675SRob Herring			  "ETH_RGMII_TX_CLK",
257*724ba675SRob Herring			  /* Bank CARD */
258*724ba675SRob Herring			  "SD_DATA1 (SDB_D1)", "SD_DATA0 (SDB_D0)",
259*724ba675SRob Herring			  "SD_CLK",  "SD_CMD", "SD_DATA3 (SDB_D3)",
260*724ba675SRob Herring			  "SD_DATA2 (SDB_D2)", "SD_CDN (SD_DET_N)",
261*724ba675SRob Herring			  /* Bank BOOT */
262*724ba675SRob Herring			  "SDC_D0 (EMMC)", "SDC_D1 (EMMC)",
263*724ba675SRob Herring			  "SDC_D2 (EMMC)", "SDC_D3 (EMMC)",
264*724ba675SRob Herring			  "SDC_D4 (EMMC)", "SDC_D5 (EMMC)",
265*724ba675SRob Herring			  "SDC_D6 (EMMC)", "SDC_D7 (EMMC)",
266*724ba675SRob Herring			  "SDC_CLK (EMMC)", "SDC_RSTn (EMMC)",
267*724ba675SRob Herring			  "SDC_CMD (EMMC)", "BOOT_SEL", "", "", "",
268*724ba675SRob Herring			  "", "", "", "",
269*724ba675SRob Herring			  /* Bank DIF */
270*724ba675SRob Herring			  "ETH_RXD1", "ETH_RXD0", "ETH_RX_DV",
271*724ba675SRob Herring			  "RGMII_RX_CLK", "ETH_RXD3", "ETH_RXD2",
272*724ba675SRob Herring			  "ETH_TXEN", "ETH_PHY_REF_CLK_25MOUT",
273*724ba675SRob Herring			  "ETH_MDC", "ETH_MDIO";
274*724ba675SRob Herring};
275*724ba675SRob Herring
276*724ba675SRob Herring&gpio_ao {
277*724ba675SRob Herring	gpio-line-names = "UART TX", "UART RX", "",
278*724ba675SRob Herring			  "TF_3V3N_1V8_EN", "USB_HUB_RST_N",
279*724ba675SRob Herring			  "USB_OTG_PWREN", "J7 Header Pin 2",
280*724ba675SRob Herring			  "IR_IN", "J7 Header Pin 4",
281*724ba675SRob Herring			  "J7 Header Pin 6", "J7 Header Pin 5",
282*724ba675SRob Herring			  "J7 Header Pin 7", "HDMI_CEC",
283*724ba675SRob Herring			  "SYS_LED", "", "";
284*724ba675SRob Herring};
285*724ba675SRob Herring
286*724ba675SRob Herring&ir_receiver {
287*724ba675SRob Herring	status = "okay";
288*724ba675SRob Herring	pinctrl-0 = <&ir_recv_pins>;
289*724ba675SRob Herring	pinctrl-names = "default";
290*724ba675SRob Herring};
291*724ba675SRob Herring
292*724ba675SRob Herring&mali {
293*724ba675SRob Herring	mali-supply = <&vddee>;
294*724ba675SRob Herring};
295*724ba675SRob Herring
296*724ba675SRob Herring&saradc {
297*724ba675SRob Herring	status = "okay";
298*724ba675SRob Herring	vref-supply = <&vcc_1v8>;
299*724ba675SRob Herring};
300*724ba675SRob Herring
301*724ba675SRob Herring&sdhc {
302*724ba675SRob Herring	status = "okay";
303*724ba675SRob Herring
304*724ba675SRob Herring	pinctrl-0 = <&sdxc_c_pins>;
305*724ba675SRob Herring	pinctrl-names = "default";
306*724ba675SRob Herring
307*724ba675SRob Herring	bus-width = <8>;
308*724ba675SRob Herring	max-frequency = <100000000>;
309*724ba675SRob Herring
310*724ba675SRob Herring	disable-wp;
311*724ba675SRob Herring	cap-mmc-highspeed;
312*724ba675SRob Herring	mmc-hs200-1_8v;
313*724ba675SRob Herring	no-sdio;
314*724ba675SRob Herring
315*724ba675SRob Herring	mmc-pwrseq = <&emmc_pwrseq>;
316*724ba675SRob Herring
317*724ba675SRob Herring	vmmc-supply = <&vcc_3v3>;
318*724ba675SRob Herring	vqmmc-supply = <&vcc_1v8>;
319*724ba675SRob Herring};
320*724ba675SRob Herring
321*724ba675SRob Herring&sdio {
322*724ba675SRob Herring	status = "okay";
323*724ba675SRob Herring
324*724ba675SRob Herring	pinctrl-0 = <&sd_b_pins>;
325*724ba675SRob Herring	pinctrl-names = "default";
326*724ba675SRob Herring
327*724ba675SRob Herring	/* SD card */
328*724ba675SRob Herring	sd_card_slot: slot@1 {
329*724ba675SRob Herring		compatible = "mmc-slot";
330*724ba675SRob Herring		reg = <1>;
331*724ba675SRob Herring		status = "okay";
332*724ba675SRob Herring
333*724ba675SRob Herring		bus-width = <4>;
334*724ba675SRob Herring		no-sdio;
335*724ba675SRob Herring		cap-mmc-highspeed;
336*724ba675SRob Herring		cap-sd-highspeed;
337*724ba675SRob Herring		disable-wp;
338*724ba675SRob Herring
339*724ba675SRob Herring		cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
340*724ba675SRob Herring
341*724ba675SRob Herring		vmmc-supply = <&tflash_vdd>;
342*724ba675SRob Herring		vqmmc-supply = <&tf_io>;
343*724ba675SRob Herring	};
344*724ba675SRob Herring};
345*724ba675SRob Herring
346*724ba675SRob Herring&pwm_cd {
347*724ba675SRob Herring	status = "okay";
348*724ba675SRob Herring	pinctrl-0 = <&pwm_c1_pins>, <&pwm_d_pins>;
349*724ba675SRob Herring	pinctrl-names = "default";
350*724ba675SRob Herring	clocks = <&xtal>, <&xtal>;
351*724ba675SRob Herring	clock-names = "clkin0", "clkin1";
352*724ba675SRob Herring};
353*724ba675SRob Herring
354*724ba675SRob Herring&rtc {
355*724ba675SRob Herring	/* needs to be enabled manually when a battery is connected */
356*724ba675SRob Herring	clocks = <&rtc32k_xtal>;
357*724ba675SRob Herring	vdd-supply = <&vdd_rtc>;
358*724ba675SRob Herring};
359*724ba675SRob Herring
360*724ba675SRob Herring&uart_AO {
361*724ba675SRob Herring	status = "okay";
362*724ba675SRob Herring	pinctrl-0 = <&uart_ao_a_pins>;
363*724ba675SRob Herring	pinctrl-names = "default";
364*724ba675SRob Herring};
365*724ba675SRob Herring
366*724ba675SRob Herring&usb1_phy {
367*724ba675SRob Herring	status = "okay";
368*724ba675SRob Herring};
369*724ba675SRob Herring
370*724ba675SRob Herring&usb1 {
371*724ba675SRob Herring	dr_mode = "host";
372*724ba675SRob Herring	#address-cells = <1>;
373*724ba675SRob Herring	#size-cells = <0>;
374*724ba675SRob Herring	status = "okay";
375*724ba675SRob Herring
376*724ba675SRob Herring	hub@1 {
377*724ba675SRob Herring		/* Genesys Logic GL852G usb hub */
378*724ba675SRob Herring		compatible = "usb5e3,610";
379*724ba675SRob Herring		reg = <1>;
380*724ba675SRob Herring		vdd-supply = <&p5v0>;
381*724ba675SRob Herring		reset-gpio = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_LOW>;
382*724ba675SRob Herring	};
383*724ba675SRob Herring};
384