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 99c34cd35eSNeil Armstrong gpio = <&gpio GPIOY_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 1408c5509f0SKevin Hilmanðmac { 1418c5509f0SKevin Hilman status = "okay"; 1423be2d9cfSNeil Armstrong pinctrl-0 = <ð_rgmii_pins>; 1438c5509f0SKevin Hilman pinctrl-names = "default"; 144feb3cbeaSJerome Brunet phy-handle = <ð_phy0>; 145b6ff2721SMartin Blumenstingl phy-mode = "rgmii"; 146b6ff2721SMartin Blumenstingl 147b6ff2721SMartin Blumenstingl snps,reset-gpio = <&gpio GPIOZ_14 0>; 148b6ff2721SMartin Blumenstingl snps,reset-delays-us = <0 10000 1000000>; 149b6ff2721SMartin Blumenstingl snps,reset-active-low; 150feb3cbeaSJerome Brunet 151093d23dbSMartin Blumenstingl amlogic,tx-delay-ns = <2>; 152093d23dbSMartin Blumenstingl 153feb3cbeaSJerome Brunet mdio { 154feb3cbeaSJerome Brunet compatible = "snps,dwmac-mdio"; 155feb3cbeaSJerome Brunet #address-cells = <1>; 156feb3cbeaSJerome Brunet #size-cells = <0>; 157feb3cbeaSJerome Brunet 158feb3cbeaSJerome Brunet eth_phy0: ethernet-phy@0 { 159feb3cbeaSJerome Brunet reg = <0>; 160b94d22d9SJerome Brunet interrupt-parent = <&gpio_intc>; 161b94d22d9SJerome Brunet interrupts = <29 IRQ_TYPE_LEVEL_LOW>; 162feb3cbeaSJerome Brunet eee-broken-1000t; 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 1823b69bdbfSAndreas Färber&i2c_A { 1833b69bdbfSAndreas Färber status = "okay"; 1843b69bdbfSAndreas Färber pinctrl-0 = <&i2c_a_pins>; 1853b69bdbfSAndreas Färber pinctrl-names = "default"; 1863b69bdbfSAndreas Färber}; 1873b69bdbfSAndreas Färber 1883b69bdbfSAndreas Färber&ir { 1893b69bdbfSAndreas Färber status = "okay"; 1903b69bdbfSAndreas Färber pinctrl-0 = <&remote_input_ao_pins>; 1913b69bdbfSAndreas Färber pinctrl-names = "default"; 1923b69bdbfSAndreas Färber}; 1933b69bdbfSAndreas Färber 194b03c7d64SNeil Armstrong&pinctrl_aobus { 195b03c7d64SNeil Armstrong gpio-line-names = "UART TX", "UART RX", "VCCK En", "TF 3V3/1V8 En", 196b03c7d64SNeil Armstrong "USB HUB nRESET", "USB OTG Power En", 197b03c7d64SNeil Armstrong "J7 Header Pin2", "IR In", "J7 Header Pin4", 198b03c7d64SNeil Armstrong "J7 Header Pin6", "J7 Header Pin5", "J7 Header Pin7", 199e43f20e8SJerome Brunet "HDMI CEC", "SYS LED", 200e43f20e8SJerome Brunet /* GPIO_TEST_N */ 201e43f20e8SJerome Brunet ""; 202b03c7d64SNeil Armstrong}; 203b03c7d64SNeil Armstrong 204b03c7d64SNeil Armstrong&pinctrl_periphs { 205b03c7d64SNeil Armstrong gpio-line-names = /* Bank GPIOZ */ 206b03c7d64SNeil Armstrong "Eth MDIO", "Eth MDC", "Eth RGMII RX Clk", 207b03c7d64SNeil Armstrong "Eth RX DV", "Eth RX D0", "Eth RX D1", "Eth RX D2", 208b03c7d64SNeil Armstrong "Eth RX D3", "Eth RGMII TX Clk", "Eth TX En", 209b03c7d64SNeil Armstrong "Eth TX D0", "Eth TX D1", "Eth TX D2", "Eth TX D3", 210b03c7d64SNeil Armstrong "Eth PHY nRESET", "Eth PHY Intc", 211b03c7d64SNeil Armstrong /* Bank GPIOH */ 212b03c7d64SNeil Armstrong "HDMI HPD", "HDMI DDC SDA", "HDMI DDC SCL", "", 213b03c7d64SNeil Armstrong /* Bank BOOT */ 214b03c7d64SNeil Armstrong "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3", "eMMC D4", 215b03c7d64SNeil Armstrong "eMMC D5", "eMMC D6", "eMMC D7", "eMMC Clk", 216b03c7d64SNeil Armstrong "eMMC Reset", "eMMC CMD", 217b03c7d64SNeil Armstrong "", "", "", "", "", "", "", 218b03c7d64SNeil Armstrong /* Bank CARD */ 219b03c7d64SNeil Armstrong "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD", 220b03c7d64SNeil Armstrong "SDCard D3", "SDCard D2", "SDCard Det", 221b03c7d64SNeil Armstrong /* Bank GPIODV */ 222b03c7d64SNeil Armstrong "", "", "", "", "", "", "", "", "", "", "", "", "", 223b03c7d64SNeil Armstrong "", "", "", "", "", "", "", "", "", "", "", 224b03c7d64SNeil Armstrong "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK", 225b03c7d64SNeil Armstrong "PWM D", "PWM B", 226b03c7d64SNeil Armstrong /* Bank GPIOY */ 227b03c7d64SNeil Armstrong "Revision Bit0", "Revision Bit1", "", 228b03c7d64SNeil Armstrong "J2 Header Pin35", "", "", "", "J2 Header Pin36", 229b03c7d64SNeil Armstrong "J2 Header Pin31", "", "", "", "TF VDD En", 230b03c7d64SNeil Armstrong "J2 Header Pin32", "J2 Header Pin26", "", "", 231b03c7d64SNeil Armstrong /* Bank GPIOX */ 232b03c7d64SNeil Armstrong "J2 Header Pin29", "J2 Header Pin24", 233b03c7d64SNeil Armstrong "J2 Header Pin23", "J2 Header Pin22", 234b03c7d64SNeil Armstrong "J2 Header Pin21", "J2 Header Pin18", 235b03c7d64SNeil Armstrong "J2 Header Pin33", "J2 Header Pin19", 236b03c7d64SNeil Armstrong "J2 Header Pin16", "J2 Header Pin15", 237b03c7d64SNeil Armstrong "J2 Header Pin12", "J2 Header Pin13", 238b03c7d64SNeil Armstrong "J2 Header Pin8", "J2 Header Pin10", 239b03c7d64SNeil Armstrong "", "", "", "", "", 240e43f20e8SJerome Brunet "J2 Header Pin11", "", "J2 Header Pin7", "", 241b03c7d64SNeil Armstrong /* Bank GPIOCLK */ 242e43f20e8SJerome Brunet "", "", "", ""; 243b03c7d64SNeil Armstrong}; 244b03c7d64SNeil Armstrong 24562158c6aSHeiner Kallweit&saradc { 24662158c6aSHeiner Kallweit status = "okay"; 24762158c6aSHeiner Kallweit vref-supply = <&vcc1v8>; 24862158c6aSHeiner Kallweit}; 24962158c6aSHeiner Kallweit 2503b69bdbfSAndreas Färber&scpi_clocks { 2513b69bdbfSAndreas Färber status = "disabled"; 2523b69bdbfSAndreas Färber}; 2533b69bdbfSAndreas Färber 254ef8d2ffeSKevin Hilman/* SD */ 255ef8d2ffeSKevin Hilman&sd_emmc_b { 256ef8d2ffeSKevin Hilman status = "okay"; 257ef8d2ffeSKevin Hilman pinctrl-0 = <&sdcard_pins>; 25867e7607fSJerome Brunet pinctrl-1 = <&sdcard_clk_gate_pins>; 25967e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 260ef8d2ffeSKevin Hilman 261ef8d2ffeSKevin Hilman bus-width = <4>; 262ef8d2ffeSKevin Hilman cap-sd-highspeed; 263ef8d2ffeSKevin Hilman max-frequency = <100000000>; 264ef8d2ffeSKevin Hilman disable-wp; 265ef8d2ffeSKevin Hilman 266ef8d2ffeSKevin Hilman cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; 267ef8d2ffeSKevin Hilman cd-inverted; 268ef8d2ffeSKevin Hilman 269ef8d2ffeSKevin Hilman vmmc-supply = <&tflash_vdd>; 270ef8d2ffeSKevin Hilman vqmmc-supply = <&tf_io>; 271ef8d2ffeSKevin Hilman}; 272ef8d2ffeSKevin Hilman 273ef8d2ffeSKevin Hilman/* eMMC */ 274ef8d2ffeSKevin Hilman&sd_emmc_c { 275ef8d2ffeSKevin Hilman status = "okay"; 276ab36be66SNeil Armstrong pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; 27767e7607fSJerome Brunet pinctrl-1 = <&emmc_clk_gate_pins>; 27867e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 279ef8d2ffeSKevin Hilman 280ef8d2ffeSKevin Hilman bus-width = <8>; 281ef8d2ffeSKevin Hilman max-frequency = <200000000>; 282ef8d2ffeSKevin Hilman non-removable; 283ef8d2ffeSKevin Hilman disable-wp; 284ef8d2ffeSKevin Hilman cap-mmc-highspeed; 285ef8d2ffeSKevin Hilman mmc-ddr-1_8v; 286ef8d2ffeSKevin Hilman mmc-hs200-1_8v; 287ef8d2ffeSKevin Hilman 288ef8d2ffeSKevin Hilman mmc-pwrseq = <&emmc_pwrseq>; 289ef8d2ffeSKevin Hilman vmmc-supply = <&vcc3v3>; 290ef8d2ffeSKevin Hilman vqmmc-supply = <&vcc1v8>; 291ef8d2ffeSKevin Hilman}; 2923b69bdbfSAndreas Färber 2933b69bdbfSAndreas Färber&uart_AO { 2943b69bdbfSAndreas Färber status = "okay"; 2953b69bdbfSAndreas Färber pinctrl-0 = <&uart_ao_a_pins>; 2963b69bdbfSAndreas Färber pinctrl-names = "default"; 2973b69bdbfSAndreas Färber}; 2983b69bdbfSAndreas Färber 2993b69bdbfSAndreas Färber&usb0_phy { 3003b69bdbfSAndreas Färber status = "okay"; 3013b69bdbfSAndreas Färber phy-supply = <&usb_otg_pwr>; 3023b69bdbfSAndreas Färber}; 3033b69bdbfSAndreas Färber 3043b69bdbfSAndreas Färber&usb1_phy { 3053b69bdbfSAndreas Färber status = "okay"; 306e841ec95SNeil Armstrong phy-supply = <&usb_otg_pwr>; 3073b69bdbfSAndreas Färber}; 3083b69bdbfSAndreas Färber 3093b69bdbfSAndreas Färber&usb0 { 3103b69bdbfSAndreas Färber status = "okay"; 3113b69bdbfSAndreas Färber}; 3123b69bdbfSAndreas Färber 3133b69bdbfSAndreas Färber&usb1 { 3143b69bdbfSAndreas Färber status = "okay"; 3153b69bdbfSAndreas Färber}; 316