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 "sun4i-a10.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 50/ { 51 model = "iNet-9F Rev 03"; 52 compatible = "inet-tek,inet9f-rev03", "allwinner,sun4i-a10"; 53 54 aliases { 55 serial0 = &uart0; 56 }; 57 58 chosen { 59 stdout-path = "serial0:115200n8"; 60 }; 61 62 gpio-keys { 63 compatible = "gpio-keys-polled"; 64 poll-interval = <20>; 65 66 left-joystick-left { 67 label = "Left Joystick Left"; 68 linux,code = <ABS_X>; 69 linux,input-type = <EV_ABS>; 70 linux,input-value = <0xffffffff>; /* -1 */ 71 gpios = <&pio 0 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA6 */ 72 }; 73 74 left-joystick-right { 75 label = "Left Joystick Right"; 76 linux,code = <ABS_X>; 77 linux,input-type = <EV_ABS>; 78 linux,input-value = <1>; 79 gpios = <&pio 0 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA5 */ 80 }; 81 82 left-joystick-up { 83 label = "Left Joystick Up"; 84 linux,code = <ABS_Y>; 85 linux,input-type = <EV_ABS>; 86 linux,input-value = <0xffffffff>; /* -1 */ 87 gpios = <&pio 0 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA8 */ 88 }; 89 90 left-joystick-down { 91 label = "Left Joystick Down"; 92 linux,code = <ABS_Y>; 93 linux,input-type = <EV_ABS>; 94 linux,input-value = <1>; 95 gpios = <&pio 0 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA9 */ 96 }; 97 98 right-joystick-left { 99 label = "Right Joystick Left"; 100 linux,code = <ABS_Z>; 101 linux,input-type = <EV_ABS>; 102 linux,input-value = <0xffffffff>; /* -1 */ 103 gpios = <&pio 0 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA1 */ 104 }; 105 106 right-joystick-right { 107 label = "Right Joystick Right"; 108 linux,code = <ABS_Z>; 109 linux,input-type = <EV_ABS>; 110 linux,input-value = <1>; 111 gpios = <&pio 0 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA0 */ 112 }; 113 114 right-joystick-up { 115 label = "Right Joystick Up"; 116 linux,code = <ABS_RZ>; 117 linux,input-type = <EV_ABS>; 118 linux,input-value = <0xffffffff>; /* -1 */ 119 gpios = <&pio 0 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA3 */ 120 }; 121 122 right-joystick-down { 123 label = "Right Joystick Down"; 124 linux,code = <ABS_RZ>; 125 linux,input-type = <EV_ABS>; 126 linux,input-value = <1>; 127 gpios = <&pio 0 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA4 */ 128 }; 129 130 dpad-left { 131 label = "DPad Left"; 132 linux,code = <ABS_HAT0X>; 133 linux,input-type = <EV_ABS>; 134 linux,input-value = <0xffffffff>; /* -1 */ 135 gpios = <&pio 7 23 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PH23 */ 136 }; 137 138 dpad-right { 139 label = "DPad Right"; 140 linux,code = <ABS_HAT0X>; 141 linux,input-type = <EV_ABS>; 142 linux,input-value = <1>; 143 gpios = <&pio 7 24 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PH24 */ 144 }; 145 146 dpad-up { 147 label = "DPad Up"; 148 linux,code = <ABS_HAT0Y>; 149 linux,input-type = <EV_ABS>; 150 linux,input-value = <0xffffffff>; /* -1 */ 151 gpios = <&pio 7 25 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PH25 */ 152 }; 153 154 dpad-down { 155 label = "DPad Down"; 156 linux,code = <ABS_HAT0Y>; 157 linux,input-type = <EV_ABS>; 158 linux,input-value = <1>; 159 gpios = <&pio 7 26 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PH26 */ 160 }; 161 162 x { 163 label = "Button X"; 164 linux,code = <BTN_X>; 165 gpios = <&pio 0 16 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA16 */ 166 }; 167 168 y { 169 label = "Button Y"; 170 linux,code = <BTN_Y>; 171 gpios = <&pio 0 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA14 */ 172 }; 173 174 a { 175 label = "Button A"; 176 linux,code = <BTN_A>; 177 gpios = <&pio 0 17 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA17 */ 178 }; 179 180 b { 181 label = "Button B"; 182 linux,code = <BTN_B>; 183 gpios = <&pio 0 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA15 */ 184 }; 185 186 select { 187 label = "Select Button"; 188 linux,code = <BTN_SELECT>; 189 gpios = <&pio 0 11 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA11 */ 190 }; 191 192 start { 193 label = "Start Button"; 194 linux,code = <BTN_START>; 195 gpios = <&pio 0 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA12 */ 196 }; 197 198 top-left { 199 label = "Top Left Button"; 200 linux,code = <BTN_TL>; 201 gpios = <&pio 7 22 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PH22 */ 202 }; 203 204 top-right { 205 label = "Top Right Button"; 206 linux,code = <BTN_TR>; 207 gpios = <&pio 0 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PA13 */ 208 }; 209 }; 210}; 211 212&cpu0 { 213 cpu-supply = <®_dcdc2>; 214}; 215 216&ehci1 { 217 status = "okay"; 218}; 219 220&i2c0 { 221 status = "okay"; 222 223 axp209: pmic@34 { 224 reg = <0x34>; 225 interrupts = <0>; 226 }; 227}; 228 229#include "axp209.dtsi" 230 231&i2c1 { 232 status = "okay"; 233 234 /* Accelerometer */ 235 bma250@18 { 236 compatible = "bosch,bma250"; 237 reg = <0x18>; 238 interrupt-parent = <&pio>; 239 interrupts = <7 0 IRQ_TYPE_EDGE_RISING>; /* PH0 / EINT0 */ 240 }; 241}; 242 243&i2c2 { 244 status = "okay"; 245 246 ft5406ee8: touchscreen@38 { 247 compatible = "edt,edt-ft5406"; 248 reg = <0x38>; 249 interrupt-parent = <&pio>; 250 interrupts = <7 21 IRQ_TYPE_EDGE_FALLING>; 251 touchscreen-size-x = <800>; 252 touchscreen-size-y = <480>; 253 }; 254}; 255 256&lradc { 257 vref-supply = <®_ldo2>; 258 status = "okay"; 259 260 button-200 { 261 label = "Menu"; 262 linux,code = <KEY_MENU>; 263 channel = <0>; 264 voltage = <200000>; 265 }; 266 267 button-600 { 268 label = "Volume Up"; 269 linux,code = <KEY_VOLUMEUP>; 270 channel = <0>; 271 voltage = <600000>; 272 }; 273 274 button-800 { 275 label = "Volume Down"; 276 linux,code = <KEY_VOLUMEDOWN>; 277 channel = <0>; 278 voltage = <800000>; 279 }; 280 281 button-1000 { 282 label = "Home"; 283 linux,code = <KEY_HOMEPAGE>; 284 channel = <0>; 285 voltage = <1000000>; 286 }; 287 288 button-1200 { 289 label = "Esc"; 290 linux,code = <KEY_ESC>; 291 channel = <0>; 292 voltage = <1200000>; 293 }; 294}; 295 296&mmc0 { 297 vmmc-supply = <®_vcc3v3>; 298 bus-width = <4>; 299 cd-gpios = <&pio 7 1 GPIO_ACTIVE_LOW>; /* PH1 */ 300 status = "okay"; 301}; 302 303&otg_sram { 304 status = "okay"; 305}; 306 307®_dcdc2 { 308 regulator-always-on; 309 regulator-min-microvolt = <1000000>; 310 regulator-max-microvolt = <1400000>; 311 regulator-name = "vdd-cpu"; 312}; 313 314®_dcdc3 { 315 regulator-always-on; 316 regulator-min-microvolt = <1250000>; 317 regulator-max-microvolt = <1250000>; 318 regulator-name = "vdd-int-dll"; 319}; 320 321®_ldo1 { 322 regulator-name = "vdd-rtc"; 323}; 324 325®_ldo2 { 326 regulator-always-on; 327 regulator-min-microvolt = <3000000>; 328 regulator-max-microvolt = <3000000>; 329 regulator-name = "avcc"; 330}; 331 332®_usb0_vbus { 333 status = "okay"; 334}; 335 336®_usb2_vbus { 337 status = "okay"; 338}; 339 340&uart0 { 341 pinctrl-names = "default"; 342 pinctrl-0 = <&uart0_pb_pins>; 343 status = "okay"; 344}; 345 346&usb_otg { 347 dr_mode = "otg"; 348 status = "okay"; 349}; 350 351&usbphy { 352 usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */ 353 usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */ 354 usb0_vbus-supply = <®_usb0_vbus>; 355 usb2_vbus-supply = <®_usb2_vbus>; 356 status = "okay"; 357}; 358