1*6a3a226eSMaxime Ripard/* 2*6a3a226eSMaxime Ripard * Copyright 2016 Free Electrons 3*6a3a226eSMaxime Ripard * Copyright 2016 NextThing Co 4*6a3a226eSMaxime Ripard * 5*6a3a226eSMaxime Ripard * Maxime Ripard <maxime.ripard@free-electrons.com> 6*6a3a226eSMaxime Ripard * 7*6a3a226eSMaxime Ripard * This file is dual-licensed: you can use it either under the terms 8*6a3a226eSMaxime Ripard * of the GPL or the X11 license, at your option. Note that this dual 9*6a3a226eSMaxime Ripard * licensing only applies to this file, and not this project as a 10*6a3a226eSMaxime Ripard * whole. 11*6a3a226eSMaxime Ripard * 12*6a3a226eSMaxime Ripard * a) This file is free software; you can redistribute it and/or 13*6a3a226eSMaxime Ripard * modify it under the terms of the GNU General Public License as 14*6a3a226eSMaxime Ripard * published by the Free Software Foundation; either version 2 of the 15*6a3a226eSMaxime Ripard * License, or (at your option) any later version. 16*6a3a226eSMaxime Ripard * 17*6a3a226eSMaxime Ripard * This file is distributed in the hope that it will be useful, 18*6a3a226eSMaxime Ripard * but WITHOUT ANY WARRANTY; without even the implied warranty of 19*6a3a226eSMaxime Ripard * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20*6a3a226eSMaxime Ripard * GNU General Public License for more details. 21*6a3a226eSMaxime Ripard * 22*6a3a226eSMaxime Ripard * Or, alternatively, 23*6a3a226eSMaxime Ripard * 24*6a3a226eSMaxime Ripard * b) Permission is hereby granted, free of charge, to any person 25*6a3a226eSMaxime Ripard * obtaining a copy of this software and associated documentation 26*6a3a226eSMaxime Ripard * files (the "Software"), to deal in the Software without 27*6a3a226eSMaxime Ripard * restriction, including without limitation the rights to use, 28*6a3a226eSMaxime Ripard * copy, modify, merge, publish, distribute, sublicense, and/or 29*6a3a226eSMaxime Ripard * sell copies of the Software, and to permit persons to whom the 30*6a3a226eSMaxime Ripard * Software is furnished to do so, subject to the following 31*6a3a226eSMaxime Ripard * conditions: 32*6a3a226eSMaxime Ripard * 33*6a3a226eSMaxime Ripard * The above copyright notice and this permission notice shall be 34*6a3a226eSMaxime Ripard * included in all copies or substantial portions of the Software. 35*6a3a226eSMaxime Ripard * 36*6a3a226eSMaxime Ripard * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 37*6a3a226eSMaxime Ripard * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 38*6a3a226eSMaxime Ripard * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 39*6a3a226eSMaxime Ripard * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 40*6a3a226eSMaxime Ripard * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 41*6a3a226eSMaxime Ripard * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 42*6a3a226eSMaxime Ripard * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 43*6a3a226eSMaxime Ripard * OTHER DEALINGS IN THE SOFTWARE. 44*6a3a226eSMaxime Ripard */ 45*6a3a226eSMaxime Ripard 46*6a3a226eSMaxime Ripard/dts-v1/; 47*6a3a226eSMaxime Ripard#include "sun5i-gr8.dtsi" 48*6a3a226eSMaxime Ripard#include "sunxi-common-regulators.dtsi" 49*6a3a226eSMaxime Ripard 50*6a3a226eSMaxime Ripard#include <dt-bindings/gpio/gpio.h> 51*6a3a226eSMaxime Ripard#include <dt-bindings/input/input.h> 52*6a3a226eSMaxime Ripard#include <dt-bindings/interrupt-controller/irq.h> 53*6a3a226eSMaxime Ripard 54*6a3a226eSMaxime Ripard/ { 55*6a3a226eSMaxime Ripard model = "NextThing C.H.I.P. Pro"; 56*6a3a226eSMaxime Ripard compatible = "nextthing,chip-pro", "nextthing,gr8"; 57*6a3a226eSMaxime Ripard 58*6a3a226eSMaxime Ripard aliases { 59*6a3a226eSMaxime Ripard i2c0 = &i2c0; 60*6a3a226eSMaxime Ripard i2c1 = &i2c1; 61*6a3a226eSMaxime Ripard serial0 = &uart1; 62*6a3a226eSMaxime Ripard serial1 = &uart2; 63*6a3a226eSMaxime Ripard serial2 = &uart3; 64*6a3a226eSMaxime Ripard }; 65*6a3a226eSMaxime Ripard 66*6a3a226eSMaxime Ripard chosen { 67*6a3a226eSMaxime Ripard stdout-path = "serial0:115200n8"; 68*6a3a226eSMaxime Ripard }; 69*6a3a226eSMaxime Ripard 70*6a3a226eSMaxime Ripard leds { 71*6a3a226eSMaxime Ripard compatible = "gpio-leds"; 72*6a3a226eSMaxime Ripard 73*6a3a226eSMaxime Ripard status { 74*6a3a226eSMaxime Ripard label = "chip-pro:white:status"; 75*6a3a226eSMaxime Ripard gpios = <&axp_gpio 2 GPIO_ACTIVE_HIGH>; 76*6a3a226eSMaxime Ripard default-state = "on"; 77*6a3a226eSMaxime Ripard }; 78*6a3a226eSMaxime Ripard }; 79*6a3a226eSMaxime Ripard 80*6a3a226eSMaxime Ripard mmc0_pwrseq: mmc0_pwrseq { 81*6a3a226eSMaxime Ripard compatible = "mmc-pwrseq-simple"; 82*6a3a226eSMaxime Ripard pinctrl-names = "default"; 83*6a3a226eSMaxime Ripard pinctrl-0 = <&wifi_reg_on_pin_chip_pro>; 84*6a3a226eSMaxime Ripard reset-gpios = <&pio 1 10 GPIO_ACTIVE_LOW>; /* PB10 */ 85*6a3a226eSMaxime Ripard }; 86*6a3a226eSMaxime Ripard}; 87*6a3a226eSMaxime Ripard 88*6a3a226eSMaxime Ripard&codec { 89*6a3a226eSMaxime Ripard status = "okay"; 90*6a3a226eSMaxime Ripard}; 91*6a3a226eSMaxime Ripard 92*6a3a226eSMaxime Ripard&ehci0 { 93*6a3a226eSMaxime Ripard status = "okay"; 94*6a3a226eSMaxime Ripard}; 95*6a3a226eSMaxime Ripard 96*6a3a226eSMaxime Ripard&i2c0 { 97*6a3a226eSMaxime Ripard pinctrl-names = "default"; 98*6a3a226eSMaxime Ripard pinctrl-0 = <&i2c0_pins_a>; 99*6a3a226eSMaxime Ripard status = "okay"; 100*6a3a226eSMaxime Ripard 101*6a3a226eSMaxime Ripard axp209: pmic@34 { 102*6a3a226eSMaxime Ripard reg = <0x34>; 103*6a3a226eSMaxime Ripard 104*6a3a226eSMaxime Ripard /* 105*6a3a226eSMaxime Ripard * The interrupt is routed through the "External Fast 106*6a3a226eSMaxime Ripard * Interrupt Request" pin (ball G13 of the module) 107*6a3a226eSMaxime Ripard * directly to the main interrupt controller, without 108*6a3a226eSMaxime Ripard * any other controller interfering. 109*6a3a226eSMaxime Ripard */ 110*6a3a226eSMaxime Ripard interrupts = <0>; 111*6a3a226eSMaxime Ripard }; 112*6a3a226eSMaxime Ripard}; 113*6a3a226eSMaxime Ripard 114*6a3a226eSMaxime Ripard#include "axp209.dtsi" 115*6a3a226eSMaxime Ripard 116*6a3a226eSMaxime Ripard&i2c1 { 117*6a3a226eSMaxime Ripard pinctrl-names = "default"; 118*6a3a226eSMaxime Ripard pinctrl-0 = <&i2c1_pins_a>; 119*6a3a226eSMaxime Ripard status = "disabled"; 120*6a3a226eSMaxime Ripard}; 121*6a3a226eSMaxime Ripard 122*6a3a226eSMaxime Ripard&i2s0 { 123*6a3a226eSMaxime Ripard pinctrl-names = "default"; 124*6a3a226eSMaxime Ripard pinctrl-0 = <&i2s0_mclk_pins_a>, <&i2s0_data_pins_a>; 125*6a3a226eSMaxime Ripard status = "disabled"; 126*6a3a226eSMaxime Ripard}; 127*6a3a226eSMaxime Ripard 128*6a3a226eSMaxime Ripard&mmc0 { 129*6a3a226eSMaxime Ripard pinctrl-names = "default"; 130*6a3a226eSMaxime Ripard pinctrl-0 = <&mmc0_pins_a>; 131*6a3a226eSMaxime Ripard vmmc-supply = <®_vcc3v3>; 132*6a3a226eSMaxime Ripard mmc-pwrseq = <&mmc0_pwrseq>; 133*6a3a226eSMaxime Ripard bus-width = <4>; 134*6a3a226eSMaxime Ripard non-removable; 135*6a3a226eSMaxime Ripard status = "okay"; 136*6a3a226eSMaxime Ripard}; 137*6a3a226eSMaxime Ripard 138*6a3a226eSMaxime Ripard&nfc { 139*6a3a226eSMaxime Ripard pinctrl-names = "default"; 140*6a3a226eSMaxime Ripard pinctrl-0 = <&nand_pins_a &nand_cs0_pins_a &nand_rb0_pins_a>; 141*6a3a226eSMaxime Ripard status = "okay"; 142*6a3a226eSMaxime Ripard 143*6a3a226eSMaxime Ripard nand@0 { 144*6a3a226eSMaxime Ripard #address-cells = <2>; 145*6a3a226eSMaxime Ripard #size-cells = <2>; 146*6a3a226eSMaxime Ripard reg = <0>; 147*6a3a226eSMaxime Ripard allwinner,rb = <0>; 148*6a3a226eSMaxime Ripard nand-ecc-mode = "hw"; 149*6a3a226eSMaxime Ripard }; 150*6a3a226eSMaxime Ripard}; 151*6a3a226eSMaxime Ripard 152*6a3a226eSMaxime Ripard&ohci0 { 153*6a3a226eSMaxime Ripard status = "okay"; 154*6a3a226eSMaxime Ripard}; 155*6a3a226eSMaxime Ripard 156*6a3a226eSMaxime Ripard&otg_sram { 157*6a3a226eSMaxime Ripard status = "okay"; 158*6a3a226eSMaxime Ripard}; 159*6a3a226eSMaxime Ripard 160*6a3a226eSMaxime Ripard&pio { 161*6a3a226eSMaxime Ripard usb0_id_pin_chip_pro: usb0-id-pin@0 { 162*6a3a226eSMaxime Ripard allwinner,pins = "PG2"; 163*6a3a226eSMaxime Ripard allwinner,function = "gpio_in"; 164*6a3a226eSMaxime Ripard allwinner,drive = <SUN4I_PINCTRL_10_MA>; 165*6a3a226eSMaxime Ripard allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 166*6a3a226eSMaxime Ripard }; 167*6a3a226eSMaxime Ripard 168*6a3a226eSMaxime Ripard wifi_reg_on_pin_chip_pro: wifi-reg-on-pin@0 { 169*6a3a226eSMaxime Ripard allwinner,pins = "PB10"; 170*6a3a226eSMaxime Ripard allwinner,function = "gpio_out"; 171*6a3a226eSMaxime Ripard allwinner,drive = <SUN4I_PINCTRL_10_MA>; 172*6a3a226eSMaxime Ripard allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 173*6a3a226eSMaxime Ripard }; 174*6a3a226eSMaxime Ripard}; 175*6a3a226eSMaxime Ripard 176*6a3a226eSMaxime Ripard&pwm { 177*6a3a226eSMaxime Ripard pinctrl-names = "default"; 178*6a3a226eSMaxime Ripard pinctrl-0 = <&pwm0_pins_a>, <&pwm1_pins>; 179*6a3a226eSMaxime Ripard status = "disabled"; 180*6a3a226eSMaxime Ripard}; 181*6a3a226eSMaxime Ripard 182*6a3a226eSMaxime Ripard®_dcdc2 { 183*6a3a226eSMaxime Ripard regulator-min-microvolt = <1000000>; 184*6a3a226eSMaxime Ripard regulator-max-microvolt = <1400000>; 185*6a3a226eSMaxime Ripard regulator-name = "vdd-cpu"; 186*6a3a226eSMaxime Ripard regulator-always-on; 187*6a3a226eSMaxime Ripard}; 188*6a3a226eSMaxime Ripard 189*6a3a226eSMaxime Ripard®_dcdc3 { 190*6a3a226eSMaxime Ripard regulator-min-microvolt = <1000000>; 191*6a3a226eSMaxime Ripard regulator-max-microvolt = <1300000>; 192*6a3a226eSMaxime Ripard regulator-name = "vdd-sys"; 193*6a3a226eSMaxime Ripard regulator-always-on; 194*6a3a226eSMaxime Ripard}; 195*6a3a226eSMaxime Ripard 196*6a3a226eSMaxime Ripard®_ldo1 { 197*6a3a226eSMaxime Ripard regulator-name = "vdd-rtc"; 198*6a3a226eSMaxime Ripard}; 199*6a3a226eSMaxime Ripard 200*6a3a226eSMaxime Ripard®_ldo2 { 201*6a3a226eSMaxime Ripard regulator-min-microvolt = <2700000>; 202*6a3a226eSMaxime Ripard regulator-max-microvolt = <3300000>; 203*6a3a226eSMaxime Ripard regulator-name = "avcc"; 204*6a3a226eSMaxime Ripard regulator-always-on; 205*6a3a226eSMaxime Ripard}; 206*6a3a226eSMaxime Ripard 207*6a3a226eSMaxime Ripard/* 208*6a3a226eSMaxime Ripard * Both LDO3 and LDO4 are used in parallel to power up the 209*6a3a226eSMaxime Ripard * WiFi/BT chip. 210*6a3a226eSMaxime Ripard */ 211*6a3a226eSMaxime Ripard®_ldo3 { 212*6a3a226eSMaxime Ripard regulator-min-microvolt = <3300000>; 213*6a3a226eSMaxime Ripard regulator-max-microvolt = <3300000>; 214*6a3a226eSMaxime Ripard regulator-name = "vcc-wifi-1"; 215*6a3a226eSMaxime Ripard regulator-always-on; 216*6a3a226eSMaxime Ripard}; 217*6a3a226eSMaxime Ripard 218*6a3a226eSMaxime Ripard®_ldo4 { 219*6a3a226eSMaxime Ripard regulator-min-microvolt = <3300000>; 220*6a3a226eSMaxime Ripard regulator-max-microvolt = <3300000>; 221*6a3a226eSMaxime Ripard regulator-name = "vcc-wifi-2"; 222*6a3a226eSMaxime Ripard regulator-always-on; 223*6a3a226eSMaxime Ripard}; 224*6a3a226eSMaxime Ripard 225*6a3a226eSMaxime Ripard&uart1 { 226*6a3a226eSMaxime Ripard pinctrl-names = "default"; 227*6a3a226eSMaxime Ripard pinctrl-0 = <&uart1_pins_a>, <&uart1_cts_rts_pins_a>; 228*6a3a226eSMaxime Ripard status = "okay"; 229*6a3a226eSMaxime Ripard}; 230*6a3a226eSMaxime Ripard 231*6a3a226eSMaxime Ripard&uart2 { 232*6a3a226eSMaxime Ripard pinctrl-names = "default"; 233*6a3a226eSMaxime Ripard pinctrl-0 = <&uart2_pins_a>, <&uart2_cts_rts_pins_a>; 234*6a3a226eSMaxime Ripard status = "disabled"; 235*6a3a226eSMaxime Ripard}; 236*6a3a226eSMaxime Ripard 237*6a3a226eSMaxime Ripard&uart3 { 238*6a3a226eSMaxime Ripard pinctrl-names = "default"; 239*6a3a226eSMaxime Ripard pinctrl-0 = <&uart3_pins_a>, <&uart3_cts_rts_pins_a>; 240*6a3a226eSMaxime Ripard status = "okay"; 241*6a3a226eSMaxime Ripard}; 242*6a3a226eSMaxime Ripard 243*6a3a226eSMaxime Ripard&usb_otg { 244*6a3a226eSMaxime Ripard /* 245*6a3a226eSMaxime Ripard * The CHIP Pro doesn't have a controllable VBUS, nor does it 246*6a3a226eSMaxime Ripard * have any 5v rail on the board itself. 247*6a3a226eSMaxime Ripard * 248*6a3a226eSMaxime Ripard * If one wants to use it as a true OTG port, it should be 249*6a3a226eSMaxime Ripard * done in the baseboard, and its DT / overlay will add it. 250*6a3a226eSMaxime Ripard */ 251*6a3a226eSMaxime Ripard dr_mode = "otg"; 252*6a3a226eSMaxime Ripard status = "okay"; 253*6a3a226eSMaxime Ripard}; 254*6a3a226eSMaxime Ripard 255*6a3a226eSMaxime Ripard&usb_power_supply { 256*6a3a226eSMaxime Ripard status = "okay"; 257*6a3a226eSMaxime Ripard}; 258*6a3a226eSMaxime Ripard 259*6a3a226eSMaxime Ripard&usbphy { 260*6a3a226eSMaxime Ripard pinctrl-names = "default"; 261*6a3a226eSMaxime Ripard pinctrl-0 = <&usb0_id_pin_chip_pro>; 262*6a3a226eSMaxime Ripard usb0_id_det-gpio = <&pio 6 2 GPIO_ACTIVE_HIGH>; /* PG2 */ 263*6a3a226eSMaxime Ripard usb0_vbus_power-supply = <&usb_power_supply>; 264*6a3a226eSMaxime Ripard usb1_vbus-supply = <®_vcc5v0>; 265*6a3a226eSMaxime Ripard status = "okay"; 266*6a3a226eSMaxime Ripard}; 267