1deed69d6SHans de Goede/* 2deed69d6SHans de Goede * Copyright 2015 Hans de Goede <hdegoede@redhat.com> 3deed69d6SHans de Goede * 4deed69d6SHans de Goede * This file is dual-licensed: you can use it either under the terms 5deed69d6SHans de Goede * of the GPL or the X11 license, at your option. Note that this dual 6deed69d6SHans de Goede * licensing only applies to this file, and not this project as a 7deed69d6SHans de Goede * whole. 8deed69d6SHans de Goede * 9deed69d6SHans de Goede * a) This file is free software; you can redistribute it and/or 10deed69d6SHans de Goede * modify it under the terms of the GNU General Public License as 11deed69d6SHans de Goede * published by the Free Software Foundation; either version 2 of the 12deed69d6SHans de Goede * License, or (at your option) any later version. 13deed69d6SHans de Goede * 14deed69d6SHans de Goede * This file is distributed in the hope that it will be useful, 15deed69d6SHans de Goede * but WITHOUT ANY WARRANTY; without even the implied warranty of 16deed69d6SHans de Goede * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17deed69d6SHans de Goede * GNU General Public License for more details. 18deed69d6SHans de Goede * 19deed69d6SHans de Goede * Or, alternatively, 20deed69d6SHans de Goede * 21deed69d6SHans de Goede * b) Permission is hereby granted, free of charge, to any person 22deed69d6SHans de Goede * obtaining a copy of this software and associated documentation 23deed69d6SHans de Goede * files (the "Software"), to deal in the Software without 24deed69d6SHans de Goede * restriction, including without limitation the rights to use, 25deed69d6SHans de Goede * copy, modify, merge, publish, distribute, sublicense, and/or 26deed69d6SHans de Goede * sell copies of the Software, and to permit persons to whom the 27deed69d6SHans de Goede * Software is furnished to do so, subject to the following 28deed69d6SHans de Goede * conditions: 29deed69d6SHans de Goede * 30deed69d6SHans de Goede * The above copyright notice and this permission notice shall be 31deed69d6SHans de Goede * included in all copies or substantial portions of the Software. 32deed69d6SHans de Goede * 33deed69d6SHans de Goede * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34deed69d6SHans de Goede * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35deed69d6SHans de Goede * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36deed69d6SHans de Goede * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37deed69d6SHans de Goede * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38deed69d6SHans de Goede * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39deed69d6SHans de Goede * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40deed69d6SHans de Goede * OTHER DEALINGS IN THE SOFTWARE. 41deed69d6SHans de Goede */ 42deed69d6SHans de Goede 43deed69d6SHans de Goede/dts-v1/; 44deed69d6SHans de Goede#include "sun4i-a10.dtsi" 45deed69d6SHans de Goede#include "sunxi-common-regulators.dtsi" 46deed69d6SHans de Goede#include <dt-bindings/gpio/gpio.h> 47deed69d6SHans de Goede#include <dt-bindings/input/input.h> 48deed69d6SHans de Goede#include <dt-bindings/interrupt-controller/irq.h> 49deed69d6SHans de Goede 50deed69d6SHans de Goede/ { 51deed69d6SHans de Goede model = "iNet-9F Rev 03"; 52deed69d6SHans de Goede compatible = "inet-tek,inet9f-rev03", "allwinner,sun4i-a10"; 53deed69d6SHans de Goede 54deed69d6SHans de Goede aliases { 55deed69d6SHans de Goede serial0 = &uart0; 56deed69d6SHans de Goede }; 57deed69d6SHans de Goede 58deed69d6SHans de Goede chosen { 59deed69d6SHans de Goede stdout-path = "serial0:115200n8"; 60deed69d6SHans de Goede }; 6180e5f83cSHans de Goede 62*3c92cca3SJagan Teki gpio-keys { 6380e5f83cSHans de Goede compatible = "gpio-keys-polled"; 6480e5f83cSHans de Goede pinctrl-names = "default"; 6580e5f83cSHans de Goede pinctrl-0 = <&key_pins_inet9f>; 6680e5f83cSHans de Goede #address-cells = <1>; 6780e5f83cSHans de Goede #size-cells = <0>; 6880e5f83cSHans de Goede poll-interval = <20>; 6980e5f83cSHans de Goede 70*3c92cca3SJagan Teki left-joystick-left { 7180e5f83cSHans de Goede label = "Left Joystick Left"; 7280e5f83cSHans de Goede linux,code = <ABS_X>; 7380e5f83cSHans de Goede linux,input-type = <EV_ABS>; 7480e5f83cSHans de Goede linux,input-value = <0xffffffff>; /* -1 */ 7580e5f83cSHans de Goede gpios = <&pio 0 6 GPIO_ACTIVE_LOW>; /* PA6 */ 7680e5f83cSHans de Goede }; 7780e5f83cSHans de Goede 78*3c92cca3SJagan Teki left-joystick-right { 7980e5f83cSHans de Goede label = "Left Joystick Right"; 8080e5f83cSHans de Goede linux,code = <ABS_X>; 8180e5f83cSHans de Goede linux,input-type = <EV_ABS>; 8280e5f83cSHans de Goede linux,input-value = <1>; 8380e5f83cSHans de Goede gpios = <&pio 0 5 GPIO_ACTIVE_LOW>; /* PA5 */ 8480e5f83cSHans de Goede }; 8580e5f83cSHans de Goede 86*3c92cca3SJagan Teki left-joystick-up { 8780e5f83cSHans de Goede label = "Left Joystick Up"; 8880e5f83cSHans de Goede linux,code = <ABS_Y>; 8980e5f83cSHans de Goede linux,input-type = <EV_ABS>; 9080e5f83cSHans de Goede linux,input-value = <0xffffffff>; /* -1 */ 9180e5f83cSHans de Goede gpios = <&pio 0 8 GPIO_ACTIVE_LOW>; /* PA8 */ 9280e5f83cSHans de Goede }; 9380e5f83cSHans de Goede 94*3c92cca3SJagan Teki left-joystick-down { 9580e5f83cSHans de Goede label = "Left Joystick Down"; 9680e5f83cSHans de Goede linux,code = <ABS_Y>; 9780e5f83cSHans de Goede linux,input-type = <EV_ABS>; 9880e5f83cSHans de Goede linux,input-value = <1>; 9980e5f83cSHans de Goede gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */ 10080e5f83cSHans de Goede }; 10180e5f83cSHans de Goede 102*3c92cca3SJagan Teki right-joystick-left { 10380e5f83cSHans de Goede label = "Right Joystick Left"; 10480e5f83cSHans de Goede linux,code = <ABS_Z>; 10580e5f83cSHans de Goede linux,input-type = <EV_ABS>; 10680e5f83cSHans de Goede linux,input-value = <0xffffffff>; /* -1 */ 10780e5f83cSHans de Goede gpios = <&pio 0 1 GPIO_ACTIVE_LOW>; /* PA1 */ 10880e5f83cSHans de Goede }; 10980e5f83cSHans de Goede 110*3c92cca3SJagan Teki right-joystick-right { 11180e5f83cSHans de Goede label = "Right Joystick Right"; 11280e5f83cSHans de Goede linux,code = <ABS_Z>; 11380e5f83cSHans de Goede linux,input-type = <EV_ABS>; 11480e5f83cSHans de Goede linux,input-value = <1>; 11580e5f83cSHans de Goede gpios = <&pio 0 0 GPIO_ACTIVE_LOW>; /* PA0 */ 11680e5f83cSHans de Goede }; 11780e5f83cSHans de Goede 118*3c92cca3SJagan Teki right-joystick-up { 11980e5f83cSHans de Goede label = "Right Joystick Up"; 12080e5f83cSHans de Goede linux,code = <ABS_RZ>; 12180e5f83cSHans de Goede linux,input-type = <EV_ABS>; 12280e5f83cSHans de Goede linux,input-value = <0xffffffff>; /* -1 */ 12380e5f83cSHans de Goede gpios = <&pio 0 3 GPIO_ACTIVE_LOW>; /* PA3 */ 12480e5f83cSHans de Goede }; 12580e5f83cSHans de Goede 126*3c92cca3SJagan Teki right-joystick-down { 12780e5f83cSHans de Goede label = "Right Joystick Down"; 12880e5f83cSHans de Goede linux,code = <ABS_RZ>; 12980e5f83cSHans de Goede linux,input-type = <EV_ABS>; 13080e5f83cSHans de Goede linux,input-value = <1>; 13180e5f83cSHans de Goede gpios = <&pio 0 4 GPIO_ACTIVE_LOW>; /* PA4 */ 13280e5f83cSHans de Goede }; 13380e5f83cSHans de Goede 134*3c92cca3SJagan Teki dpad-left { 13580e5f83cSHans de Goede label = "DPad Left"; 13680e5f83cSHans de Goede linux,code = <ABS_HAT0X>; 13780e5f83cSHans de Goede linux,input-type = <EV_ABS>; 13880e5f83cSHans de Goede linux,input-value = <0xffffffff>; /* -1 */ 13980e5f83cSHans de Goede gpios = <&pio 7 23 GPIO_ACTIVE_LOW>; /* PH23 */ 14080e5f83cSHans de Goede }; 14180e5f83cSHans de Goede 142*3c92cca3SJagan Teki dpad-right { 14380e5f83cSHans de Goede label = "DPad Right"; 14480e5f83cSHans de Goede linux,code = <ABS_HAT0X>; 14580e5f83cSHans de Goede linux,input-type = <EV_ABS>; 14680e5f83cSHans de Goede linux,input-value = <1>; 14780e5f83cSHans de Goede gpios = <&pio 7 24 GPIO_ACTIVE_LOW>; /* PH24 */ 14880e5f83cSHans de Goede }; 14980e5f83cSHans de Goede 150*3c92cca3SJagan Teki dpad-up { 15180e5f83cSHans de Goede label = "DPad Up"; 15280e5f83cSHans de Goede linux,code = <ABS_HAT0Y>; 15380e5f83cSHans de Goede linux,input-type = <EV_ABS>; 15480e5f83cSHans de Goede linux,input-value = <0xffffffff>; /* -1 */ 15580e5f83cSHans de Goede gpios = <&pio 7 25 GPIO_ACTIVE_LOW>; /* PH25 */ 15680e5f83cSHans de Goede }; 15780e5f83cSHans de Goede 158*3c92cca3SJagan Teki dpad-down { 15980e5f83cSHans de Goede label = "DPad Down"; 16080e5f83cSHans de Goede linux,code = <ABS_HAT0Y>; 16180e5f83cSHans de Goede linux,input-type = <EV_ABS>; 16280e5f83cSHans de Goede linux,input-value = <1>; 16380e5f83cSHans de Goede gpios = <&pio 7 26 GPIO_ACTIVE_LOW>; /* PH26 */ 16480e5f83cSHans de Goede }; 16580e5f83cSHans de Goede 166*3c92cca3SJagan Teki x { 16780e5f83cSHans de Goede label = "Button X"; 16880e5f83cSHans de Goede linux,code = <BTN_X>; 16980e5f83cSHans de Goede gpios = <&pio 0 16 GPIO_ACTIVE_LOW>; /* PA16 */ 17080e5f83cSHans de Goede }; 17180e5f83cSHans de Goede 172*3c92cca3SJagan Teki y { 17380e5f83cSHans de Goede label = "Button Y"; 17480e5f83cSHans de Goede linux,code = <BTN_Y>; 17580e5f83cSHans de Goede gpios = <&pio 0 14 GPIO_ACTIVE_LOW>; /* PA14 */ 17680e5f83cSHans de Goede }; 17780e5f83cSHans de Goede 178*3c92cca3SJagan Teki a { 17980e5f83cSHans de Goede label = "Button A"; 18080e5f83cSHans de Goede linux,code = <BTN_A>; 18180e5f83cSHans de Goede gpios = <&pio 0 17 GPIO_ACTIVE_LOW>; /* PA17 */ 18280e5f83cSHans de Goede }; 18380e5f83cSHans de Goede 184*3c92cca3SJagan Teki b { 18580e5f83cSHans de Goede label = "Button B"; 18680e5f83cSHans de Goede linux,code = <BTN_B>; 18780e5f83cSHans de Goede gpios = <&pio 0 15 GPIO_ACTIVE_LOW>; /* PA15 */ 18880e5f83cSHans de Goede }; 18980e5f83cSHans de Goede 190*3c92cca3SJagan Teki select { 19180e5f83cSHans de Goede label = "Select Button"; 19280e5f83cSHans de Goede linux,code = <BTN_SELECT>; 19380e5f83cSHans de Goede gpios = <&pio 0 11 GPIO_ACTIVE_LOW>; /* PA11 */ 19480e5f83cSHans de Goede }; 19580e5f83cSHans de Goede 196*3c92cca3SJagan Teki start { 19780e5f83cSHans de Goede label = "Start Button"; 19880e5f83cSHans de Goede linux,code = <BTN_START>; 19980e5f83cSHans de Goede gpios = <&pio 0 12 GPIO_ACTIVE_LOW>; /* PA12 */ 20080e5f83cSHans de Goede }; 20180e5f83cSHans de Goede 202*3c92cca3SJagan Teki top-left { 20380e5f83cSHans de Goede label = "Top Left Button"; 20480e5f83cSHans de Goede linux,code = <BTN_TL>; 20580e5f83cSHans de Goede gpios = <&pio 7 22 GPIO_ACTIVE_LOW>; /* PH22 */ 20680e5f83cSHans de Goede }; 20780e5f83cSHans de Goede 208*3c92cca3SJagan Teki top-right { 20980e5f83cSHans de Goede label = "Top Right Button"; 21080e5f83cSHans de Goede linux,code = <BTN_TR>; 21180e5f83cSHans de Goede gpios = <&pio 0 13 GPIO_ACTIVE_LOW>; /* PA13 */ 21280e5f83cSHans de Goede }; 21380e5f83cSHans de Goede }; 214deed69d6SHans de Goede}; 215deed69d6SHans de Goede 216deed69d6SHans de Goede&cpu0 { 217deed69d6SHans de Goede cpu-supply = <®_dcdc2>; 218deed69d6SHans de Goede}; 219deed69d6SHans de Goede 220deed69d6SHans de Goede&ehci1 { 221deed69d6SHans de Goede status = "okay"; 222deed69d6SHans de Goede}; 223deed69d6SHans de Goede 224deed69d6SHans de Goede&i2c0 { 225deed69d6SHans de Goede status = "okay"; 226deed69d6SHans de Goede 227deed69d6SHans de Goede axp209: pmic@34 { 228deed69d6SHans de Goede reg = <0x34>; 229deed69d6SHans de Goede interrupts = <0>; 230deed69d6SHans de Goede }; 231deed69d6SHans de Goede}; 232deed69d6SHans de Goede 233deed69d6SHans de Goede#include "axp209.dtsi" 234deed69d6SHans de Goede 235deed69d6SHans de Goede&i2c1 { 236deed69d6SHans de Goede status = "okay"; 23780e5f83cSHans de Goede 23880e5f83cSHans de Goede /* Accelerometer */ 23980e5f83cSHans de Goede bma250@18 { 24080e5f83cSHans de Goede compatible = "bosch,bma250"; 24180e5f83cSHans de Goede reg = <0x18>; 24280e5f83cSHans de Goede interrupt-parent = <&pio>; 24380e5f83cSHans de Goede interrupts = <7 0 IRQ_TYPE_EDGE_RISING>; /* PH0 / EINT0 */ 24480e5f83cSHans de Goede }; 245deed69d6SHans de Goede}; 246deed69d6SHans de Goede 247deed69d6SHans de Goede&i2c2 { 248deed69d6SHans de Goede status = "okay"; 24980e5f83cSHans de Goede 25080e5f83cSHans de Goede ft5406ee8: touchscreen@38 { 25180e5f83cSHans de Goede compatible = "edt,edt-ft5406"; 25280e5f83cSHans de Goede reg = <0x38>; 25380e5f83cSHans de Goede interrupt-parent = <&pio>; 25480e5f83cSHans de Goede interrupts = <7 21 IRQ_TYPE_EDGE_FALLING>; 25580e5f83cSHans de Goede touchscreen-size-x = <800>; 25680e5f83cSHans de Goede touchscreen-size-y = <480>; 25780e5f83cSHans de Goede }; 258deed69d6SHans de Goede}; 259deed69d6SHans de Goede 260deed69d6SHans de Goede&lradc { 261deed69d6SHans de Goede vref-supply = <®_ldo2>; 262deed69d6SHans de Goede status = "okay"; 263deed69d6SHans de Goede 264*3c92cca3SJagan Teki button-200 { 265deed69d6SHans de Goede label = "Menu"; 266deed69d6SHans de Goede linux,code = <KEY_MENU>; 267deed69d6SHans de Goede channel = <0>; 268deed69d6SHans de Goede voltage = <200000>; 269deed69d6SHans de Goede }; 270deed69d6SHans de Goede 271*3c92cca3SJagan Teki button-600 { 272deed69d6SHans de Goede label = "Volume Up"; 273deed69d6SHans de Goede linux,code = <KEY_VOLUMEUP>; 274deed69d6SHans de Goede channel = <0>; 275deed69d6SHans de Goede voltage = <600000>; 276deed69d6SHans de Goede }; 277deed69d6SHans de Goede 278*3c92cca3SJagan Teki button-800 { 279deed69d6SHans de Goede label = "Volume Down"; 280deed69d6SHans de Goede linux,code = <KEY_VOLUMEDOWN>; 281deed69d6SHans de Goede channel = <0>; 282deed69d6SHans de Goede voltage = <800000>; 283deed69d6SHans de Goede }; 284deed69d6SHans de Goede 285*3c92cca3SJagan Teki button-1000 { 286deed69d6SHans de Goede label = "Home"; 287deed69d6SHans de Goede linux,code = <KEY_HOMEPAGE>; 288deed69d6SHans de Goede channel = <0>; 289deed69d6SHans de Goede voltage = <1000000>; 290deed69d6SHans de Goede }; 291deed69d6SHans de Goede 292*3c92cca3SJagan Teki button-1200 { 293deed69d6SHans de Goede label = "Esc"; 294deed69d6SHans de Goede linux,code = <KEY_ESC>; 295deed69d6SHans de Goede channel = <0>; 296deed69d6SHans de Goede voltage = <1200000>; 297deed69d6SHans de Goede }; 298deed69d6SHans de Goede}; 299deed69d6SHans de Goede 300deed69d6SHans de Goede&mmc0 { 301deed69d6SHans de Goede vmmc-supply = <®_vcc3v3>; 302deed69d6SHans de Goede bus-width = <4>; 303*3c92cca3SJagan Teki cd-gpios = <&pio 7 1 GPIO_ACTIVE_LOW>; /* PH1 */ 304deed69d6SHans de Goede status = "okay"; 305deed69d6SHans de Goede}; 306deed69d6SHans de Goede 307deed69d6SHans de Goede&otg_sram { 308deed69d6SHans de Goede status = "okay"; 309deed69d6SHans de Goede}; 310deed69d6SHans de Goede 311deed69d6SHans de Goede&pio { 312*3c92cca3SJagan Teki key_pins_inet9f: key-pins { 313*3c92cca3SJagan Teki pins = "PA0", "PA1", "PA3", "PA4", 31480e5f83cSHans de Goede "PA5", "PA6", "PA8", "PA9", 31580e5f83cSHans de Goede "PA11", "PA12", "PA13", 31680e5f83cSHans de Goede "PA14", "PA15", "PA16", "PA17", 31780e5f83cSHans de Goede "PH22", "PH23", "PH24", "PH25", "PH26"; 318*3c92cca3SJagan Teki function = "gpio_in"; 319*3c92cca3SJagan Teki bias-pull-up; 32080e5f83cSHans de Goede }; 32180e5f83cSHans de Goede 322*3c92cca3SJagan Teki usb0_id_detect_pin: usb0-id-detect-pin { 323*3c92cca3SJagan Teki pins = "PH4"; 324*3c92cca3SJagan Teki function = "gpio_in"; 325*3c92cca3SJagan Teki bias-pull-up; 326deed69d6SHans de Goede }; 327deed69d6SHans de Goede 328*3c92cca3SJagan Teki usb0_vbus_detect_pin: usb0-vbus-detect-pin { 329*3c92cca3SJagan Teki pins = "PH5"; 330*3c92cca3SJagan Teki function = "gpio_in"; 331*3c92cca3SJagan Teki bias-pull-down; 332deed69d6SHans de Goede }; 333deed69d6SHans de Goede}; 334deed69d6SHans de Goede 335deed69d6SHans de Goede®_dcdc2 { 336deed69d6SHans de Goede regulator-always-on; 337deed69d6SHans de Goede regulator-min-microvolt = <1000000>; 338deed69d6SHans de Goede regulator-max-microvolt = <1400000>; 339deed69d6SHans de Goede regulator-name = "vdd-cpu"; 340deed69d6SHans de Goede}; 341deed69d6SHans de Goede 342deed69d6SHans de Goede®_dcdc3 { 343deed69d6SHans de Goede regulator-always-on; 344deed69d6SHans de Goede regulator-min-microvolt = <1250000>; 345deed69d6SHans de Goede regulator-max-microvolt = <1250000>; 346deed69d6SHans de Goede regulator-name = "vdd-int-dll"; 347deed69d6SHans de Goede}; 348deed69d6SHans de Goede 349deed69d6SHans de Goede®_ldo1 { 350deed69d6SHans de Goede regulator-name = "vdd-rtc"; 351deed69d6SHans de Goede}; 352deed69d6SHans de Goede 353deed69d6SHans de Goede®_ldo2 { 354deed69d6SHans de Goede regulator-always-on; 355deed69d6SHans de Goede regulator-min-microvolt = <3000000>; 356deed69d6SHans de Goede regulator-max-microvolt = <3000000>; 357deed69d6SHans de Goede regulator-name = "avcc"; 358deed69d6SHans de Goede}; 359deed69d6SHans de Goede 360deed69d6SHans de Goede®_usb0_vbus { 361deed69d6SHans de Goede status = "okay"; 362deed69d6SHans de Goede}; 363deed69d6SHans de Goede 364deed69d6SHans de Goede®_usb2_vbus { 365deed69d6SHans de Goede status = "okay"; 366deed69d6SHans de Goede}; 367deed69d6SHans de Goede 368deed69d6SHans de Goede&uart0 { 369deed69d6SHans de Goede pinctrl-names = "default"; 370*3c92cca3SJagan Teki pinctrl-0 = <&uart0_pb_pins>; 371deed69d6SHans de Goede status = "okay"; 372deed69d6SHans de Goede}; 373deed69d6SHans de Goede 374deed69d6SHans de Goede&usb_otg { 375deed69d6SHans de Goede dr_mode = "otg"; 376deed69d6SHans de Goede status = "okay"; 377deed69d6SHans de Goede}; 378deed69d6SHans de Goede 379deed69d6SHans de Goede&usbphy { 380deed69d6SHans de Goede pinctrl-names = "default"; 381deed69d6SHans de Goede pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; 382deed69d6SHans de Goede usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ 383deed69d6SHans de Goede usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ 384deed69d6SHans de Goede usb0_vbus-supply = <®_usb0_vbus>; 385deed69d6SHans de Goede usb2_vbus-supply = <®_usb2_vbus>; 386deed69d6SHans de Goede status = "okay"; 387deed69d6SHans de Goede}; 388