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 = ðmac; 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 11460c5abf6SAnand Moon vddio_ao1v8: regulator-vddio-ao1v8 { 11560c5abf6SAnand Moon compatible = "regulator-fixed"; 11660c5abf6SAnand Moon regulator-name = "VDDIO_AO1V8"; 11760c5abf6SAnand Moon regulator-min-microvolt = <1800000>; 11860c5abf6SAnand Moon regulator-max-microvolt = <1800000>; 11960c5abf6SAnand Moon regulator-always-on; 12060c5abf6SAnand Moon /* U17 RT9179GB */ 12160c5abf6SAnand Moon vin-supply = <&p5v0>; 12260c5abf6SAnand Moon }; 12360c5abf6SAnand Moon 12460c5abf6SAnand Moon vddio_ao3v3: regulator-vddio-ao3v3 { 12560c5abf6SAnand Moon compatible = "regulator-fixed"; 12660c5abf6SAnand Moon regulator-name = "VDDIO_AO3V3"; 12760c5abf6SAnand Moon regulator-min-microvolt = <3300000>; 12860c5abf6SAnand Moon regulator-max-microvolt = <3300000>; 12960c5abf6SAnand Moon regulator-always-on; 13060c5abf6SAnand Moon /* U11 MP2161GJ-C499 */ 13160c5abf6SAnand Moon vin-supply = <&p5v0>; 13260c5abf6SAnand Moon }; 13360c5abf6SAnand Moon 13460c5abf6SAnand Moon ddr3_1v5: regulator-ddr3_1v5 { 13560c5abf6SAnand Moon compatible = "regulator-fixed"; 13660c5abf6SAnand Moon regulator-name = "DDR3_1V5"; 13760c5abf6SAnand Moon regulator-min-microvolt = <1500000>; 13860c5abf6SAnand Moon regulator-max-microvolt = <1500000>; 13960c5abf6SAnand Moon regulator-always-on; 14060c5abf6SAnand Moon /* U15 MP2161GJ-C499 */ 14160c5abf6SAnand Moon vin-supply = <&p5v0>; 14260c5abf6SAnand Moon }; 14360c5abf6SAnand Moon 144ef8d2ffeSKevin Hilman emmc_pwrseq: emmc-pwrseq { 145ef8d2ffeSKevin Hilman compatible = "mmc-pwrseq-emmc"; 146ef8d2ffeSKevin Hilman reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; 147ef8d2ffeSKevin Hilman }; 148fc19afa1SNeil Armstrong 149fc19afa1SNeil Armstrong hdmi-connector { 150fc19afa1SNeil Armstrong compatible = "hdmi-connector"; 151fc19afa1SNeil Armstrong type = "a"; 152fc19afa1SNeil Armstrong 153fc19afa1SNeil Armstrong port { 154fc19afa1SNeil Armstrong hdmi_connector_in: endpoint { 155fc19afa1SNeil Armstrong remote-endpoint = <&hdmi_tx_tmds_out>; 156fc19afa1SNeil Armstrong }; 157fc19afa1SNeil Armstrong }; 158fc19afa1SNeil Armstrong }; 159fc19afa1SNeil Armstrong}; 160fc19afa1SNeil Armstrong 161fc19afa1SNeil Armstrong&cec_AO { 162fc19afa1SNeil Armstrong status = "okay"; 163fc19afa1SNeil Armstrong pinctrl-0 = <&ao_cec_pins>; 164fc19afa1SNeil Armstrong pinctrl-names = "default"; 165fc19afa1SNeil Armstrong hdmi-phandle = <&hdmi_tx>; 16685596034SKevin Hilman}; 16785596034SKevin Hilman 1688c5509f0SKevin Hilmanðmac { 1698c5509f0SKevin Hilman status = "okay"; 1703be2d9cfSNeil Armstrong pinctrl-0 = <ð_rgmii_pins>; 1718c5509f0SKevin Hilman pinctrl-names = "default"; 172feb3cbeaSJerome Brunet phy-handle = <ð_phy0>; 173b6ff2721SMartin Blumenstingl phy-mode = "rgmii"; 174b6ff2721SMartin Blumenstingl 175093d23dbSMartin Blumenstingl amlogic,tx-delay-ns = <2>; 176093d23dbSMartin Blumenstingl 177feb3cbeaSJerome Brunet mdio { 178feb3cbeaSJerome Brunet compatible = "snps,dwmac-mdio"; 179feb3cbeaSJerome Brunet #address-cells = <1>; 180feb3cbeaSJerome Brunet #size-cells = <0>; 181feb3cbeaSJerome Brunet 182feb3cbeaSJerome Brunet eth_phy0: ethernet-phy@0 { 18350290cfeSMartin Blumenstingl /* Realtek RTL8211F (0x001cc916) */ 184feb3cbeaSJerome Brunet reg = <0>; 185f29cabf2SMartin Blumenstingl 186f29cabf2SMartin Blumenstingl reset-assert-us = <10000>; 187f29cabf2SMartin Blumenstingl reset-deassert-us = <30000>; 188f29cabf2SMartin Blumenstingl reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; 189f29cabf2SMartin Blumenstingl 190b94d22d9SJerome Brunet interrupt-parent = <&gpio_intc>; 19150290cfeSMartin Blumenstingl /* MAC_INTR on GPIOZ_15 */ 192b94d22d9SJerome Brunet interrupts = <29 IRQ_TYPE_LEVEL_LOW>; 193feb3cbeaSJerome Brunet }; 194feb3cbeaSJerome Brunet }; 1958c5509f0SKevin Hilman}; 1968c5509f0SKevin Hilman 1973b69bdbfSAndreas Färber&gpio_ao { 1983b69bdbfSAndreas Färber /* 1993b69bdbfSAndreas Färber * WARNING: The USB Hub on the Odroid-C2 needs a reset signal 2003b69bdbfSAndreas Färber * to be turned high in order to be detected by the USB Controller 2013b69bdbfSAndreas Färber * This signal should be handled by a USB specific power sequence 2023b69bdbfSAndreas Färber * in order to reset the Hub when USB bus is powered down. 2033b69bdbfSAndreas Färber */ 2043b69bdbfSAndreas Färber usb-hub { 2053b69bdbfSAndreas Färber gpio-hog; 2063b69bdbfSAndreas Färber gpios = <GPIOAO_4 GPIO_ACTIVE_HIGH>; 2073b69bdbfSAndreas Färber output-high; 2083b69bdbfSAndreas Färber line-name = "usb-hub-reset"; 2093b69bdbfSAndreas Färber }; 2103b69bdbfSAndreas Färber}; 2113b69bdbfSAndreas Färber 212fc19afa1SNeil Armstrong&hdmi_tx { 213fc19afa1SNeil Armstrong status = "okay"; 214fc19afa1SNeil Armstrong pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; 215fc19afa1SNeil Armstrong pinctrl-names = "default"; 216fc19afa1SNeil Armstrong}; 217fc19afa1SNeil Armstrong 218fc19afa1SNeil Armstrong&hdmi_tx_tmds_port { 219fc19afa1SNeil Armstrong hdmi_tx_tmds_out: endpoint { 220fc19afa1SNeil Armstrong remote-endpoint = <&hdmi_connector_in>; 221fc19afa1SNeil Armstrong }; 222fc19afa1SNeil Armstrong}; 223fc19afa1SNeil Armstrong 2243b69bdbfSAndreas Färber&i2c_A { 2253b69bdbfSAndreas Färber status = "okay"; 2263b69bdbfSAndreas Färber pinctrl-0 = <&i2c_a_pins>; 2273b69bdbfSAndreas Färber pinctrl-names = "default"; 2283b69bdbfSAndreas Färber}; 2293b69bdbfSAndreas Färber 2303b69bdbfSAndreas Färber&ir { 2313b69bdbfSAndreas Färber status = "okay"; 2323b69bdbfSAndreas Färber pinctrl-0 = <&remote_input_ao_pins>; 2333b69bdbfSAndreas Färber pinctrl-names = "default"; 2343b69bdbfSAndreas Färber}; 2353b69bdbfSAndreas Färber 2362165b006SNeil Armstrong&gpio_ao { 237b03c7d64SNeil Armstrong gpio-line-names = "UART TX", "UART RX", "VCCK En", "TF 3V3/1V8 En", 238b03c7d64SNeil Armstrong "USB HUB nRESET", "USB OTG Power En", 239b03c7d64SNeil Armstrong "J7 Header Pin2", "IR In", "J7 Header Pin4", 240b03c7d64SNeil Armstrong "J7 Header Pin6", "J7 Header Pin5", "J7 Header Pin7", 241e43f20e8SJerome Brunet "HDMI CEC", "SYS LED", 242e43f20e8SJerome Brunet /* GPIO_TEST_N */ 243e43f20e8SJerome Brunet ""; 244b03c7d64SNeil Armstrong}; 245b03c7d64SNeil Armstrong 2462165b006SNeil Armstrong&gpio { 247b03c7d64SNeil Armstrong gpio-line-names = /* Bank GPIOZ */ 248b03c7d64SNeil Armstrong "Eth MDIO", "Eth MDC", "Eth RGMII RX Clk", 249b03c7d64SNeil Armstrong "Eth RX DV", "Eth RX D0", "Eth RX D1", "Eth RX D2", 250b03c7d64SNeil Armstrong "Eth RX D3", "Eth RGMII TX Clk", "Eth TX En", 251b03c7d64SNeil Armstrong "Eth TX D0", "Eth TX D1", "Eth TX D2", "Eth TX D3", 252b03c7d64SNeil Armstrong "Eth PHY nRESET", "Eth PHY Intc", 253b03c7d64SNeil Armstrong /* Bank GPIOH */ 254b03c7d64SNeil Armstrong "HDMI HPD", "HDMI DDC SDA", "HDMI DDC SCL", "", 255b03c7d64SNeil Armstrong /* Bank BOOT */ 256b03c7d64SNeil Armstrong "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3", "eMMC D4", 257b03c7d64SNeil Armstrong "eMMC D5", "eMMC D6", "eMMC D7", "eMMC Clk", 258b03c7d64SNeil Armstrong "eMMC Reset", "eMMC CMD", 259b03c7d64SNeil Armstrong "", "", "", "", "", "", "", 260b03c7d64SNeil Armstrong /* Bank CARD */ 261b03c7d64SNeil Armstrong "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD", 262b03c7d64SNeil Armstrong "SDCard D3", "SDCard D2", "SDCard Det", 263b03c7d64SNeil Armstrong /* Bank GPIODV */ 264b03c7d64SNeil Armstrong "", "", "", "", "", "", "", "", "", "", "", "", "", 265b03c7d64SNeil Armstrong "", "", "", "", "", "", "", "", "", "", "", 266b03c7d64SNeil Armstrong "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK", 267b03c7d64SNeil Armstrong "PWM D", "PWM B", 268b03c7d64SNeil Armstrong /* Bank GPIOY */ 269b03c7d64SNeil Armstrong "Revision Bit0", "Revision Bit1", "", 270b03c7d64SNeil Armstrong "J2 Header Pin35", "", "", "", "J2 Header Pin36", 271b03c7d64SNeil Armstrong "J2 Header Pin31", "", "", "", "TF VDD En", 272b03c7d64SNeil Armstrong "J2 Header Pin32", "J2 Header Pin26", "", "", 273b03c7d64SNeil Armstrong /* Bank GPIOX */ 274b03c7d64SNeil Armstrong "J2 Header Pin29", "J2 Header Pin24", 275b03c7d64SNeil Armstrong "J2 Header Pin23", "J2 Header Pin22", 276b03c7d64SNeil Armstrong "J2 Header Pin21", "J2 Header Pin18", 277b03c7d64SNeil Armstrong "J2 Header Pin33", "J2 Header Pin19", 278b03c7d64SNeil Armstrong "J2 Header Pin16", "J2 Header Pin15", 279b03c7d64SNeil Armstrong "J2 Header Pin12", "J2 Header Pin13", 280b03c7d64SNeil Armstrong "J2 Header Pin8", "J2 Header Pin10", 281b03c7d64SNeil Armstrong "", "", "", "", "", 282e43f20e8SJerome Brunet "J2 Header Pin11", "", "J2 Header Pin7", "", 283b03c7d64SNeil Armstrong /* Bank GPIOCLK */ 284e43f20e8SJerome Brunet "", "", "", ""; 285b03c7d64SNeil Armstrong}; 286b03c7d64SNeil Armstrong 28762158c6aSHeiner Kallweit&saradc { 28862158c6aSHeiner Kallweit status = "okay"; 28962158c6aSHeiner Kallweit vref-supply = <&vcc1v8>; 29062158c6aSHeiner Kallweit}; 29162158c6aSHeiner Kallweit 2923b69bdbfSAndreas Färber&scpi_clocks { 2933b69bdbfSAndreas Färber status = "disabled"; 2943b69bdbfSAndreas Färber}; 2953b69bdbfSAndreas Färber 296ef8d2ffeSKevin Hilman/* SD */ 297ef8d2ffeSKevin Hilman&sd_emmc_b { 298ef8d2ffeSKevin Hilman status = "okay"; 299ef8d2ffeSKevin Hilman pinctrl-0 = <&sdcard_pins>; 30067e7607fSJerome Brunet pinctrl-1 = <&sdcard_clk_gate_pins>; 30167e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 302ef8d2ffeSKevin Hilman 303ef8d2ffeSKevin Hilman bus-width = <4>; 304ef8d2ffeSKevin Hilman cap-sd-highspeed; 3057e2b33ffSJerome Brunet sd-uhs-sdr12; 3067e2b33ffSJerome Brunet sd-uhs-sdr25; 3077e2b33ffSJerome Brunet sd-uhs-sdr50; 3087e2b33ffSJerome Brunet sd-uhs-ddr50; 309ef8d2ffeSKevin Hilman max-frequency = <100000000>; 310ef8d2ffeSKevin Hilman disable-wp; 311ef8d2ffeSKevin Hilman 312f29200c8SLoys Ollivier cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; 313ef8d2ffeSKevin Hilman 314ef8d2ffeSKevin Hilman vmmc-supply = <&tflash_vdd>; 315ef8d2ffeSKevin Hilman vqmmc-supply = <&tf_io>; 316ef8d2ffeSKevin Hilman}; 317ef8d2ffeSKevin Hilman 318ef8d2ffeSKevin Hilman/* eMMC */ 319ef8d2ffeSKevin Hilman&sd_emmc_c { 320ef8d2ffeSKevin Hilman status = "okay"; 321ab36be66SNeil Armstrong pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; 32267e7607fSJerome Brunet pinctrl-1 = <&emmc_clk_gate_pins>; 32367e7607fSJerome Brunet pinctrl-names = "default", "clk-gate"; 324ef8d2ffeSKevin Hilman 325ef8d2ffeSKevin Hilman bus-width = <8>; 3267e2b33ffSJerome Brunet max-frequency = <200000000>; 327ef8d2ffeSKevin Hilman non-removable; 328ef8d2ffeSKevin Hilman disable-wp; 329ef8d2ffeSKevin Hilman cap-mmc-highspeed; 330ef8d2ffeSKevin Hilman mmc-ddr-1_8v; 331ef8d2ffeSKevin Hilman mmc-hs200-1_8v; 332ef8d2ffeSKevin Hilman 333ef8d2ffeSKevin Hilman mmc-pwrseq = <&emmc_pwrseq>; 334ef8d2ffeSKevin Hilman vmmc-supply = <&vcc3v3>; 335ef8d2ffeSKevin Hilman vqmmc-supply = <&vcc1v8>; 336ef8d2ffeSKevin Hilman}; 3373b69bdbfSAndreas Färber 3383b69bdbfSAndreas Färber&uart_AO { 3393b69bdbfSAndreas Färber status = "okay"; 3403b69bdbfSAndreas Färber pinctrl-0 = <&uart_ao_a_pins>; 3413b69bdbfSAndreas Färber pinctrl-names = "default"; 3423b69bdbfSAndreas Färber}; 3433b69bdbfSAndreas Färber 3443b69bdbfSAndreas Färber&usb0_phy { 34572c9b5f6SAnand Moon status = "disabled"; 3463b69bdbfSAndreas Färber phy-supply = <&usb_otg_pwr>; 3473b69bdbfSAndreas Färber}; 3483b69bdbfSAndreas Färber 3493b69bdbfSAndreas Färber&usb1_phy { 3503b69bdbfSAndreas Färber status = "okay"; 351e841ec95SNeil Armstrong phy-supply = <&usb_otg_pwr>; 3523b69bdbfSAndreas Färber}; 3533b69bdbfSAndreas Färber 3543b69bdbfSAndreas Färber&usb0 { 35572c9b5f6SAnand Moon status = "disabled"; 3563b69bdbfSAndreas Färber}; 3573b69bdbfSAndreas Färber 3583b69bdbfSAndreas Färber&usb1 { 3593b69bdbfSAndreas Färber status = "okay"; 3603b69bdbfSAndreas Färber}; 361