1d2a6af05SQuentin Schulz/* 2d2a6af05SQuentin Schulz * Copyright 2016 Quentin Schulz 3d2a6af05SQuentin Schulz * 4d2a6af05SQuentin Schulz * Quentin Schulz <quentin.schulz@free-electrons.com> 5d2a6af05SQuentin Schulz * 6d2a6af05SQuentin Schulz * This file is dual-licensed: you can use it either under the terms 7d2a6af05SQuentin Schulz * of the GPL or the X11 license, at your option. Note that this dual 8d2a6af05SQuentin Schulz * licensing only applies to this file, and not this project as a 9d2a6af05SQuentin Schulz * whole. 10d2a6af05SQuentin Schulz * 11d2a6af05SQuentin Schulz * a) This file is free software; you can redistribute it and/or 12d2a6af05SQuentin Schulz * modify it under the terms of the GNU General Public License as 13d2a6af05SQuentin Schulz * published by the Free Software Foundation; either version 2 of the 14d2a6af05SQuentin Schulz * License, or (at your option) any later version. 15d2a6af05SQuentin Schulz * 16d2a6af05SQuentin Schulz * This file is distributed in the hope that it will be useful, 17d2a6af05SQuentin Schulz * but WITHOUT ANY WARRANTY; without even the implied warranty of 18d2a6af05SQuentin Schulz * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19d2a6af05SQuentin Schulz * GNU General Public License for more details. 20d2a6af05SQuentin Schulz * 21d2a6af05SQuentin Schulz * Or, alternatively, 22d2a6af05SQuentin Schulz * 23d2a6af05SQuentin Schulz * b) Permission is hereby granted, free of charge, to any person 24d2a6af05SQuentin Schulz * obtaining a copy of this software and associated documentation 25d2a6af05SQuentin Schulz * files (the "Software"), to deal in the Software without 26d2a6af05SQuentin Schulz * restriction, including without limitation the rights to use, 27d2a6af05SQuentin Schulz * copy, modify, merge, publish, distribute, sublicense, and/or 28d2a6af05SQuentin Schulz * sell copies of the Software, and to permit persons to whom the 29d2a6af05SQuentin Schulz * Software is furnished to do so, subject to the following 30d2a6af05SQuentin Schulz * conditions: 31d2a6af05SQuentin Schulz * 32d2a6af05SQuentin Schulz * The above copyright notice and this permission notice shall be 33d2a6af05SQuentin Schulz * included in all copies or substantial portions of the Software. 34d2a6af05SQuentin Schulz * 35d2a6af05SQuentin Schulz * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 36d2a6af05SQuentin Schulz * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 37d2a6af05SQuentin Schulz * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 38d2a6af05SQuentin Schulz * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 39d2a6af05SQuentin Schulz * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 40d2a6af05SQuentin Schulz * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 41d2a6af05SQuentin Schulz * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 42d2a6af05SQuentin Schulz * OTHER DEALINGS IN THE SOFTWARE. 43d2a6af05SQuentin Schulz */ 44d2a6af05SQuentin Schulz 45d2a6af05SQuentin Schulz/dts-v1/; 46d2a6af05SQuentin Schulz#include "sun8i-a33.dtsi" 47d2a6af05SQuentin Schulz#include "sunxi-common-regulators.dtsi" 48d2a6af05SQuentin Schulz 49d2a6af05SQuentin Schulz#include <dt-bindings/gpio/gpio.h> 50d2a6af05SQuentin Schulz#include <dt-bindings/input/input.h> 51d2a6af05SQuentin Schulz 52d2a6af05SQuentin Schulz/ { 53d2a6af05SQuentin Schulz model = "Allwinner R16 EVB (Parrot)"; 54d2a6af05SQuentin Schulz compatible = "allwinner,parrot", "allwinner,sun8i-a33"; 55d2a6af05SQuentin Schulz 56d2a6af05SQuentin Schulz aliases { 57d2a6af05SQuentin Schulz serial0 = &uart0; 58d2a6af05SQuentin Schulz }; 59d2a6af05SQuentin Schulz 60d2a6af05SQuentin Schulz chosen { 61d2a6af05SQuentin Schulz stdout-path = "serial0:115200n8"; 62d2a6af05SQuentin Schulz }; 63d2a6af05SQuentin Schulz 64d2a6af05SQuentin Schulz leds { 65d2a6af05SQuentin Schulz compatible = "gpio-leds"; 66d2a6af05SQuentin Schulz pinctrl-names = "default"; 67d2a6af05SQuentin Schulz pinctrl-0 = <&led_pins_parrot>; 68d2a6af05SQuentin Schulz 69d2a6af05SQuentin Schulz led1 { 70d2a6af05SQuentin Schulz label = "parrot:led1:usr"; 71d2a6af05SQuentin Schulz gpio = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */ 72d2a6af05SQuentin Schulz }; 73d2a6af05SQuentin Schulz 74d2a6af05SQuentin Schulz led2 { 75d2a6af05SQuentin Schulz label = "parrot:led2:usr"; 76d2a6af05SQuentin Schulz gpio = <&pio 4 16 GPIO_ACTIVE_HIGH>; /* PE16 */ 77d2a6af05SQuentin Schulz }; 78d2a6af05SQuentin Schulz }; 79d2a6af05SQuentin Schulz 80d2a6af05SQuentin Schulz wifi_pwrseq: wifi_pwrseq { 81d2a6af05SQuentin Schulz compatible = "mmc-pwrseq-simple"; 82d2a6af05SQuentin Schulz reset-gpios = <&r_pio 0 6 GPIO_ACTIVE_LOW>; /* PL06 */ 83d2a6af05SQuentin Schulz }; 84d2a6af05SQuentin Schulz 85d2a6af05SQuentin Schulz}; 86d2a6af05SQuentin Schulz 87d2a6af05SQuentin Schulz&ehci0 { 88d2a6af05SQuentin Schulz status = "okay"; 89d2a6af05SQuentin Schulz}; 90d2a6af05SQuentin Schulz 91d2a6af05SQuentin Schulz&i2c1 { 92d2a6af05SQuentin Schulz pinctrl-names = "default"; 93d2a6af05SQuentin Schulz pinctrl-0 = <&i2c1_pins_a>; 94d2a6af05SQuentin Schulz status = "okay"; 95d2a6af05SQuentin Schulz 96*860fbdd4SHans de Goede /* 97*860fbdd4SHans de Goede * FIXME: An as-yet-unknown accelerometer is connected to this 98*860fbdd4SHans de Goede * i2c bus. 99*860fbdd4SHans de Goede */ 100d2a6af05SQuentin Schulz}; 101d2a6af05SQuentin Schulz 102d2a6af05SQuentin Schulz&lradc { 103d2a6af05SQuentin Schulz vref-supply = <®_aldo3>; 104d2a6af05SQuentin Schulz status = "okay"; 105d2a6af05SQuentin Schulz 106d2a6af05SQuentin Schulz button@0 { 107d2a6af05SQuentin Schulz label = "V+"; 108d2a6af05SQuentin Schulz linux,code = <KEY_VOLUMEUP>; 109d2a6af05SQuentin Schulz channel = <0>; 110d2a6af05SQuentin Schulz voltage = <190000>; 111d2a6af05SQuentin Schulz }; 112d2a6af05SQuentin Schulz 113d2a6af05SQuentin Schulz button@1 { 114d2a6af05SQuentin Schulz label = "V-"; 115d2a6af05SQuentin Schulz linux,code = <KEY_VOLUMEDOWN>; 116d2a6af05SQuentin Schulz channel = <0>; 117d2a6af05SQuentin Schulz voltage = <390000>; 118d2a6af05SQuentin Schulz }; 119d2a6af05SQuentin Schulz 120d2a6af05SQuentin Schulz}; 121d2a6af05SQuentin Schulz 122d2a6af05SQuentin Schulz&mmc0 { 123d2a6af05SQuentin Schulz pinctrl-names = "default"; 124d2a6af05SQuentin Schulz pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_parrot>; 125d2a6af05SQuentin Schulz vmmc-supply = <®_dcdc1>; 126d2a6af05SQuentin Schulz cd-gpios = <&pio 3 14 GPIO_ACTIVE_LOW>; /* PD14 */ 127d2a6af05SQuentin Schulz bus-width = <4>; 128d2a6af05SQuentin Schulz status = "okay"; 129d2a6af05SQuentin Schulz}; 130d2a6af05SQuentin Schulz 131d2a6af05SQuentin Schulz&mmc1 { 132d2a6af05SQuentin Schulz pinctrl-names = "default"; 133d2a6af05SQuentin Schulz pinctrl-0 = <&mmc1_pins_a>, <&wifi_reset_pin_parrot>; 134d2a6af05SQuentin Schulz vmmc-supply = <®_aldo1>; 135d2a6af05SQuentin Schulz mmc-pwrseq = <&wifi_pwrseq>; 136d2a6af05SQuentin Schulz bus-width = <4>; 137d2a6af05SQuentin Schulz non-removable; 138d2a6af05SQuentin Schulz status = "okay"; 139d2a6af05SQuentin Schulz}; 140d2a6af05SQuentin Schulz 141d2a6af05SQuentin Schulz&mmc2 { 142d2a6af05SQuentin Schulz pinctrl-names = "default"; 143d2a6af05SQuentin Schulz pinctrl-0 = <&mmc2_8bit_pins>; 144d2a6af05SQuentin Schulz vmmc-supply = <®_dcdc1>; 145d2a6af05SQuentin Schulz bus-width = <8>; 146d2a6af05SQuentin Schulz non-removable; 147d2a6af05SQuentin Schulz cap-mmc-hw-reset; 148d2a6af05SQuentin Schulz status = "okay"; 149d2a6af05SQuentin Schulz}; 150d2a6af05SQuentin Schulz 151d2a6af05SQuentin Schulz&mmc2_8bit_pins { 152d2a6af05SQuentin Schulz allwinner,drive = <SUN4I_PINCTRL_40_MA>; 153d2a6af05SQuentin Schulz allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 154d2a6af05SQuentin Schulz}; 155d2a6af05SQuentin Schulz 156d2a6af05SQuentin Schulz&ohci0 { 157d2a6af05SQuentin Schulz status = "okay"; 158d2a6af05SQuentin Schulz}; 159d2a6af05SQuentin Schulz 160d2a6af05SQuentin Schulz&pio { 161d2a6af05SQuentin Schulz mmc0_cd_pin_parrot: mmc0_cd_pin@0 { 162d2a6af05SQuentin Schulz allwinner,pins = "PD14"; 163d2a6af05SQuentin Schulz allwinner,function = "gpio_in"; 164d2a6af05SQuentin Schulz allwinner,drive = <SUN4I_PINCTRL_10_MA>; 165d2a6af05SQuentin Schulz allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 166d2a6af05SQuentin Schulz }; 167d2a6af05SQuentin Schulz 168d2a6af05SQuentin Schulz led_pins_parrot: led_pins@0 { 169d2a6af05SQuentin Schulz allwinner,pins = "PE16", "PE17"; 170d2a6af05SQuentin Schulz allwinner,function = "gpio_out"; 171d2a6af05SQuentin Schulz allwinner,drive = <SUN4I_PINCTRL_10_MA>; 172d2a6af05SQuentin Schulz allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 173d2a6af05SQuentin Schulz }; 174d2a6af05SQuentin Schulz 175d2a6af05SQuentin Schulz usb0_id_det: usb0_id_detect_pin@0 { 176d2a6af05SQuentin Schulz allwinner,pins = "PD10"; 177d2a6af05SQuentin Schulz allwinner,function = "gpio_in"; 178d2a6af05SQuentin Schulz allwinner,drive = <SUN4I_PINCTRL_10_MA>; 179d2a6af05SQuentin Schulz allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 180d2a6af05SQuentin Schulz }; 181d2a6af05SQuentin Schulz 182d2a6af05SQuentin Schulz usb1_vbus_pin_parrot: usb1_vbus_pin@0 { 183d2a6af05SQuentin Schulz allwinner,pins = "PD12"; 184d2a6af05SQuentin Schulz allwinner,function = "gpio_out"; 185d2a6af05SQuentin Schulz allwinner,drive = <SUN4I_PINCTRL_10_MA>; 186d2a6af05SQuentin Schulz allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 187d2a6af05SQuentin Schulz }; 188d2a6af05SQuentin Schulz}; 189d2a6af05SQuentin Schulz 190d2a6af05SQuentin Schulz&r_pio { 191d2a6af05SQuentin Schulz wifi_reset_pin_parrot: wifi_reset_pin@0 { 192d2a6af05SQuentin Schulz allwinner,pins = "PL6"; 193d2a6af05SQuentin Schulz allwinner,function = "gpio_out"; 194d2a6af05SQuentin Schulz allwinner,drive = <SUN4I_PINCTRL_10_MA>; 195d2a6af05SQuentin Schulz allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 196d2a6af05SQuentin Schulz }; 197d2a6af05SQuentin Schulz}; 198d2a6af05SQuentin Schulz 199d2a6af05SQuentin Schulz&r_rsb { 200d2a6af05SQuentin Schulz status = "okay"; 201d2a6af05SQuentin Schulz 202d2a6af05SQuentin Schulz axp22x: pmic@3a3 { 203d2a6af05SQuentin Schulz compatible = "x-powers,axp223"; 204d2a6af05SQuentin Schulz reg = <0x3a3>; 205d2a6af05SQuentin Schulz interrupt-parent = <&nmi_intc>; 206d2a6af05SQuentin Schulz interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 207d2a6af05SQuentin Schulz drivevbus-supply = <®_vcc5v0>; 208d2a6af05SQuentin Schulz x-powers,drive-vbus-en; 209d2a6af05SQuentin Schulz }; 210d2a6af05SQuentin Schulz}; 211d2a6af05SQuentin Schulz 212d2a6af05SQuentin Schulz#include "axp22x.dtsi" 213d2a6af05SQuentin Schulz 214d2a6af05SQuentin Schulz®_aldo1 { 215d2a6af05SQuentin Schulz regulator-always-on; 216d2a6af05SQuentin Schulz regulator-min-microvolt = <3000000>; 217d2a6af05SQuentin Schulz regulator-max-microvolt = <3000000>; 218d2a6af05SQuentin Schulz regulator-name = "vcc-io"; 219d2a6af05SQuentin Schulz}; 220d2a6af05SQuentin Schulz 221d2a6af05SQuentin Schulz®_aldo2 { 222d2a6af05SQuentin Schulz regulator-always-on; 223d2a6af05SQuentin Schulz regulator-min-microvolt = <2350000>; 224d2a6af05SQuentin Schulz regulator-max-microvolt = <2650000>; 225d2a6af05SQuentin Schulz regulator-name = "vdd-dll"; 226d2a6af05SQuentin Schulz}; 227d2a6af05SQuentin Schulz 228d2a6af05SQuentin Schulz®_aldo3 { 229d2a6af05SQuentin Schulz regulator-always-on; 230d2a6af05SQuentin Schulz regulator-min-microvolt = <2700000>; 231d2a6af05SQuentin Schulz regulator-max-microvolt = <3300000>; 232d2a6af05SQuentin Schulz regulator-name = "vcc-pll-avcc"; 233d2a6af05SQuentin Schulz}; 234d2a6af05SQuentin Schulz 235d2a6af05SQuentin Schulz®_dc5ldo { 236d2a6af05SQuentin Schulz regulator-always-on; 237d2a6af05SQuentin Schulz regulator-min-microvolt = <900000>; 238d2a6af05SQuentin Schulz regulator-max-microvolt = <1400000>; 239d2a6af05SQuentin Schulz regulator-name = "vdd-cpus"; 240d2a6af05SQuentin Schulz}; 241d2a6af05SQuentin Schulz 242d2a6af05SQuentin Schulz®_dcdc1 { 243d2a6af05SQuentin Schulz regulator-always-on; 244d2a6af05SQuentin Schulz regulator-min-microvolt = <3000000>; 245d2a6af05SQuentin Schulz regulator-max-microvolt = <3000000>; 246d2a6af05SQuentin Schulz regulator-name = "vcc-3v0"; 247d2a6af05SQuentin Schulz}; 248d2a6af05SQuentin Schulz 249d2a6af05SQuentin Schulz®_dcdc2 { 250d2a6af05SQuentin Schulz regulator-always-on; 251d2a6af05SQuentin Schulz regulator-min-microvolt = <900000>; 252d2a6af05SQuentin Schulz regulator-max-microvolt = <1400000>; 253d2a6af05SQuentin Schulz regulator-name = "vdd-sys"; 254d2a6af05SQuentin Schulz}; 255d2a6af05SQuentin Schulz 256d2a6af05SQuentin Schulz®_dcdc3 { 257d2a6af05SQuentin Schulz regulator-always-on; 258d2a6af05SQuentin Schulz regulator-min-microvolt = <900000>; 259d2a6af05SQuentin Schulz regulator-max-microvolt = <1400000>; 260d2a6af05SQuentin Schulz regulator-name = "vdd-cpu"; 261d2a6af05SQuentin Schulz}; 262d2a6af05SQuentin Schulz 263d2a6af05SQuentin Schulz®_dcdc5 { 264d2a6af05SQuentin Schulz regulator-always-on; 265d2a6af05SQuentin Schulz regulator-min-microvolt = <1500000>; 266d2a6af05SQuentin Schulz regulator-max-microvolt = <1500000>; 267d2a6af05SQuentin Schulz regulator-name = "vcc-dram"; 268d2a6af05SQuentin Schulz}; 269d2a6af05SQuentin Schulz 270d2a6af05SQuentin Schulz®_dldo1 { 271d2a6af05SQuentin Schulz /* 272d2a6af05SQuentin Schulz * TODO: WiFi chip needs dldo1 AND dldo2 to be on to be powered. 273d2a6af05SQuentin Schulz * Remove next line once it is possible to sync two regulators. 274d2a6af05SQuentin Schulz */ 275d2a6af05SQuentin Schulz regulator-always-on; 276d2a6af05SQuentin Schulz regulator-min-microvolt = <3300000>; 277d2a6af05SQuentin Schulz regulator-max-microvolt = <3300000>; 278d2a6af05SQuentin Schulz regulator-name = "vcc-wifi0"; 279d2a6af05SQuentin Schulz}; 280d2a6af05SQuentin Schulz 281d2a6af05SQuentin Schulz®_dldo2 { 282d2a6af05SQuentin Schulz /* 283d2a6af05SQuentin Schulz * TODO: WiFi chip needs dldo1 AND dldo2 to be on to be powered. 284d2a6af05SQuentin Schulz * Remove next line once it is possible to sync two regulators. 285d2a6af05SQuentin Schulz */ 286d2a6af05SQuentin Schulz regulator-always-on; 287d2a6af05SQuentin Schulz regulator-min-microvolt = <3300000>; 288d2a6af05SQuentin Schulz regulator-max-microvolt = <3300000>; 289d2a6af05SQuentin Schulz regulator-name = "vcc-wifi1"; 290d2a6af05SQuentin Schulz}; 291d2a6af05SQuentin Schulz 292d2a6af05SQuentin Schulz®_dldo3 { 293d2a6af05SQuentin Schulz regulator-min-microvolt = <3000000>; 294d2a6af05SQuentin Schulz regulator-max-microvolt = <3000000>; 295d2a6af05SQuentin Schulz regulator-name = "vcc-3v0-csi"; 296d2a6af05SQuentin Schulz}; 297d2a6af05SQuentin Schulz 298d2a6af05SQuentin Schulz®_drivevbus { 299d2a6af05SQuentin Schulz regulator-name = "usb0-vbus"; 300d2a6af05SQuentin Schulz status = "okay"; 301d2a6af05SQuentin Schulz}; 302d2a6af05SQuentin Schulz 303d2a6af05SQuentin Schulz®_eldo1 { 304d2a6af05SQuentin Schulz regulator-min-microvolt = <1200000>; 305d2a6af05SQuentin Schulz regulator-max-microvolt = <1200000>; 306d2a6af05SQuentin Schulz regulator-name = "vcc-1v2-hsic"; 307d2a6af05SQuentin Schulz}; 308d2a6af05SQuentin Schulz 309d2a6af05SQuentin Schulz®_eldo2 { 310d2a6af05SQuentin Schulz regulator-min-microvolt = <3000000>; 311d2a6af05SQuentin Schulz regulator-max-microvolt = <3000000>; 312d2a6af05SQuentin Schulz regulator-name = "vcc-dsp"; 313d2a6af05SQuentin Schulz}; 314d2a6af05SQuentin Schulz 315d2a6af05SQuentin Schulz®_eldo3 { 316d2a6af05SQuentin Schulz regulator-min-microvolt = <3000000>; 317d2a6af05SQuentin Schulz regulator-max-microvolt = <3000000>; 318d2a6af05SQuentin Schulz regulator-name = "eldo3"; 319d2a6af05SQuentin Schulz}; 320d2a6af05SQuentin Schulz 321d2a6af05SQuentin Schulz®_usb1_vbus { 322d2a6af05SQuentin Schulz pinctrl-names = "default"; 323d2a6af05SQuentin Schulz pinctrl-0 = <&usb1_vbus_pin_parrot>; 324d2a6af05SQuentin Schulz gpio = <&pio 3 12 GPIO_ACTIVE_HIGH>; /* PD12 */ 325d2a6af05SQuentin Schulz status = "okay"; 326d2a6af05SQuentin Schulz}; 327d2a6af05SQuentin Schulz 328d2a6af05SQuentin Schulz&uart0 { 329d2a6af05SQuentin Schulz pinctrl-names = "default"; 330d2a6af05SQuentin Schulz pinctrl-0 = <&uart0_pins_b>; 331d2a6af05SQuentin Schulz status = "okay"; 332d2a6af05SQuentin Schulz}; 333d2a6af05SQuentin Schulz 334d2a6af05SQuentin Schulz&usb_otg { 335d2a6af05SQuentin Schulz dr_mode = "otg"; 336d2a6af05SQuentin Schulz status = "okay"; 337d2a6af05SQuentin Schulz}; 338d2a6af05SQuentin Schulz 339d2a6af05SQuentin Schulz&usb_power_supply { 340d2a6af05SQuentin Schulz status = "okay"; 341d2a6af05SQuentin Schulz}; 342d2a6af05SQuentin Schulz 343d2a6af05SQuentin Schulz&usbphy { 344d2a6af05SQuentin Schulz status = "okay"; 345d2a6af05SQuentin Schulz pinctrl-names = "default"; 346d2a6af05SQuentin Schulz pinctrl-0 = <&usb0_id_det>; 347d2a6af05SQuentin Schulz usb0_vbus-supply = <®_drivevbus>; 348d2a6af05SQuentin Schulz usb0_id_det-gpios = <&pio 3 10 GPIO_ACTIVE_HIGH>; /* PD10 */ 349d2a6af05SQuentin Schulz usb0_vbus_power-supply = <&usb_power_supply>; 350d2a6af05SQuentin Schulz usb1_vbus-supply = <®_usb1_vbus>; 351d2a6af05SQuentin Schulz}; 352