1/* 2 * Copyright 2015 Hans de Goede <hdegoede@redhat.com> 3 * 4 * This file is dual-licensed: you can use it either under the terms 5 * of the GPL or the X11 license, at your option. Note that this dual 6 * licensing only applies to this file, and not this project as a 7 * whole. 8 * 9 * a) This file is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU General Public License as 11 * published by the Free Software Foundation; either version 2 of the 12 * License, or (at your option) any later version. 13 * 14 * This file is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * Or, alternatively, 20 * 21 * b) Permission is hereby granted, free of charge, to any person 22 * obtaining a copy of this software and associated documentation 23 * files (the "Software"), to deal in the Software without 24 * restriction, including without limitation the rights to use, 25 * copy, modify, merge, publish, distribute, sublicense, and/or 26 * sell copies of the Software, and to permit persons to whom the 27 * Software is furnished to do so, subject to the following 28 * conditions: 29 * 30 * The above copyright notice and this permission notice shall be 31 * included in all copies or substantial portions of the Software. 32 * 33 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40 * OTHER DEALINGS IN THE SOFTWARE. 41 */ 42 43/dts-v1/; 44#include "sun5i-a13.dtsi" 45#include "sunxi-common-regulators.dtsi" 46#include <dt-bindings/gpio/gpio.h> 47#include <dt-bindings/input/input.h> 48#include <dt-bindings/interrupt-controller/irq.h> 49#include <dt-bindings/pinctrl/sun4i-a10.h> 50#include <dt-bindings/pwm/pwm.h> 51 52/ { 53 model = "Utoo P66"; 54 compatible = "utoo,p66", "allwinner,sun5i-a13"; 55 56 backlight: backlight { 57 compatible = "pwm-backlight"; 58 pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>; 59 /* Note levels of 10 / 20% result in backlight off */ 60 brightness-levels = <0 30 40 50 60 70 80 90 100>; 61 default-brightness-level = <6>; 62 /* TODO: backlight uses axp gpio1 as enable pin */ 63 }; 64 65 i2c_lcd: i2c@0 { 66 /* The lcd panel i2c interface is hooked up via gpios */ 67 compatible = "i2c-gpio"; 68 pinctrl-names = "default"; 69 pinctrl-0 = <&i2c_lcd_pins>; 70 gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>, /* PG12, sda */ 71 <&pio 6 10 GPIO_ACTIVE_HIGH>; /* PG10, scl */ 72 i2c-gpio,delay-us = <5>; 73 }; 74}; 75 76&codec { 77 pinctrl-names = "default"; 78 pinctrl-0 = <&codec_pa_pin>; 79 allwinner,pa-gpios = <&pio 6 3 GPIO_ACTIVE_HIGH>; /* PG3 */ 80 status = "okay"; 81}; 82 83&cpu0 { 84 cpu-supply = <®_dcdc2>; 85}; 86 87&ehci0 { 88 status = "okay"; 89}; 90 91&i2c0 { 92 pinctrl-names = "default"; 93 pinctrl-0 = <&i2c0_pins_a>; 94 status = "okay"; 95 96 axp209: pmic@34 { 97 reg = <0x34>; 98 interrupts = <0>; 99 }; 100}; 101 102#include "axp209.dtsi" 103 104&i2c1 { 105 pinctrl-names = "default"; 106 pinctrl-0 = <&i2c1_pins_a>; 107 status = "okay"; 108 109 icn8318: touchscreen@40 { 110 compatible = "chipone,icn8318"; 111 reg = <0x40>; 112 interrupt-parent = <&pio>; 113 interrupts = <6 9 IRQ_TYPE_EDGE_FALLING>; /* EINT9 (PG9) */ 114 pinctrl-names = "default"; 115 pinctrl-0 = <&ts_wake_pin_p66>; 116 wake-gpios = <&pio 1 3 GPIO_ACTIVE_HIGH>; /* PB3 */ 117 touchscreen-size-x = <800>; 118 touchscreen-size-y = <480>; 119 touchscreen-inverted-x; 120 touchscreen-swapped-x-y; 121 }; 122 123 pcf8563: rtc@51 { 124 compatible = "nxp,pcf8563"; 125 reg = <0x51>; 126 }; 127}; 128 129&lradc { 130 vref-supply = <®_ldo2>; 131 status = "okay"; 132 133 button@200 { 134 label = "Volume Up"; 135 linux,code = <KEY_VOLUMEUP>; 136 channel = <0>; 137 voltage = <200000>; 138 }; 139 140 button@400 { 141 label = "Volume Down"; 142 linux,code = <KEY_VOLUMEDOWN>; 143 channel = <0>; 144 voltage = <400000>; 145 }; 146}; 147 148&mmc0 { 149 pinctrl-names = "default"; 150 pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_p66>; 151 vmmc-supply = <®_vcc3v3>; 152 bus-width = <4>; 153 cd-gpios = <&pio 6 0 GPIO_ACTIVE_HIGH>; /* PG0 */ 154 cd-inverted; 155 status = "okay"; 156}; 157 158&mmc2 { 159 pinctrl-names = "default"; 160 pinctrl-0 = <&mmc2_pins_a>; 161 vmmc-supply = <®_vcc3v3>; 162 bus-width = <8>; 163 non-removable; 164 status = "okay"; 165 166 mmccard: mmccard@0 { 167 reg = <0>; 168 compatible = "mmc-card"; 169 broken-hpi; 170 }; 171}; 172 173&otg_sram { 174 status = "okay"; 175}; 176 177&pio { 178 codec_pa_pin: codec_pa_pin@0 { 179 allwinner,pins = "PG3"; 180 allwinner,function = "gpio_out"; 181 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 182 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 183 }; 184 185 mmc0_cd_pin_p66: mmc0_cd_pin@0 { 186 allwinner,pins = "PG0"; 187 allwinner,function = "gpio_in"; 188 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 189 allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 190 }; 191 192 usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 { 193 allwinner,pins = "PG1"; 194 allwinner,function = "gpio_in"; 195 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 196 allwinner,pull = <SUN4I_PINCTRL_PULL_DOWN>; 197 }; 198 199 usb0_id_detect_pin: usb0_id_detect_pin@0 { 200 allwinner,pins = "PG2"; 201 allwinner,function = "gpio_in"; 202 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 203 allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 204 }; 205 206 i2c_lcd_pins: i2c_lcd_pin@0 { 207 allwinner,pins = "PG10", "PG12"; 208 allwinner,function = "gpio_out"; 209 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 210 allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 211 }; 212 213 ts_wake_pin_p66: ts_wake_pin@0 { 214 allwinner,pins = "PB3"; 215 allwinner,function = "gpio_out"; 216 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 217 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 218 }; 219 220 usb0_vbus_pin_a: usb0_vbus_pin@0 { 221 allwinner,pins = "PB4"; 222 allwinner,function = "gpio_out"; 223 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 224 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 225 }; 226}; 227 228&pwm { 229 pinctrl-names = "default"; 230 pinctrl-0 = <&pwm0_pins>; 231 status = "okay"; 232}; 233 234®_dcdc2 { 235 regulator-always-on; 236 regulator-min-microvolt = <1000000>; 237 regulator-max-microvolt = <1500000>; 238 regulator-name = "vdd-cpu"; 239}; 240 241®_dcdc3 { 242 regulator-always-on; 243 regulator-min-microvolt = <1000000>; 244 regulator-max-microvolt = <1400000>; 245 regulator-name = "vdd-int-pll"; 246}; 247 248®_ldo1 { 249 regulator-name = "vdd-rtc"; 250}; 251 252®_ldo2 { 253 regulator-always-on; 254 regulator-min-microvolt = <3000000>; 255 regulator-max-microvolt = <3000000>; 256 regulator-name = "avcc"; 257}; 258 259®_ldo3 { 260 regulator-min-microvolt = <3300000>; 261 regulator-max-microvolt = <3300000>; 262 regulator-name = "vcc-wifi"; 263}; 264 265®_usb0_vbus { 266 gpio = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */ 267 status = "okay"; 268}; 269 270&usb_otg { 271 dr_mode = "otg"; 272 status = "okay"; 273}; 274 275&usbphy { 276 pinctrl-names = "default"; 277 pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; 278 usb0_id_det-gpio = <&pio 6 2 GPIO_ACTIVE_HIGH>; /* PG2 */ 279 usb0_vbus_det-gpio = <&pio 6 1 GPIO_ACTIVE_HIGH>; /* PG1 */ 280 usb0_vbus-supply = <®_usb0_vbus>; 281 usb1_vbus-supply = <®_ldo3>; 282 status = "okay"; 283}; 284