1f3226572SJagan Teki/* 2f3226572SJagan Teki * Copyright (C) 2017 Jagan Teki <jteki@openedev.com> 3f3226572SJagan Teki * 4f3226572SJagan Teki * This file is dual-licensed: you can use it either under the terms 5f3226572SJagan Teki * of the GPL or the X11 license, at your option. Note that this dual 6f3226572SJagan Teki * licensing only applies to this file, and not this project as a 7f3226572SJagan Teki * whole. 8f3226572SJagan Teki * 9f3226572SJagan Teki * a) This library is free software; you can redistribute it and/or 10f3226572SJagan Teki * modify it under the terms of the GNU General Public License as 11f3226572SJagan Teki * published by the Free Software Foundation; either version 2 of the 12f3226572SJagan Teki * License, or (at your option) any later version. 13f3226572SJagan Teki * 14f3226572SJagan Teki * This library is distributed in the hope that it will be useful, 15f3226572SJagan Teki * but WITHOUT ANY WARRANTY; without even the implied warranty of 16f3226572SJagan Teki * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17f3226572SJagan Teki * GNU General Public License for more details. 18f3226572SJagan Teki * 19f3226572SJagan Teki * Or, alternatively, 20f3226572SJagan Teki * 21f3226572SJagan Teki * b) Permission is hereby granted, free of charge, to any person 22f3226572SJagan Teki * obtaining a copy of this software and associated documentation 23f3226572SJagan Teki * files (the "Software"), to deal in the Software without 24f3226572SJagan Teki * restriction, including without limitation the rights to use, 25f3226572SJagan Teki * copy, modify, merge, publish, distribute, sublicense, and/or 26f3226572SJagan Teki * sell copies of the Software, and to permit persons to whom the 27f3226572SJagan Teki * Software is furnished to do so, subject to the following 28f3226572SJagan Teki * conditions: 29f3226572SJagan Teki * 30f3226572SJagan Teki * The above copyright notice and this permission notice shall be 31f3226572SJagan Teki * included in all copies or substantial portions of the Software. 32f3226572SJagan Teki * 33f3226572SJagan Teki * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34f3226572SJagan Teki * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35f3226572SJagan Teki * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36f3226572SJagan Teki * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37f3226572SJagan Teki * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38f3226572SJagan Teki * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39f3226572SJagan Teki * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40f3226572SJagan Teki * OTHER DEALINGS IN THE SOFTWARE. 41f3226572SJagan Teki */ 42f3226572SJagan Teki 43f3226572SJagan Teki/dts-v1/; 44f3226572SJagan Teki 45f3226572SJagan Teki#include "sun50i-a64.dtsi" 46f3226572SJagan Teki 47f3226572SJagan Teki#include <dt-bindings/gpio/gpio.h> 48f3226572SJagan Teki 49f3226572SJagan Teki/ { 50f3226572SJagan Teki model = "FriendlyARM NanoPi A64"; 51f3226572SJagan Teki compatible = "friendlyarm,nanopi-a64", "allwinner,sun50i-a64"; 52f3226572SJagan Teki 53f3226572SJagan Teki aliases { 54*1b39a183SAndre Przywara ethernet0 = &emac; 55f3226572SJagan Teki serial0 = &uart0; 56f3226572SJagan Teki }; 57f3226572SJagan Teki 58f3226572SJagan Teki chosen { 59f3226572SJagan Teki stdout-path = "serial0:115200n8"; 60f3226572SJagan Teki }; 61*1b39a183SAndre Przywara 62*1b39a183SAndre Przywara hdmi-connector { 63*1b39a183SAndre Przywara compatible = "hdmi-connector"; 64*1b39a183SAndre Przywara type = "a"; 65*1b39a183SAndre Przywara 66*1b39a183SAndre Przywara port { 67*1b39a183SAndre Przywara hdmi_con_in: endpoint { 68*1b39a183SAndre Przywara remote-endpoint = <&hdmi_out_con>; 69*1b39a183SAndre Przywara }; 70*1b39a183SAndre Przywara }; 71*1b39a183SAndre Przywara }; 72*1b39a183SAndre Przywara 73*1b39a183SAndre Przywara leds { 74*1b39a183SAndre Przywara compatible = "gpio-leds"; 75*1b39a183SAndre Przywara 76*1b39a183SAndre Przywara blue { 77*1b39a183SAndre Przywara label = "nanopi-a64:blue:status"; 78*1b39a183SAndre Przywara gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */ 79*1b39a183SAndre Przywara }; 80*1b39a183SAndre Przywara }; 81*1b39a183SAndre Przywara 82*1b39a183SAndre Przywara wifi_pwrseq: wifi_pwrseq { 83*1b39a183SAndre Przywara compatible = "mmc-pwrseq-simple"; 84*1b39a183SAndre Przywara clocks = <&rtc 1>; 85*1b39a183SAndre Przywara clock-names = "ext_clock"; 86*1b39a183SAndre Przywara reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ 87*1b39a183SAndre Przywara }; 88*1b39a183SAndre Przywara}; 89*1b39a183SAndre Przywara 90*1b39a183SAndre Przywara&de { 91*1b39a183SAndre Przywara status = "okay"; 92f3226572SJagan Teki}; 93f3226572SJagan Teki 94f3226572SJagan Teki&ehci0 { 95f3226572SJagan Teki status = "okay"; 96f3226572SJagan Teki}; 97f3226572SJagan Teki 98f3226572SJagan Teki&ehci1 { 99f3226572SJagan Teki status = "okay"; 100f3226572SJagan Teki}; 101f3226572SJagan Teki 102*1b39a183SAndre Przywara&emac { 103*1b39a183SAndre Przywara pinctrl-names = "default"; 104*1b39a183SAndre Przywara pinctrl-0 = <&rgmii_pins>; 105*1b39a183SAndre Przywara phy-mode = "rgmii"; 106*1b39a183SAndre Przywara phy-handle = <&ext_rgmii_phy>; 107*1b39a183SAndre Przywara phy-supply = <®_dcdc1>; 108*1b39a183SAndre Przywara status = "okay"; 109*1b39a183SAndre Przywara}; 110*1b39a183SAndre Przywara 111*1b39a183SAndre Przywara&hdmi { 112*1b39a183SAndre Przywara hvcc-supply = <®_dldo1>; 113*1b39a183SAndre Przywara status = "okay"; 114*1b39a183SAndre Przywara}; 115*1b39a183SAndre Przywara 116*1b39a183SAndre Przywara&hdmi_out { 117*1b39a183SAndre Przywara hdmi_out_con: endpoint { 118*1b39a183SAndre Przywara remote-endpoint = <&hdmi_con_in>; 119*1b39a183SAndre Przywara }; 120*1b39a183SAndre Przywara}; 121*1b39a183SAndre Przywara 122f3226572SJagan Teki/* i2c1 connected with gpio headers like pine64, bananapi */ 123f3226572SJagan Teki&i2c1 { 124f3226572SJagan Teki pinctrl-names = "default"; 125f3226572SJagan Teki pinctrl-0 = <&i2c1_pins>; 126f3226572SJagan Teki status = "disabled"; 127f3226572SJagan Teki}; 128f3226572SJagan Teki 129f3226572SJagan Teki&i2c1_pins { 130f3226572SJagan Teki bias-pull-up; 131f3226572SJagan Teki}; 132f3226572SJagan Teki 133*1b39a183SAndre Przywara&mdio { 134*1b39a183SAndre Przywara ext_rgmii_phy: ethernet-phy@1 { 135*1b39a183SAndre Przywara compatible = "ethernet-phy-ieee802.3-c22"; 136*1b39a183SAndre Przywara reg = <7>; 137*1b39a183SAndre Przywara }; 138*1b39a183SAndre Przywara}; 139*1b39a183SAndre Przywara 140f3226572SJagan Teki&mmc0 { 141f3226572SJagan Teki pinctrl-names = "default"; 142f3226572SJagan Teki pinctrl-0 = <&mmc0_pins>; 14368dd17c3SAndre Przywara vmmc-supply = <®_dcdc1>; 14468dd17c3SAndre Przywara cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 145f3226572SJagan Teki disable-wp; 146f3226572SJagan Teki bus-width = <4>; 147f3226572SJagan Teki status = "okay"; 148f3226572SJagan Teki}; 149f3226572SJagan Teki 150*1b39a183SAndre Przywara&mmc1 { 151*1b39a183SAndre Przywara pinctrl-names = "default"; 152*1b39a183SAndre Przywara pinctrl-0 = <&mmc1_pins>; 153*1b39a183SAndre Przywara vmmc-supply = <®_dcdc1>; 154*1b39a183SAndre Przywara vqmmc-supply = <®_dldo4>; 155*1b39a183SAndre Przywara mmc-pwrseq = <&wifi_pwrseq>; 156*1b39a183SAndre Przywara bus-width = <4>; 157*1b39a183SAndre Przywara non-removable; 158*1b39a183SAndre Przywara status = "okay"; 159*1b39a183SAndre Przywara 160*1b39a183SAndre Przywara rtl8189etv: wifi@1 { 161*1b39a183SAndre Przywara reg = <1>; 162*1b39a183SAndre Przywara interrupt-parent = <&r_pio>; 163*1b39a183SAndre Przywara interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */ 164*1b39a183SAndre Przywara interrupt-names = "host-wake"; 165*1b39a183SAndre Przywara }; 166*1b39a183SAndre Przywara}; 167*1b39a183SAndre Przywara 168f3226572SJagan Teki&ohci0 { 169f3226572SJagan Teki status = "okay"; 170f3226572SJagan Teki}; 171f3226572SJagan Teki 172f3226572SJagan Teki&ohci1 { 173f3226572SJagan Teki status = "okay"; 174f3226572SJagan Teki}; 175f3226572SJagan Teki 17668dd17c3SAndre Przywara&r_rsb { 17768dd17c3SAndre Przywara status = "okay"; 17868dd17c3SAndre Przywara 17968dd17c3SAndre Przywara axp803: pmic@3a3 { 18068dd17c3SAndre Przywara compatible = "x-powers,axp803"; 18168dd17c3SAndre Przywara reg = <0x3a3>; 18268dd17c3SAndre Przywara interrupt-parent = <&r_intc>; 18368dd17c3SAndre Przywara interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 18468dd17c3SAndre Przywara }; 18568dd17c3SAndre Przywara}; 18668dd17c3SAndre Przywara 18768dd17c3SAndre Przywara#include "axp803.dtsi" 18868dd17c3SAndre Przywara 18968dd17c3SAndre Przywara®_aldo2 { 19068dd17c3SAndre Przywara regulator-always-on; 19168dd17c3SAndre Przywara regulator-min-microvolt = <1800000>; 19268dd17c3SAndre Przywara regulator-max-microvolt = <3300000>; 19368dd17c3SAndre Przywara regulator-name = "vcc-pl"; 19468dd17c3SAndre Przywara}; 19568dd17c3SAndre Przywara 19668dd17c3SAndre Przywara®_aldo3 { 19768dd17c3SAndre Przywara regulator-always-on; 19868dd17c3SAndre Przywara regulator-min-microvolt = <3000000>; 19968dd17c3SAndre Przywara regulator-max-microvolt = <3000000>; 20068dd17c3SAndre Przywara regulator-name = "vcc-pll-avcc"; 20168dd17c3SAndre Przywara}; 20268dd17c3SAndre Przywara 20368dd17c3SAndre Przywara®_dcdc1 { 20468dd17c3SAndre Przywara regulator-always-on; 205*1b39a183SAndre Przywara regulator-min-microvolt = <3300000>; 206*1b39a183SAndre Przywara regulator-max-microvolt = <3300000>; 207*1b39a183SAndre Przywara regulator-name = "vcc-3v3"; 20868dd17c3SAndre Przywara}; 20968dd17c3SAndre Przywara 21068dd17c3SAndre Przywara®_dcdc2 { 21168dd17c3SAndre Przywara regulator-always-on; 21268dd17c3SAndre Przywara regulator-min-microvolt = <1040000>; 21368dd17c3SAndre Przywara regulator-max-microvolt = <1300000>; 21468dd17c3SAndre Przywara regulator-name = "vdd-cpux"; 21568dd17c3SAndre Przywara}; 21668dd17c3SAndre Przywara 21768dd17c3SAndre Przywara/* DCDC3 is polyphased with DCDC2 */ 21868dd17c3SAndre Przywara 21968dd17c3SAndre Przywara®_dcdc5 { 22068dd17c3SAndre Przywara regulator-always-on; 22168dd17c3SAndre Przywara regulator-min-microvolt = <1500000>; 22268dd17c3SAndre Przywara regulator-max-microvolt = <1500000>; 22368dd17c3SAndre Przywara regulator-name = "vcc-dram"; 22468dd17c3SAndre Przywara}; 22568dd17c3SAndre Przywara 22668dd17c3SAndre Przywara®_dcdc6 { 22768dd17c3SAndre Przywara regulator-always-on; 22868dd17c3SAndre Przywara regulator-min-microvolt = <1100000>; 22968dd17c3SAndre Przywara regulator-max-microvolt = <1100000>; 23068dd17c3SAndre Przywara regulator-name = "vdd-sys"; 23168dd17c3SAndre Przywara}; 23268dd17c3SAndre Przywara 23368dd17c3SAndre Przywara®_dldo1 { 23468dd17c3SAndre Przywara regulator-always-on; 23568dd17c3SAndre Przywara regulator-min-microvolt = <3300000>; 23668dd17c3SAndre Przywara regulator-max-microvolt = <3300000>; 23768dd17c3SAndre Przywara regulator-name = "vcc-hdmi-dsi"; 23868dd17c3SAndre Przywara}; 23968dd17c3SAndre Przywara 24068dd17c3SAndre Przywara®_dldo4 { 24168dd17c3SAndre Przywara regulator-always-on; 24268dd17c3SAndre Przywara regulator-min-microvolt = <3000000>; 24368dd17c3SAndre Przywara regulator-max-microvolt = <3000000>; 24468dd17c3SAndre Przywara regulator-name = "vcc-pg-wifi-io"; 24568dd17c3SAndre Przywara}; 24668dd17c3SAndre Przywara 24768dd17c3SAndre Przywara®_eldo1 { 24868dd17c3SAndre Przywara regulator-min-microvolt = <1800000>; 24968dd17c3SAndre Przywara regulator-max-microvolt = <1800000>; 25068dd17c3SAndre Przywara regulator-name = "cpvdd"; 25168dd17c3SAndre Przywara}; 25268dd17c3SAndre Przywara 25368dd17c3SAndre Przywara®_fldo1 { 25468dd17c3SAndre Przywara regulator-min-microvolt = <1200000>; 25568dd17c3SAndre Przywara regulator-max-microvolt = <1200000>; 25668dd17c3SAndre Przywara regulator-name = "vcc-1v2-hsic"; 25768dd17c3SAndre Przywara}; 25868dd17c3SAndre Przywara 25968dd17c3SAndre Przywara/* 26068dd17c3SAndre Przywara * The A64 chip cannot work without this regulator off, although 26168dd17c3SAndre Przywara * it seems to be only driving the AR100 core. 26268dd17c3SAndre Przywara * Maybe we don't still know well about CPUs domain. 26368dd17c3SAndre Przywara */ 26468dd17c3SAndre Przywara®_fldo2 { 26568dd17c3SAndre Przywara regulator-always-on; 26668dd17c3SAndre Przywara regulator-min-microvolt = <1100000>; 26768dd17c3SAndre Przywara regulator-max-microvolt = <1100000>; 26868dd17c3SAndre Przywara regulator-name = "vdd-cpus"; 26968dd17c3SAndre Przywara}; 27068dd17c3SAndre Przywara 27168dd17c3SAndre Przywara®_rtc_ldo { 27268dd17c3SAndre Przywara regulator-name = "vcc-rtc"; 27368dd17c3SAndre Przywara}; 27468dd17c3SAndre Przywara 275*1b39a183SAndre Przywara&simplefb_hdmi { 276*1b39a183SAndre Przywara vcc-hdmi-supply = <®_dldo1>; 277*1b39a183SAndre Przywara}; 278*1b39a183SAndre Przywara 279f3226572SJagan Teki&uart0 { 280f3226572SJagan Teki pinctrl-names = "default"; 281*1b39a183SAndre Przywara pinctrl-0 = <&uart0_pb_pins>; 282f3226572SJagan Teki status = "okay"; 283f3226572SJagan Teki}; 284f3226572SJagan Teki 285f3226572SJagan Teki&usbphy { 286f3226572SJagan Teki status = "okay"; 287f3226572SJagan Teki}; 288