1bfcef28aSBeniamino Galvani/* 2bfcef28aSBeniamino Galvani * Copyright (c) 2016 Andreas Färber 3bfcef28aSBeniamino Galvani * Copyright (c) 2016 BayLibre, Inc. 4bfcef28aSBeniamino Galvani * Author: Kevin Hilman <khilman@kernel.org> 5bfcef28aSBeniamino Galvani * 6bfcef28aSBeniamino Galvani * This file is dual-licensed: you can use it either under the terms 7bfcef28aSBeniamino Galvani * of the GPL or the X11 license, at your option. Note that this dual 8bfcef28aSBeniamino Galvani * licensing only applies to this file, and not this project as a 9bfcef28aSBeniamino Galvani * whole. 10bfcef28aSBeniamino Galvani * 11bfcef28aSBeniamino Galvani * a) This library is free software; you can redistribute it and/or 12bfcef28aSBeniamino Galvani * modify it under the terms of the GNU General Public License as 13bfcef28aSBeniamino Galvani * published by the Free Software Foundation; either version 2 of the 14bfcef28aSBeniamino Galvani * License, or (at your option) any later version. 15bfcef28aSBeniamino Galvani * 16bfcef28aSBeniamino Galvani * This library is distributed in the hope that it will be useful, 17bfcef28aSBeniamino Galvani * but WITHOUT ANY WARRANTY; without even the implied warranty of 18bfcef28aSBeniamino Galvani * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19bfcef28aSBeniamino Galvani * GNU General Public License for more details. 20bfcef28aSBeniamino Galvani * 21bfcef28aSBeniamino Galvani * Or, alternatively, 22bfcef28aSBeniamino Galvani * 23bfcef28aSBeniamino Galvani * b) Permission is hereby granted, free of charge, to any person 24bfcef28aSBeniamino Galvani * obtaining a copy of this software and associated documentation 25bfcef28aSBeniamino Galvani * files (the "Software"), to deal in the Software without 26bfcef28aSBeniamino Galvani * restriction, including without limitation the rights to use, 27bfcef28aSBeniamino Galvani * copy, modify, merge, publish, distribute, sublicense, and/or 28bfcef28aSBeniamino Galvani * sell copies of the Software, and to permit persons to whom the 29bfcef28aSBeniamino Galvani * Software is furnished to do so, subject to the following 30bfcef28aSBeniamino Galvani * conditions: 31bfcef28aSBeniamino Galvani * 32bfcef28aSBeniamino Galvani * The above copyright notice and this permission notice shall be 33bfcef28aSBeniamino Galvani * included in all copies or substantial portions of the Software. 34bfcef28aSBeniamino Galvani * 35bfcef28aSBeniamino Galvani * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 36bfcef28aSBeniamino Galvani * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 37bfcef28aSBeniamino Galvani * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 38bfcef28aSBeniamino Galvani * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 39bfcef28aSBeniamino Galvani * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 40bfcef28aSBeniamino Galvani * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 41bfcef28aSBeniamino Galvani * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 42bfcef28aSBeniamino Galvani * OTHER DEALINGS IN THE SOFTWARE. 43bfcef28aSBeniamino Galvani */ 44bfcef28aSBeniamino Galvani 45bfcef28aSBeniamino Galvani/dts-v1/; 46bfcef28aSBeniamino Galvani 47bfcef28aSBeniamino Galvani#include "meson-gxbb.dtsi" 48dd83840eSBeniamino Galvani#include <dt-bindings/gpio/gpio.h> 49bfcef28aSBeniamino Galvani 50bfcef28aSBeniamino Galvani/ { 51bfcef28aSBeniamino Galvani compatible = "hardkernel,odroid-c2", "amlogic,meson-gxbb"; 52bfcef28aSBeniamino Galvani model = "Hardkernel ODROID-C2"; 53bfcef28aSBeniamino Galvani 54bfcef28aSBeniamino Galvani aliases { 55bfcef28aSBeniamino Galvani serial0 = &uart_AO; 56bfcef28aSBeniamino Galvani }; 57bfcef28aSBeniamino Galvani 58bfcef28aSBeniamino Galvani chosen { 59bfcef28aSBeniamino Galvani stdout-path = "serial0:115200n8"; 60bfcef28aSBeniamino Galvani }; 61bfcef28aSBeniamino Galvani 62bfcef28aSBeniamino Galvani memory@0 { 63bfcef28aSBeniamino Galvani device_type = "memory"; 64bfcef28aSBeniamino Galvani reg = <0x0 0x0 0x0 0x80000000>; 65bfcef28aSBeniamino Galvani }; 66dd83840eSBeniamino Galvani 67a3b02a1dSHeiner Kallweit usb_otg_pwr: regulator-usb-pwrs { 68a3b02a1dSHeiner Kallweit compatible = "regulator-fixed"; 69a3b02a1dSHeiner Kallweit 70a3b02a1dSHeiner Kallweit regulator-name = "USB_OTG_PWR"; 71a3b02a1dSHeiner Kallweit 72a3b02a1dSHeiner Kallweit regulator-min-microvolt = <5000000>; 73a3b02a1dSHeiner Kallweit regulator-max-microvolt = <5000000>; 74a3b02a1dSHeiner Kallweit 75a3b02a1dSHeiner Kallweit gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>; 76a3b02a1dSHeiner Kallweit enable-active-high; 77a3b02a1dSHeiner Kallweit }; 78a3b02a1dSHeiner Kallweit 79dd83840eSBeniamino Galvani leds { 80dd83840eSBeniamino Galvani compatible = "gpio-leds"; 81dd83840eSBeniamino Galvani blue { 82dd83840eSBeniamino Galvani label = "c2:blue:alive"; 83dd83840eSBeniamino Galvani gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_LOW>; 84dd83840eSBeniamino Galvani linux,default-trigger = "heartbeat"; 85dd83840eSBeniamino Galvani default-state = "off"; 86dd83840eSBeniamino Galvani }; 87dd83840eSBeniamino Galvani }; 88a3b02a1dSHeiner Kallweit 89a3b02a1dSHeiner Kallweit tflash_vdd: regulator-tflash_vdd { 90a3b02a1dSHeiner Kallweit /* 91a3b02a1dSHeiner Kallweit * signal name from schematics: TFLASH_VDD_EN 92a3b02a1dSHeiner Kallweit */ 93a3b02a1dSHeiner Kallweit compatible = "regulator-fixed"; 94a3b02a1dSHeiner Kallweit 95a3b02a1dSHeiner Kallweit regulator-name = "TFLASH_VDD"; 96a3b02a1dSHeiner Kallweit regulator-min-microvolt = <3300000>; 97a3b02a1dSHeiner Kallweit regulator-max-microvolt = <3300000>; 98a3b02a1dSHeiner Kallweit 994a63a75cSBeniamino Galvani gpio = <&gpio GPIOY_12 GPIO_ACTIVE_HIGH>; 100a3b02a1dSHeiner Kallweit enable-active-high; 101a3b02a1dSHeiner Kallweit }; 102a3b02a1dSHeiner Kallweit 103a3b02a1dSHeiner Kallweit tf_io: gpio-regulator-tf_io { 104a3b02a1dSHeiner Kallweit compatible = "regulator-gpio"; 105a3b02a1dSHeiner Kallweit 106a3b02a1dSHeiner Kallweit regulator-name = "TF_IO"; 107a3b02a1dSHeiner Kallweit regulator-min-microvolt = <1800000>; 108a3b02a1dSHeiner Kallweit regulator-max-microvolt = <3300000>; 109a3b02a1dSHeiner Kallweit 110a3b02a1dSHeiner Kallweit /* 111a3b02a1dSHeiner Kallweit * signal name from schematics: TF_3V3N_1V8_EN 112a3b02a1dSHeiner Kallweit */ 113a3b02a1dSHeiner Kallweit gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>; 114a3b02a1dSHeiner Kallweit gpios-states = <0>; 115a3b02a1dSHeiner Kallweit 116a3b02a1dSHeiner Kallweit states = <3300000 0 117a3b02a1dSHeiner Kallweit 1800000 1>; 118a3b02a1dSHeiner Kallweit }; 119a3b02a1dSHeiner Kallweit 120a3b02a1dSHeiner Kallweit vcc1v8: regulator-vcc1v8 { 121a3b02a1dSHeiner Kallweit compatible = "regulator-fixed"; 122a3b02a1dSHeiner Kallweit regulator-name = "VCC1V8"; 123a3b02a1dSHeiner Kallweit regulator-min-microvolt = <1800000>; 124a3b02a1dSHeiner Kallweit regulator-max-microvolt = <1800000>; 125a3b02a1dSHeiner Kallweit }; 126a3b02a1dSHeiner Kallweit 127a3b02a1dSHeiner Kallweit vcc3v3: regulator-vcc3v3 { 128a3b02a1dSHeiner Kallweit compatible = "regulator-fixed"; 129a3b02a1dSHeiner Kallweit regulator-name = "VCC3V3"; 130a3b02a1dSHeiner Kallweit regulator-min-microvolt = <3300000>; 131a3b02a1dSHeiner Kallweit regulator-max-microvolt = <3300000>; 132a3b02a1dSHeiner Kallweit }; 133a3b02a1dSHeiner Kallweit 134a3b02a1dSHeiner Kallweit emmc_pwrseq: emmc-pwrseq { 135a3b02a1dSHeiner Kallweit compatible = "mmc-pwrseq-emmc"; 136a3b02a1dSHeiner Kallweit reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; 137a3b02a1dSHeiner Kallweit }; 138a3b02a1dSHeiner Kallweit}; 139a3b02a1dSHeiner Kallweit 140dd83840eSBeniamino Galvaniðmac { 141dd83840eSBeniamino Galvani status = "okay"; 142a3b02a1dSHeiner Kallweit pinctrl-0 = <ð_rgmii_pins>; 143dd83840eSBeniamino Galvani pinctrl-names = "default"; 144a3b02a1dSHeiner Kallweit phy-handle = <ð_phy0>; 1454a63a75cSBeniamino Galvani phy-mode = "rgmii"; 1464a63a75cSBeniamino Galvani 1474a63a75cSBeniamino Galvani snps,reset-gpio = <&gpio GPIOZ_14 0>; 1484a63a75cSBeniamino Galvani snps,reset-delays-us = <0 10000 1000000>; 1494a63a75cSBeniamino Galvani snps,reset-active-low; 1504a63a75cSBeniamino Galvani 1514a63a75cSBeniamino Galvani amlogic,tx-delay-ns = <2>; 152a3b02a1dSHeiner Kallweit 153a3b02a1dSHeiner Kallweit mdio { 154a3b02a1dSHeiner Kallweit compatible = "snps,dwmac-mdio"; 155a3b02a1dSHeiner Kallweit #address-cells = <1>; 156a3b02a1dSHeiner Kallweit #size-cells = <0>; 157a3b02a1dSHeiner Kallweit 158a3b02a1dSHeiner Kallweit eth_phy0: ethernet-phy@0 { 159a3b02a1dSHeiner Kallweit reg = <0>; 160a3b02a1dSHeiner Kallweit eee-broken-1000t; 161a3b02a1dSHeiner Kallweit }; 162a3b02a1dSHeiner Kallweit }; 163a3b02a1dSHeiner Kallweit}; 164a3b02a1dSHeiner Kallweit 165*48622156SNeil Armstrong&gpio_ao { 166*48622156SNeil Armstrong /* 167*48622156SNeil Armstrong * WARNING: The USB Hub on the Odroid-C2 needs a reset signal 168*48622156SNeil Armstrong * to be turned high in order to be detected by the USB Controller 169*48622156SNeil Armstrong * This signal should be handled by a USB specific power sequence 170*48622156SNeil Armstrong * in order to reset the Hub when USB bus is powered down. 171*48622156SNeil Armstrong */ 172*48622156SNeil Armstrong usb-hub { 173*48622156SNeil Armstrong gpio-hog; 174*48622156SNeil Armstrong gpios = <GPIOAO_4 GPIO_ACTIVE_HIGH>; 175*48622156SNeil Armstrong output-high; 176*48622156SNeil Armstrong line-name = "usb-hub-reset"; 177*48622156SNeil Armstrong }; 178*48622156SNeil Armstrong}; 179*48622156SNeil Armstrong 180*48622156SNeil Armstrong&i2c_A { 181*48622156SNeil Armstrong status = "okay"; 182*48622156SNeil Armstrong pinctrl-0 = <&i2c_a_pins>; 183*48622156SNeil Armstrong pinctrl-names = "default"; 184*48622156SNeil Armstrong}; 185*48622156SNeil Armstrong 186*48622156SNeil Armstrong&ir { 187*48622156SNeil Armstrong status = "okay"; 188*48622156SNeil Armstrong pinctrl-0 = <&remote_input_ao_pins>; 189*48622156SNeil Armstrong pinctrl-names = "default"; 190*48622156SNeil Armstrong}; 191*48622156SNeil Armstrong 1924a63a75cSBeniamino Galvani&pinctrl_aobus { 1934a63a75cSBeniamino Galvani gpio-line-names = "UART TX", "UART RX", "VCCK En", "TF 3V3/1V8 En", 1944a63a75cSBeniamino Galvani "USB HUB nRESET", "USB OTG Power En", 1954a63a75cSBeniamino Galvani "J7 Header Pin2", "IR In", "J7 Header Pin4", 1964a63a75cSBeniamino Galvani "J7 Header Pin6", "J7 Header Pin5", "J7 Header Pin7", 1974a63a75cSBeniamino Galvani "HDMI CEC", "SYS LED"; 1984a63a75cSBeniamino Galvani}; 1994a63a75cSBeniamino Galvani 2004a63a75cSBeniamino Galvani&pinctrl_periphs { 2014a63a75cSBeniamino Galvani gpio-line-names = /* Bank GPIOZ */ 2024a63a75cSBeniamino Galvani "Eth MDIO", "Eth MDC", "Eth RGMII RX Clk", 2034a63a75cSBeniamino Galvani "Eth RX DV", "Eth RX D0", "Eth RX D1", "Eth RX D2", 2044a63a75cSBeniamino Galvani "Eth RX D3", "Eth RGMII TX Clk", "Eth TX En", 2054a63a75cSBeniamino Galvani "Eth TX D0", "Eth TX D1", "Eth TX D2", "Eth TX D3", 2064a63a75cSBeniamino Galvani "Eth PHY nRESET", "Eth PHY Intc", 2074a63a75cSBeniamino Galvani /* Bank GPIOH */ 2084a63a75cSBeniamino Galvani "HDMI HPD", "HDMI DDC SDA", "HDMI DDC SCL", "", 2094a63a75cSBeniamino Galvani /* Bank BOOT */ 2104a63a75cSBeniamino Galvani "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3", "eMMC D4", 2114a63a75cSBeniamino Galvani "eMMC D5", "eMMC D6", "eMMC D7", "eMMC Clk", 2124a63a75cSBeniamino Galvani "eMMC Reset", "eMMC CMD", 2134a63a75cSBeniamino Galvani "", "", "", "", "", "", "", 2144a63a75cSBeniamino Galvani /* Bank CARD */ 2154a63a75cSBeniamino Galvani "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD", 2164a63a75cSBeniamino Galvani "SDCard D3", "SDCard D2", "SDCard Det", 2174a63a75cSBeniamino Galvani /* Bank GPIODV */ 2184a63a75cSBeniamino Galvani "", "", "", "", "", "", "", "", "", "", "", "", "", 2194a63a75cSBeniamino Galvani "", "", "", "", "", "", "", "", "", "", "", 2204a63a75cSBeniamino Galvani "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK", 2214a63a75cSBeniamino Galvani "PWM D", "PWM B", 2224a63a75cSBeniamino Galvani /* Bank GPIOY */ 2234a63a75cSBeniamino Galvani "Revision Bit0", "Revision Bit1", "", 2244a63a75cSBeniamino Galvani "J2 Header Pin35", "", "", "", "J2 Header Pin36", 2254a63a75cSBeniamino Galvani "J2 Header Pin31", "", "", "", "TF VDD En", 2264a63a75cSBeniamino Galvani "J2 Header Pin32", "J2 Header Pin26", "", "", 2274a63a75cSBeniamino Galvani /* Bank GPIOX */ 2284a63a75cSBeniamino Galvani "J2 Header Pin29", "J2 Header Pin24", 2294a63a75cSBeniamino Galvani "J2 Header Pin23", "J2 Header Pin22", 2304a63a75cSBeniamino Galvani "J2 Header Pin21", "J2 Header Pin18", 2314a63a75cSBeniamino Galvani "J2 Header Pin33", "J2 Header Pin19", 2324a63a75cSBeniamino Galvani "J2 Header Pin16", "J2 Header Pin15", 2334a63a75cSBeniamino Galvani "J2 Header Pin12", "J2 Header Pin13", 2344a63a75cSBeniamino Galvani "J2 Header Pin8", "J2 Header Pin10", 2354a63a75cSBeniamino Galvani "", "", "", "", "", 2364a63a75cSBeniamino Galvani "J2 Header Pin11", "", "J2 Header Pin7", 2374a63a75cSBeniamino Galvani /* Bank GPIOCLK */ 2384a63a75cSBeniamino Galvani "", "", "", "", 2394a63a75cSBeniamino Galvani /* GPIO_TEST_N */ 2404a63a75cSBeniamino Galvani ""; 2414a63a75cSBeniamino Galvani}; 2424a63a75cSBeniamino Galvani 2434a63a75cSBeniamino Galvani&saradc { 2444a63a75cSBeniamino Galvani status = "okay"; 2454a63a75cSBeniamino Galvani vref-supply = <&vcc1v8>; 2464a63a75cSBeniamino Galvani}; 2474a63a75cSBeniamino Galvani 248*48622156SNeil Armstrong&scpi_clocks { 249*48622156SNeil Armstrong status = "disabled"; 250*48622156SNeil Armstrong}; 251*48622156SNeil Armstrong 252a3b02a1dSHeiner Kallweit/* SD */ 253a3b02a1dSHeiner Kallweit&sd_emmc_b { 254a3b02a1dSHeiner Kallweit status = "okay"; 255a3b02a1dSHeiner Kallweit pinctrl-0 = <&sdcard_pins>; 256a3b02a1dSHeiner Kallweit pinctrl-names = "default"; 257a3b02a1dSHeiner Kallweit 258a3b02a1dSHeiner Kallweit bus-width = <4>; 259a3b02a1dSHeiner Kallweit cap-sd-highspeed; 260a3b02a1dSHeiner Kallweit max-frequency = <100000000>; 261a3b02a1dSHeiner Kallweit disable-wp; 262a3b02a1dSHeiner Kallweit 263a3b02a1dSHeiner Kallweit cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; 264a3b02a1dSHeiner Kallweit cd-inverted; 265a3b02a1dSHeiner Kallweit 266a3b02a1dSHeiner Kallweit vmmc-supply = <&tflash_vdd>; 267a3b02a1dSHeiner Kallweit vqmmc-supply = <&tf_io>; 268a3b02a1dSHeiner Kallweit}; 269a3b02a1dSHeiner Kallweit 270a3b02a1dSHeiner Kallweit/* eMMC */ 271a3b02a1dSHeiner Kallweit&sd_emmc_c { 272a3b02a1dSHeiner Kallweit status = "okay"; 273a3b02a1dSHeiner Kallweit pinctrl-0 = <&emmc_pins>; 274a3b02a1dSHeiner Kallweit pinctrl-names = "default"; 275a3b02a1dSHeiner Kallweit 276a3b02a1dSHeiner Kallweit bus-width = <8>; 277a3b02a1dSHeiner Kallweit cap-sd-highspeed; 278a3b02a1dSHeiner Kallweit max-frequency = <200000000>; 279a3b02a1dSHeiner Kallweit non-removable; 280a3b02a1dSHeiner Kallweit disable-wp; 281a3b02a1dSHeiner Kallweit cap-mmc-highspeed; 282a3b02a1dSHeiner Kallweit mmc-ddr-1_8v; 283a3b02a1dSHeiner Kallweit mmc-hs200-1_8v; 284a3b02a1dSHeiner Kallweit 285a3b02a1dSHeiner Kallweit mmc-pwrseq = <&emmc_pwrseq>; 286a3b02a1dSHeiner Kallweit vmmc-supply = <&vcc3v3>; 287a3b02a1dSHeiner Kallweit vqmmc-supply = <&vcc1v8>; 288bfcef28aSBeniamino Galvani}; 289*48622156SNeil Armstrong 290*48622156SNeil Armstrong&uart_AO { 291*48622156SNeil Armstrong status = "okay"; 292*48622156SNeil Armstrong pinctrl-0 = <&uart_ao_a_pins>; 293*48622156SNeil Armstrong pinctrl-names = "default"; 294*48622156SNeil Armstrong}; 295*48622156SNeil Armstrong 296*48622156SNeil Armstrong&usb0_phy { 297*48622156SNeil Armstrong status = "okay"; 298*48622156SNeil Armstrong phy-supply = <&usb_otg_pwr>; 299*48622156SNeil Armstrong}; 300*48622156SNeil Armstrong 301*48622156SNeil Armstrong&usb1_phy { 302*48622156SNeil Armstrong status = "okay"; 303*48622156SNeil Armstrong}; 304*48622156SNeil Armstrong 305*48622156SNeil Armstrong&usb0 { 306*48622156SNeil Armstrong status = "okay"; 307*48622156SNeil Armstrong}; 308*48622156SNeil Armstrong 309*48622156SNeil Armstrong&usb1 { 310*48622156SNeil Armstrong status = "okay"; 311*48622156SNeil Armstrong}; 312