1114abfe1SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
285596034SKevin Hilman/*
385596034SKevin Hilman * Copyright (c) 2016 Andreas Färber
485596034SKevin Hilman * Copyright (c) 2016 BayLibre, Inc.
585596034SKevin Hilman * Author: Kevin Hilman <khilman@kernel.org>
685596034SKevin Hilman */
785596034SKevin Hilman
885596034SKevin Hilman/dts-v1/;
985596034SKevin Hilman
1085596034SKevin Hilman#include "meson-gxbb.dtsi"
11f40d437fSCarlo Caione#include <dt-bindings/gpio/gpio.h>
1285596034SKevin Hilman
1385596034SKevin Hilman/ {
1485596034SKevin Hilman	compatible = "hardkernel,odroid-c2", "amlogic,meson-gxbb";
1585596034SKevin Hilman	model = "Hardkernel ODROID-C2";
1685596034SKevin Hilman
1785596034SKevin Hilman	aliases {
1885596034SKevin Hilman		serial0 = &uart_AO;
19059a58fcSJorge Ramirez-Ortiz		ethernet0 = &ethmac;
2085596034SKevin Hilman	};
2185596034SKevin Hilman
2285596034SKevin Hilman	chosen {
2385596034SKevin Hilman		stdout-path = "serial0:115200n8";
2485596034SKevin Hilman	};
2585596034SKevin Hilman
2685596034SKevin Hilman	memory@0 {
2785596034SKevin Hilman		device_type = "memory";
2885596034SKevin Hilman		reg = <0x0 0x0 0x0 0x80000000>;
2985596034SKevin Hilman	};
30f40d437fSCarlo Caione
315a0803bdSBrian Kim	usb_otg_pwr: regulator-usb-pwrs {
325a0803bdSBrian Kim		compatible = "regulator-fixed";
335a0803bdSBrian Kim
345a0803bdSBrian Kim		regulator-name = "USB_OTG_PWR";
355a0803bdSBrian Kim
365a0803bdSBrian Kim		regulator-min-microvolt = <5000000>;
375a0803bdSBrian Kim		regulator-max-microvolt = <5000000>;
385a0803bdSBrian Kim
3947a8bddbSAnand Moon		/*
4047a8bddbSAnand Moon		 * signal name from schematics: PWREN
4147a8bddbSAnand Moon		 */
425a0803bdSBrian Kim		gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>;
435a0803bdSBrian Kim		enable-active-high;
4447a8bddbSAnand Moon		/*
4547a8bddbSAnand Moon		 * signal name from schematics: USB_POWER
4647a8bddbSAnand Moon		 */
4747a8bddbSAnand Moon		vin-supply = <&p5v0>;
485a0803bdSBrian Kim	};
495a0803bdSBrian Kim
50f40d437fSCarlo Caione	leds {
51f40d437fSCarlo Caione		compatible = "gpio-leds";
52f40d437fSCarlo Caione		blue {
53f40d437fSCarlo Caione			label = "c2:blue:alive";
54f40d437fSCarlo Caione			gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_LOW>;
55f40d437fSCarlo Caione			linux,default-trigger = "heartbeat";
56f40d437fSCarlo Caione			default-state = "off";
57f40d437fSCarlo Caione		};
58f40d437fSCarlo Caione	};
59ef8d2ffeSKevin Hilman
60fcf19f29SAnand Moon	p5v0: regulator-p5v0 {
61fcf19f29SAnand Moon		compatible = "regulator-fixed";
62fcf19f29SAnand Moon
63fcf19f29SAnand Moon		regulator-name = "P5V0";
64fcf19f29SAnand Moon		regulator-min-microvolt = <5000000>;
65fcf19f29SAnand Moon		regulator-max-microvolt = <5000000>;
66fcf19f29SAnand Moon		regulator-always-on;
67fcf19f29SAnand Moon	};
68fcf19f29SAnand Moon
69ef8d2ffeSKevin Hilman	tflash_vdd: regulator-tflash_vdd {
70ef8d2ffeSKevin Hilman		/*
71ef8d2ffeSKevin Hilman		 * signal name from schematics: TFLASH_VDD_EN
72ef8d2ffeSKevin Hilman		 */
73ef8d2ffeSKevin Hilman		compatible = "regulator-fixed";
74ef8d2ffeSKevin Hilman
75ef8d2ffeSKevin Hilman		regulator-name = "TFLASH_VDD";
76ef8d2ffeSKevin Hilman		regulator-min-microvolt = <3300000>;
77ef8d2ffeSKevin Hilman		regulator-max-microvolt = <3300000>;
78ef8d2ffeSKevin Hilman
79c34cd35eSNeil Armstrong		gpio = <&gpio GPIOY_12 GPIO_ACTIVE_HIGH>;
80ef8d2ffeSKevin Hilman		enable-active-high;
81ef8d2ffeSKevin Hilman	};
82ef8d2ffeSKevin Hilman
83ef8d2ffeSKevin Hilman	tf_io: gpio-regulator-tf_io {
84ef8d2ffeSKevin Hilman		compatible = "regulator-gpio";
85ef8d2ffeSKevin Hilman
86ef8d2ffeSKevin Hilman		regulator-name = "TF_IO";
87ef8d2ffeSKevin Hilman		regulator-min-microvolt = <1800000>;
88ef8d2ffeSKevin Hilman		regulator-max-microvolt = <3300000>;
89ef8d2ffeSKevin Hilman
90ef8d2ffeSKevin Hilman		/*
91ef8d2ffeSKevin Hilman		 * signal name from schematics: TF_3V3N_1V8_EN
92ef8d2ffeSKevin Hilman		 */
93ef8d2ffeSKevin Hilman		gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
94ef8d2ffeSKevin Hilman		gpios-states = <0>;
95ef8d2ffeSKevin Hilman
96f9717178SNeil Armstrong		states = <3300000 0>,
97f9717178SNeil Armstrong			 <1800000 1>;
98ef8d2ffeSKevin Hilman	};
99ef8d2ffeSKevin Hilman
100ef8d2ffeSKevin Hilman	vcc1v8: regulator-vcc1v8 {
101ef8d2ffeSKevin Hilman		compatible = "regulator-fixed";
102ef8d2ffeSKevin Hilman		regulator-name = "VCC1V8";
103ef8d2ffeSKevin Hilman		regulator-min-microvolt = <1800000>;
104ef8d2ffeSKevin Hilman		regulator-max-microvolt = <1800000>;
105ef8d2ffeSKevin Hilman	};
106ef8d2ffeSKevin Hilman
107ef8d2ffeSKevin Hilman	vcc3v3: regulator-vcc3v3 {
108ef8d2ffeSKevin Hilman		compatible = "regulator-fixed";
109ef8d2ffeSKevin Hilman		regulator-name = "VCC3V3";
110ef8d2ffeSKevin Hilman		regulator-min-microvolt = <3300000>;
111ef8d2ffeSKevin Hilman		regulator-max-microvolt = <3300000>;
112ef8d2ffeSKevin Hilman	};
113ef8d2ffeSKevin Hilman
114ef8d2ffeSKevin Hilman	emmc_pwrseq: emmc-pwrseq {
115ef8d2ffeSKevin Hilman		compatible = "mmc-pwrseq-emmc";
116ef8d2ffeSKevin Hilman		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
117ef8d2ffeSKevin Hilman	};
118fc19afa1SNeil Armstrong
119fc19afa1SNeil Armstrong	hdmi-connector {
120fc19afa1SNeil Armstrong		compatible = "hdmi-connector";
121fc19afa1SNeil Armstrong		type = "a";
122fc19afa1SNeil Armstrong
123fc19afa1SNeil Armstrong		port {
124fc19afa1SNeil Armstrong			hdmi_connector_in: endpoint {
125fc19afa1SNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
126fc19afa1SNeil Armstrong			};
127fc19afa1SNeil Armstrong		};
128fc19afa1SNeil Armstrong	};
129fc19afa1SNeil Armstrong};
130fc19afa1SNeil Armstrong
131fc19afa1SNeil Armstrong&cec_AO {
132fc19afa1SNeil Armstrong	status = "okay";
133fc19afa1SNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
134fc19afa1SNeil Armstrong	pinctrl-names = "default";
135fc19afa1SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
13685596034SKevin Hilman};
13785596034SKevin Hilman
1388c5509f0SKevin Hilman&ethmac {
1398c5509f0SKevin Hilman	status = "okay";
1403be2d9cfSNeil Armstrong	pinctrl-0 = <&eth_rgmii_pins>;
1418c5509f0SKevin Hilman	pinctrl-names = "default";
142feb3cbeaSJerome Brunet	phy-handle = <&eth_phy0>;
143b6ff2721SMartin Blumenstingl	phy-mode = "rgmii";
144b6ff2721SMartin Blumenstingl
145093d23dbSMartin Blumenstingl	amlogic,tx-delay-ns = <2>;
146093d23dbSMartin Blumenstingl
147feb3cbeaSJerome Brunet	mdio {
148feb3cbeaSJerome Brunet		compatible = "snps,dwmac-mdio";
149feb3cbeaSJerome Brunet		#address-cells = <1>;
150feb3cbeaSJerome Brunet		#size-cells = <0>;
151feb3cbeaSJerome Brunet
152feb3cbeaSJerome Brunet		eth_phy0: ethernet-phy@0 {
15350290cfeSMartin Blumenstingl			/* Realtek RTL8211F (0x001cc916) */
154feb3cbeaSJerome Brunet			reg = <0>;
155f29cabf2SMartin Blumenstingl
156f29cabf2SMartin Blumenstingl			reset-assert-us = <10000>;
157f29cabf2SMartin Blumenstingl			reset-deassert-us = <30000>;
158f29cabf2SMartin Blumenstingl			reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
159f29cabf2SMartin Blumenstingl
160b94d22d9SJerome Brunet			interrupt-parent = <&gpio_intc>;
16150290cfeSMartin Blumenstingl			/* MAC_INTR on GPIOZ_15 */
162b94d22d9SJerome Brunet			interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
163feb3cbeaSJerome Brunet		};
164feb3cbeaSJerome Brunet	};
1658c5509f0SKevin Hilman};
1668c5509f0SKevin Hilman
1673b69bdbfSAndreas Färber&gpio_ao {
1683b69bdbfSAndreas Färber	/*
1693b69bdbfSAndreas Färber	 * WARNING: The USB Hub on the Odroid-C2 needs a reset signal
1703b69bdbfSAndreas Färber	 * to be turned high in order to be detected by the USB Controller
1713b69bdbfSAndreas Färber	 * This signal should be handled by a USB specific power sequence
1723b69bdbfSAndreas Färber	 * in order to reset the Hub when USB bus is powered down.
1733b69bdbfSAndreas Färber	 */
1743b69bdbfSAndreas Färber	usb-hub {
1753b69bdbfSAndreas Färber		gpio-hog;
1763b69bdbfSAndreas Färber		gpios = <GPIOAO_4 GPIO_ACTIVE_HIGH>;
1773b69bdbfSAndreas Färber		output-high;
1783b69bdbfSAndreas Färber		line-name = "usb-hub-reset";
1793b69bdbfSAndreas Färber	};
1803b69bdbfSAndreas Färber};
1813b69bdbfSAndreas Färber
182fc19afa1SNeil Armstrong&hdmi_tx {
183fc19afa1SNeil Armstrong	status = "okay";
184fc19afa1SNeil Armstrong	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
185fc19afa1SNeil Armstrong	pinctrl-names = "default";
186fc19afa1SNeil Armstrong};
187fc19afa1SNeil Armstrong
188fc19afa1SNeil Armstrong&hdmi_tx_tmds_port {
189fc19afa1SNeil Armstrong	hdmi_tx_tmds_out: endpoint {
190fc19afa1SNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
191fc19afa1SNeil Armstrong	};
192fc19afa1SNeil Armstrong};
193fc19afa1SNeil Armstrong
1943b69bdbfSAndreas Färber&i2c_A {
1953b69bdbfSAndreas Färber	status = "okay";
1963b69bdbfSAndreas Färber	pinctrl-0 = <&i2c_a_pins>;
1973b69bdbfSAndreas Färber	pinctrl-names = "default";
1983b69bdbfSAndreas Färber};
1993b69bdbfSAndreas Färber
2003b69bdbfSAndreas Färber&ir {
2013b69bdbfSAndreas Färber	status = "okay";
2023b69bdbfSAndreas Färber	pinctrl-0 = <&remote_input_ao_pins>;
2033b69bdbfSAndreas Färber	pinctrl-names = "default";
2043b69bdbfSAndreas Färber};
2053b69bdbfSAndreas Färber
2062165b006SNeil Armstrong&gpio_ao {
207b03c7d64SNeil Armstrong	gpio-line-names = "UART TX", "UART RX", "VCCK En", "TF 3V3/1V8 En",
208b03c7d64SNeil Armstrong			  "USB HUB nRESET", "USB OTG Power En",
209b03c7d64SNeil Armstrong			  "J7 Header Pin2", "IR In", "J7 Header Pin4",
210b03c7d64SNeil Armstrong			  "J7 Header Pin6", "J7 Header Pin5", "J7 Header Pin7",
211e43f20e8SJerome Brunet			  "HDMI CEC", "SYS LED",
212e43f20e8SJerome Brunet			  /* GPIO_TEST_N */
213e43f20e8SJerome Brunet			  "";
214b03c7d64SNeil Armstrong};
215b03c7d64SNeil Armstrong
2162165b006SNeil Armstrong&gpio {
217b03c7d64SNeil Armstrong	gpio-line-names = /* Bank GPIOZ */
218b03c7d64SNeil Armstrong			  "Eth MDIO", "Eth MDC", "Eth RGMII RX Clk",
219b03c7d64SNeil Armstrong			  "Eth RX DV", "Eth RX D0", "Eth RX D1", "Eth RX D2",
220b03c7d64SNeil Armstrong			  "Eth RX D3", "Eth RGMII TX Clk", "Eth TX En",
221b03c7d64SNeil Armstrong			  "Eth TX D0", "Eth TX D1", "Eth TX D2", "Eth TX D3",
222b03c7d64SNeil Armstrong			  "Eth PHY nRESET", "Eth PHY Intc",
223b03c7d64SNeil Armstrong			  /* Bank GPIOH */
224b03c7d64SNeil Armstrong			  "HDMI HPD", "HDMI DDC SDA", "HDMI DDC SCL", "",
225b03c7d64SNeil Armstrong			  /* Bank BOOT */
226b03c7d64SNeil Armstrong			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3", "eMMC D4",
227b03c7d64SNeil Armstrong			  "eMMC D5", "eMMC D6", "eMMC D7", "eMMC Clk",
228b03c7d64SNeil Armstrong			  "eMMC Reset", "eMMC CMD",
229b03c7d64SNeil Armstrong			  "", "", "", "", "", "", "",
230b03c7d64SNeil Armstrong			  /* Bank CARD */
231b03c7d64SNeil Armstrong			  "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
232b03c7d64SNeil Armstrong			  "SDCard D3", "SDCard D2", "SDCard Det",
233b03c7d64SNeil Armstrong			  /* Bank GPIODV */
234b03c7d64SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "", "",
235b03c7d64SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "",
236b03c7d64SNeil Armstrong			  "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK",
237b03c7d64SNeil Armstrong			  "PWM D", "PWM B",
238b03c7d64SNeil Armstrong			  /* Bank GPIOY */
239b03c7d64SNeil Armstrong			  "Revision Bit0", "Revision Bit1", "",
240b03c7d64SNeil Armstrong			  "J2 Header Pin35", "", "", "", "J2 Header Pin36",
241b03c7d64SNeil Armstrong			  "J2 Header Pin31", "", "", "", "TF VDD En",
242b03c7d64SNeil Armstrong			  "J2 Header Pin32", "J2 Header Pin26", "", "",
243b03c7d64SNeil Armstrong			  /* Bank GPIOX */
244b03c7d64SNeil Armstrong			  "J2 Header Pin29", "J2 Header Pin24",
245b03c7d64SNeil Armstrong			  "J2 Header Pin23", "J2 Header Pin22",
246b03c7d64SNeil Armstrong			  "J2 Header Pin21", "J2 Header Pin18",
247b03c7d64SNeil Armstrong			  "J2 Header Pin33", "J2 Header Pin19",
248b03c7d64SNeil Armstrong			  "J2 Header Pin16", "J2 Header Pin15",
249b03c7d64SNeil Armstrong			  "J2 Header Pin12", "J2 Header Pin13",
250b03c7d64SNeil Armstrong			  "J2 Header Pin8", "J2 Header Pin10",
251b03c7d64SNeil Armstrong			  "", "", "", "", "",
252e43f20e8SJerome Brunet			  "J2 Header Pin11", "", "J2 Header Pin7", "",
253b03c7d64SNeil Armstrong			  /* Bank GPIOCLK */
254e43f20e8SJerome Brunet			  "", "", "", "";
255b03c7d64SNeil Armstrong};
256b03c7d64SNeil Armstrong
25762158c6aSHeiner Kallweit&saradc {
25862158c6aSHeiner Kallweit	status = "okay";
25962158c6aSHeiner Kallweit	vref-supply = <&vcc1v8>;
26062158c6aSHeiner Kallweit};
26162158c6aSHeiner Kallweit
2623b69bdbfSAndreas Färber&scpi_clocks {
2633b69bdbfSAndreas Färber	status = "disabled";
2643b69bdbfSAndreas Färber};
2653b69bdbfSAndreas Färber
266ef8d2ffeSKevin Hilman/* SD */
267ef8d2ffeSKevin Hilman&sd_emmc_b {
268ef8d2ffeSKevin Hilman	status = "okay";
269ef8d2ffeSKevin Hilman	pinctrl-0 = <&sdcard_pins>;
27067e7607fSJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_pins>;
27167e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
272ef8d2ffeSKevin Hilman
273ef8d2ffeSKevin Hilman	bus-width = <4>;
274ef8d2ffeSKevin Hilman	cap-sd-highspeed;
2757e2b33ffSJerome Brunet	sd-uhs-sdr12;
2767e2b33ffSJerome Brunet	sd-uhs-sdr25;
2777e2b33ffSJerome Brunet	sd-uhs-sdr50;
2787e2b33ffSJerome Brunet	sd-uhs-ddr50;
279ef8d2ffeSKevin Hilman	max-frequency = <100000000>;
280ef8d2ffeSKevin Hilman	disable-wp;
281ef8d2ffeSKevin Hilman
282f29200c8SLoys Ollivier	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
283ef8d2ffeSKevin Hilman
284ef8d2ffeSKevin Hilman	vmmc-supply = <&tflash_vdd>;
285ef8d2ffeSKevin Hilman	vqmmc-supply = <&tf_io>;
286ef8d2ffeSKevin Hilman};
287ef8d2ffeSKevin Hilman
288ef8d2ffeSKevin Hilman/* eMMC */
289ef8d2ffeSKevin Hilman&sd_emmc_c {
290ef8d2ffeSKevin Hilman	status = "okay";
291ab36be66SNeil Armstrong	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
29267e7607fSJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
29367e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
294ef8d2ffeSKevin Hilman
295ef8d2ffeSKevin Hilman	bus-width = <8>;
2967e2b33ffSJerome Brunet	max-frequency = <200000000>;
297ef8d2ffeSKevin Hilman	non-removable;
298ef8d2ffeSKevin Hilman	disable-wp;
299ef8d2ffeSKevin Hilman	cap-mmc-highspeed;
300ef8d2ffeSKevin Hilman	mmc-ddr-1_8v;
301ef8d2ffeSKevin Hilman	mmc-hs200-1_8v;
302ef8d2ffeSKevin Hilman
303ef8d2ffeSKevin Hilman	mmc-pwrseq = <&emmc_pwrseq>;
304ef8d2ffeSKevin Hilman	vmmc-supply = <&vcc3v3>;
305ef8d2ffeSKevin Hilman	vqmmc-supply = <&vcc1v8>;
306ef8d2ffeSKevin Hilman};
3073b69bdbfSAndreas Färber
3083b69bdbfSAndreas Färber&uart_AO {
3093b69bdbfSAndreas Färber	status = "okay";
3103b69bdbfSAndreas Färber	pinctrl-0 = <&uart_ao_a_pins>;
3113b69bdbfSAndreas Färber	pinctrl-names = "default";
3123b69bdbfSAndreas Färber};
3133b69bdbfSAndreas Färber
3143b69bdbfSAndreas Färber&usb0_phy {
3153b69bdbfSAndreas Färber	status = "okay";
3163b69bdbfSAndreas Färber	phy-supply = <&usb_otg_pwr>;
3173b69bdbfSAndreas Färber};
3183b69bdbfSAndreas Färber
3193b69bdbfSAndreas Färber&usb1_phy {
3203b69bdbfSAndreas Färber	status = "okay";
321e841ec95SNeil Armstrong	phy-supply = <&usb_otg_pwr>;
3223b69bdbfSAndreas Färber};
3233b69bdbfSAndreas Färber
3243b69bdbfSAndreas Färber&usb0 {
3253b69bdbfSAndreas Färber	status = "okay";
3263b69bdbfSAndreas Färber};
3273b69bdbfSAndreas Färber
3283b69bdbfSAndreas Färber&usb1 {
3293b69bdbfSAndreas Färber	status = "okay";
3303b69bdbfSAndreas Färber};
331