185596034SKevin Hilman/*
285596034SKevin Hilman * Copyright (c) 2016 Andreas Färber
385596034SKevin Hilman * Copyright (c) 2016 BayLibre, Inc.
485596034SKevin Hilman * Author: Kevin Hilman <khilman@kernel.org>
585596034SKevin Hilman *
685596034SKevin Hilman * This file is dual-licensed: you can use it either under the terms
785596034SKevin Hilman * of the GPL or the X11 license, at your option. Note that this dual
885596034SKevin Hilman * licensing only applies to this file, and not this project as a
985596034SKevin Hilman * whole.
1085596034SKevin Hilman *
1185596034SKevin Hilman *  a) This library is free software; you can redistribute it and/or
1285596034SKevin Hilman *     modify it under the terms of the GNU General Public License as
1385596034SKevin Hilman *     published by the Free Software Foundation; either version 2 of the
1485596034SKevin Hilman *     License, or (at your option) any later version.
1585596034SKevin Hilman *
1685596034SKevin Hilman *     This library is distributed in the hope that it will be useful,
1785596034SKevin Hilman *     but WITHOUT ANY WARRANTY; without even the implied warranty of
1885596034SKevin Hilman *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1985596034SKevin Hilman *     GNU General Public License for more details.
2085596034SKevin Hilman *
2185596034SKevin Hilman * Or, alternatively,
2285596034SKevin Hilman *
2385596034SKevin Hilman *  b) Permission is hereby granted, free of charge, to any person
2485596034SKevin Hilman *     obtaining a copy of this software and associated documentation
2585596034SKevin Hilman *     files (the "Software"), to deal in the Software without
2685596034SKevin Hilman *     restriction, including without limitation the rights to use,
2785596034SKevin Hilman *     copy, modify, merge, publish, distribute, sublicense, and/or
2885596034SKevin Hilman *     sell copies of the Software, and to permit persons to whom the
2985596034SKevin Hilman *     Software is furnished to do so, subject to the following
3085596034SKevin Hilman *     conditions:
3185596034SKevin Hilman *
3285596034SKevin Hilman *     The above copyright notice and this permission notice shall be
3385596034SKevin Hilman *     included in all copies or substantial portions of the Software.
3485596034SKevin Hilman *
3585596034SKevin Hilman *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
3685596034SKevin Hilman *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
3785596034SKevin Hilman *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
3885596034SKevin Hilman *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
3985596034SKevin Hilman *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
4085596034SKevin Hilman *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
4185596034SKevin Hilman *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
4285596034SKevin Hilman *     OTHER DEALINGS IN THE SOFTWARE.
4385596034SKevin Hilman */
4485596034SKevin Hilman
4585596034SKevin Hilman/dts-v1/;
4685596034SKevin Hilman
4785596034SKevin Hilman#include "meson-gxbb.dtsi"
48f40d437fSCarlo Caione#include <dt-bindings/gpio/gpio.h>
4985596034SKevin Hilman
5085596034SKevin Hilman/ {
5185596034SKevin Hilman	compatible = "hardkernel,odroid-c2", "amlogic,meson-gxbb";
5285596034SKevin Hilman	model = "Hardkernel ODROID-C2";
5385596034SKevin Hilman
5485596034SKevin Hilman	aliases {
5585596034SKevin Hilman		serial0 = &uart_AO;
5685596034SKevin Hilman	};
5785596034SKevin Hilman
5885596034SKevin Hilman	chosen {
5985596034SKevin Hilman		stdout-path = "serial0:115200n8";
6085596034SKevin Hilman	};
6185596034SKevin Hilman
6285596034SKevin Hilman	memory@0 {
6385596034SKevin Hilman		device_type = "memory";
6485596034SKevin Hilman		reg = <0x0 0x0 0x0 0x80000000>;
6585596034SKevin Hilman	};
66f40d437fSCarlo Caione
675a0803bdSBrian Kim	usb_otg_pwr: regulator-usb-pwrs {
685a0803bdSBrian Kim		compatible = "regulator-fixed";
695a0803bdSBrian Kim
705a0803bdSBrian Kim		regulator-name = "USB_OTG_PWR";
715a0803bdSBrian Kim
725a0803bdSBrian Kim		regulator-min-microvolt = <5000000>;
735a0803bdSBrian Kim		regulator-max-microvolt = <5000000>;
745a0803bdSBrian Kim
755a0803bdSBrian Kim		gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>;
765a0803bdSBrian Kim		enable-active-high;
775a0803bdSBrian Kim	};
785a0803bdSBrian Kim
79f40d437fSCarlo Caione	leds {
80f40d437fSCarlo Caione		compatible = "gpio-leds";
81f40d437fSCarlo Caione		blue {
82f40d437fSCarlo Caione			label = "c2:blue:alive";
83f40d437fSCarlo Caione			gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_LOW>;
84f40d437fSCarlo Caione			linux,default-trigger = "heartbeat";
85f40d437fSCarlo Caione			default-state = "off";
86f40d437fSCarlo Caione		};
87f40d437fSCarlo Caione	};
88ef8d2ffeSKevin Hilman
89ef8d2ffeSKevin Hilman	tflash_vdd: regulator-tflash_vdd {
90ef8d2ffeSKevin Hilman		/*
91ef8d2ffeSKevin Hilman		 * signal name from schematics: TFLASH_VDD_EN
92ef8d2ffeSKevin Hilman		 */
93ef8d2ffeSKevin Hilman		compatible = "regulator-fixed";
94ef8d2ffeSKevin Hilman
95ef8d2ffeSKevin Hilman		regulator-name = "TFLASH_VDD";
96ef8d2ffeSKevin Hilman		regulator-min-microvolt = <3300000>;
97ef8d2ffeSKevin Hilman		regulator-max-microvolt = <3300000>;
98ef8d2ffeSKevin Hilman
99ef8d2ffeSKevin Hilman		gpio = <&gpio_ao GPIOAO_12 GPIO_ACTIVE_HIGH>;
100ef8d2ffeSKevin Hilman		enable-active-high;
101ef8d2ffeSKevin Hilman	};
102ef8d2ffeSKevin Hilman
103ef8d2ffeSKevin Hilman	tf_io: gpio-regulator-tf_io {
104ef8d2ffeSKevin Hilman		compatible = "regulator-gpio";
105ef8d2ffeSKevin Hilman
106ef8d2ffeSKevin Hilman		regulator-name = "TF_IO";
107ef8d2ffeSKevin Hilman		regulator-min-microvolt = <1800000>;
108ef8d2ffeSKevin Hilman		regulator-max-microvolt = <3300000>;
109ef8d2ffeSKevin Hilman
110ef8d2ffeSKevin Hilman		/*
111ef8d2ffeSKevin Hilman		 * signal name from schematics: TF_3V3N_1V8_EN
112ef8d2ffeSKevin Hilman		 */
113ef8d2ffeSKevin Hilman		gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
114ef8d2ffeSKevin Hilman		gpios-states = <0>;
115ef8d2ffeSKevin Hilman
116ef8d2ffeSKevin Hilman		states = <3300000 0
117ef8d2ffeSKevin Hilman			  1800000 1>;
118ef8d2ffeSKevin Hilman	};
119ef8d2ffeSKevin Hilman
120ef8d2ffeSKevin Hilman	vcc1v8: regulator-vcc1v8 {
121ef8d2ffeSKevin Hilman		compatible = "regulator-fixed";
122ef8d2ffeSKevin Hilman		regulator-name = "VCC1V8";
123ef8d2ffeSKevin Hilman		regulator-min-microvolt = <1800000>;
124ef8d2ffeSKevin Hilman		regulator-max-microvolt = <1800000>;
125ef8d2ffeSKevin Hilman	};
126ef8d2ffeSKevin Hilman
127ef8d2ffeSKevin Hilman	vcc3v3: regulator-vcc3v3 {
128ef8d2ffeSKevin Hilman		compatible = "regulator-fixed";
129ef8d2ffeSKevin Hilman		regulator-name = "VCC3V3";
130ef8d2ffeSKevin Hilman		regulator-min-microvolt = <3300000>;
131ef8d2ffeSKevin Hilman		regulator-max-microvolt = <3300000>;
132ef8d2ffeSKevin Hilman	};
133ef8d2ffeSKevin Hilman
134ef8d2ffeSKevin Hilman	emmc_pwrseq: emmc-pwrseq {
135ef8d2ffeSKevin Hilman		compatible = "mmc-pwrseq-emmc";
136ef8d2ffeSKevin Hilman		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
137ef8d2ffeSKevin Hilman	};
13885596034SKevin Hilman};
13985596034SKevin Hilman
140f7bcd4b6SNeil Armstrong&scpi_clocks {
141f7bcd4b6SNeil Armstrong	status = "disabled";
142f7bcd4b6SNeil Armstrong};
143f7bcd4b6SNeil Armstrong
14485596034SKevin Hilman&uart_AO {
14585596034SKevin Hilman	status = "okay";
146f40d437fSCarlo Caione	pinctrl-0 = <&uart_ao_a_pins>;
147f40d437fSCarlo Caione	pinctrl-names = "default";
14885596034SKevin Hilman};
1498e6320ddSKevin Hilman
1508c5509f0SKevin Hilman&ethmac {
1518c5509f0SKevin Hilman	status = "okay";
1523be2d9cfSNeil Armstrong	pinctrl-0 = <&eth_rgmii_pins>;
1538c5509f0SKevin Hilman	pinctrl-names = "default";
154feb3cbeaSJerome Brunet	phy-handle = <&eth_phy0>;
155b6ff2721SMartin Blumenstingl	phy-mode = "rgmii";
156b6ff2721SMartin Blumenstingl
157b6ff2721SMartin Blumenstingl	snps,reset-gpio = <&gpio GPIOZ_14 0>;
158b6ff2721SMartin Blumenstingl	snps,reset-delays-us = <0 10000 1000000>;
159b6ff2721SMartin Blumenstingl	snps,reset-active-low;
160feb3cbeaSJerome Brunet
161feb3cbeaSJerome Brunet	mdio {
162feb3cbeaSJerome Brunet		compatible = "snps,dwmac-mdio";
163feb3cbeaSJerome Brunet		#address-cells = <1>;
164feb3cbeaSJerome Brunet		#size-cells = <0>;
165feb3cbeaSJerome Brunet
166feb3cbeaSJerome Brunet		eth_phy0: ethernet-phy@0 {
167feb3cbeaSJerome Brunet			reg = <0>;
168feb3cbeaSJerome Brunet			eee-broken-1000t;
169feb3cbeaSJerome Brunet		};
170feb3cbeaSJerome Brunet	};
1718c5509f0SKevin Hilman};
1728c5509f0SKevin Hilman
173ae89ed79SMartin Blumenstingl&ir {
174ae89ed79SMartin Blumenstingl	status = "okay";
175ae89ed79SMartin Blumenstingl	pinctrl-0 = <&remote_input_ao_pins>;
176ae89ed79SMartin Blumenstingl	pinctrl-names = "default";
177ae89ed79SMartin Blumenstingl};
178cb700f49SJerome Brunet
179cb700f49SJerome Brunet&i2c_A {
180cb700f49SJerome Brunet	status = "okay";
181cb700f49SJerome Brunet	pinctrl-0 = <&i2c_a_pins>;
182cb700f49SJerome Brunet	pinctrl-names = "default";
183cb700f49SJerome Brunet};
1845a0803bdSBrian Kim
1855a0803bdSBrian Kim&usb0_phy {
1865a0803bdSBrian Kim	status = "okay";
1875a0803bdSBrian Kim	phy-supply = <&usb_otg_pwr>;
1885a0803bdSBrian Kim};
1895a0803bdSBrian Kim
1905a0803bdSBrian Kim&usb1_phy {
1915a0803bdSBrian Kim	status = "okay";
1925a0803bdSBrian Kim};
1935a0803bdSBrian Kim
1945a0803bdSBrian Kim&usb0 {
1955a0803bdSBrian Kim	status = "okay";
1965a0803bdSBrian Kim};
1975a0803bdSBrian Kim
1985a0803bdSBrian Kim&usb1 {
1995a0803bdSBrian Kim	status = "okay";
2005a0803bdSBrian Kim};
201ef8d2ffeSKevin Hilman
202ef8d2ffeSKevin Hilman/* SD */
203ef8d2ffeSKevin Hilman&sd_emmc_b {
204ef8d2ffeSKevin Hilman	status = "okay";
205ef8d2ffeSKevin Hilman	pinctrl-0 = <&sdcard_pins>;
206ef8d2ffeSKevin Hilman	pinctrl-names = "default";
207ef8d2ffeSKevin Hilman
208ef8d2ffeSKevin Hilman	bus-width = <4>;
209ef8d2ffeSKevin Hilman	cap-sd-highspeed;
210ef8d2ffeSKevin Hilman	max-frequency = <100000000>;
211ef8d2ffeSKevin Hilman	disable-wp;
212ef8d2ffeSKevin Hilman
213ef8d2ffeSKevin Hilman	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
214ef8d2ffeSKevin Hilman	cd-inverted;
215ef8d2ffeSKevin Hilman
216ef8d2ffeSKevin Hilman	vmmc-supply = <&tflash_vdd>;
217ef8d2ffeSKevin Hilman	vqmmc-supply = <&tf_io>;
218ef8d2ffeSKevin Hilman};
219ef8d2ffeSKevin Hilman
220ef8d2ffeSKevin Hilman/* eMMC */
221ef8d2ffeSKevin Hilman&sd_emmc_c {
222ef8d2ffeSKevin Hilman	status = "okay";
223ef8d2ffeSKevin Hilman	pinctrl-0 = <&emmc_pins>;
224ef8d2ffeSKevin Hilman	pinctrl-names = "default";
225ef8d2ffeSKevin Hilman
226ef8d2ffeSKevin Hilman	bus-width = <8>;
227ef8d2ffeSKevin Hilman	cap-sd-highspeed;
228ef8d2ffeSKevin Hilman	max-frequency = <200000000>;
229ef8d2ffeSKevin Hilman	non-removable;
230ef8d2ffeSKevin Hilman	disable-wp;
231ef8d2ffeSKevin Hilman	cap-mmc-highspeed;
232ef8d2ffeSKevin Hilman	mmc-ddr-1_8v;
233ef8d2ffeSKevin Hilman	mmc-hs200-1_8v;
234ef8d2ffeSKevin Hilman
235ef8d2ffeSKevin Hilman	mmc-pwrseq = <&emmc_pwrseq>;
236ef8d2ffeSKevin Hilman	vmmc-supply = <&vcc3v3>;
237ef8d2ffeSKevin Hilman	vqmmc-supply = <&vcc1v8>;
238ef8d2ffeSKevin Hilman};
239