1/* 2 * Copyright 2015 Free Electrons 3 * Copyright 2015 NextThing Co 4 * 5 * Maxime Ripard <maxime.ripard@free-electrons.com> 6 * 7 * This file is dual-licensed: you can use it either under the terms 8 * of the GPL or the X11 license, at your option. Note that this dual 9 * licensing only applies to this file, and not this project as a 10 * whole. 11 * 12 * a) This file is free software; you can redistribute it and/or 13 * modify it under the terms of the GNU General Public License as 14 * published by the Free Software Foundation; either version 2 of the 15 * License, or (at your option) any later version. 16 * 17 * This file is distributed in the hope that it will be useful, 18 * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 * GNU General Public License for more details. 21 * 22 * Or, alternatively, 23 * 24 * b) Permission is hereby granted, free of charge, to any person 25 * obtaining a copy of this software and associated documentation 26 * files (the "Software"), to deal in the Software without 27 * restriction, including without limitation the rights to use, 28 * copy, modify, merge, publish, distribute, sublicense, and/or 29 * sell copies of the Software, and to permit persons to whom the 30 * Software is furnished to do so, subject to the following 31 * conditions: 32 * 33 * The above copyright notice and this permission notice shall be 34 * included in all copies or substantial portions of the Software. 35 * 36 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 37 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 38 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 39 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 40 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 41 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 42 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 43 * OTHER DEALINGS IN THE SOFTWARE. 44 */ 45 46/dts-v1/; 47#include "sun5i-r8.dtsi" 48#include "sunxi-common-regulators.dtsi" 49 50#include <dt-bindings/gpio/gpio.h> 51#include <dt-bindings/interrupt-controller/irq.h> 52 53/ { 54 model = "NextThing C.H.I.P."; 55 compatible = "nextthing,chip", "allwinner,sun5i-r8", "allwinner,sun5i-a13"; 56 57 aliases { 58 i2c0 = &i2c0; 59 i2c1 = &i2c1; 60 i2c2 = &i2c2; 61 serial0 = &uart1; 62 serial1 = &uart3; 63 spi0 = &spi2; 64 }; 65 66 chosen { 67 stdout-path = "serial0:115200n8"; 68 }; 69 70 leds { 71 compatible = "gpio-leds"; 72 73 status { 74 label = "chip:white:status"; 75 gpios = <&axp_gpio 2 GPIO_ACTIVE_HIGH>; 76 default-state = "on"; 77 }; 78 }; 79 80 mmc0_pwrseq: mmc0_pwrseq { 81 compatible = "mmc-pwrseq-simple"; 82 pinctrl-names = "default"; 83 pinctrl-0 = <&chip_wifi_reg_on_pin>; 84 reset-gpios = <&pio 2 19 GPIO_ACTIVE_LOW>; /* PC19 */ 85 }; 86 87 onewire { 88 compatible = "w1-gpio"; 89 gpios = <&pio 3 2 GPIO_ACTIVE_HIGH>; /* PD2 */ 90 pinctrl-names = "default"; 91 pinctrl-0 = <&chip_w1_pin>; 92 }; 93}; 94 95&be0 { 96 status = "okay"; 97}; 98 99&codec { 100 status = "okay"; 101}; 102 103&cpu0 { 104 cpu-supply = <®_dcdc2>; 105}; 106 107&ehci0 { 108 status = "okay"; 109}; 110 111&i2c0 { 112 pinctrl-names = "default"; 113 pinctrl-0 = <&i2c0_pins_a>; 114 status = "okay"; 115 116 axp209: pmic@34 { 117 reg = <0x34>; 118 119 /* 120 * The interrupt is routed through the "External Fast 121 * Interrupt Request" pin (ball G13 of the module) 122 * directly to the main interrupt controller, without 123 * any other controller interfering. 124 */ 125 interrupts = <0>; 126 }; 127}; 128 129#include "axp209.dtsi" 130 131&ac_power_supply { 132 status = "okay"; 133}; 134 135&battery_power_supply { 136 status = "okay"; 137}; 138 139&i2c1 { 140 pinctrl-names = "default"; 141 pinctrl-0 = <&i2c1_pins_a>; 142 status = "disabled"; 143}; 144 145&i2c2 { 146 pinctrl-names = "default"; 147 pinctrl-0 = <&i2c2_pins_a>; 148 status = "okay"; 149 150 xio: gpio@38 { 151 compatible = "nxp,pcf8574a"; 152 reg = <0x38>; 153 154 gpio-controller; 155 #gpio-cells = <2>; 156 157 interrupt-parent = <&pio>; 158 interrupts = <6 0 IRQ_TYPE_EDGE_FALLING>; 159 interrupt-controller; 160 #interrupt-cells = <2>; 161 }; 162}; 163 164&mmc0_pins_a { 165 bias-pull-up; 166}; 167 168&mmc0 { 169 pinctrl-names = "default"; 170 pinctrl-0 = <&mmc0_pins_a>; 171 vmmc-supply = <®_vcc3v3>; 172 mmc-pwrseq = <&mmc0_pwrseq>; 173 bus-width = <4>; 174 non-removable; 175 status = "okay"; 176}; 177 178&ohci0 { 179 status = "okay"; 180}; 181 182&otg_sram { 183 status = "okay"; 184}; 185 186&pio { 187 chip_vbus_pin: chip_vbus_pin@0 { 188 pins = "PB10"; 189 function = "gpio_out"; 190 }; 191 192 chip_wifi_reg_on_pin: chip_wifi_reg_on_pin@0 { 193 pins = "PC19"; 194 function = "gpio_out"; 195 }; 196 197 chip_id_det_pin: chip_id_det_pin@0 { 198 pins = "PG2"; 199 function = "gpio_in"; 200 }; 201 202 chip_w1_pin: chip_w1_pin@0 { 203 pins = "PD2"; 204 function = "gpio_in"; 205 bias-pull-up; 206 }; 207}; 208 209®_dcdc2 { 210 regulator-min-microvolt = <1000000>; 211 regulator-max-microvolt = <1400000>; 212 regulator-name = "cpuvdd"; 213 regulator-always-on; 214}; 215 216®_dcdc3 { 217 regulator-min-microvolt = <1000000>; 218 regulator-max-microvolt = <1300000>; 219 regulator-name = "corevdd"; 220 regulator-always-on; 221}; 222 223®_ldo1 { 224 regulator-name = "rtcvdd"; 225}; 226 227®_ldo2 { 228 regulator-min-microvolt = <2700000>; 229 regulator-max-microvolt = <3300000>; 230 regulator-name = "avcc"; 231 regulator-always-on; 232}; 233 234/* 235 * Both LDO3 and LDO4 are used in parallel to power up the WiFi/BT 236 * Chip. 237 * 238 * If those are not enabled, the SDIO part will not enumerate, and 239 * since there's no way currently to pass DT infos to an SDIO device, 240 * we cannot really do better than this ugly hack for now. 241 */ 242®_ldo3 { 243 regulator-min-microvolt = <3300000>; 244 regulator-max-microvolt = <3300000>; 245 regulator-name = "vcc-wifi-1"; 246 regulator-always-on; 247}; 248 249®_ldo4 { 250 regulator-min-microvolt = <3300000>; 251 regulator-max-microvolt = <3300000>; 252 regulator-name = "vcc-wifi-2"; 253 regulator-always-on; 254}; 255 256®_ldo5 { 257 regulator-min-microvolt = <1800000>; 258 regulator-max-microvolt = <1800000>; 259 regulator-name = "vcc-1v8"; 260}; 261 262®_usb0_vbus { 263 pinctrl-0 = <&chip_vbus_pin>; 264 vin-supply = <®_vcc5v0>; 265 gpio = <&pio 1 10 GPIO_ACTIVE_HIGH>; /* PB10 */ 266 status = "okay"; 267}; 268 269&spi2 { 270 pinctrl-names = "default"; 271 pinctrl-0 = <&spi2_pins_a>; 272 status = "disabled"; 273}; 274 275&tcon0 { 276 status = "okay"; 277}; 278 279&tve0 { 280 status = "okay"; 281}; 282 283&uart1 { 284 pinctrl-names = "default"; 285 pinctrl-0 = <&uart1_pins_b>; 286 status = "okay"; 287}; 288 289&uart3 { 290 pinctrl-names = "default"; 291 pinctrl-0 = <&uart3_pins_a>, 292 <&uart3_cts_rts_pins_a>; 293 status = "okay"; 294}; 295 296&usb_otg { 297 dr_mode = "otg"; 298 status = "okay"; 299}; 300 301&usb_power_supply { 302 status = "okay"; 303}; 304 305&usbphy { 306 pinctrl-names = "default"; 307 pinctrl-0 = <&chip_id_det_pin>; 308 status = "okay"; 309 310 usb0_id_det-gpio = <&pio 6 2 GPIO_ACTIVE_HIGH>; /* PG2 */ 311 usb0_vbus_power-supply = <&usb_power_supply>; 312 usb0_vbus-supply = <®_usb0_vbus>; 313 usb1_vbus-supply = <®_vcc5v0>; 314}; 315