1af79c4f1SHans de Goede/* 2*80e5f83cSHans de Goede * Copyright 2014 Siarhei Siamashka <siarhei.siamashka@gmail.com> 3*80e5f83cSHans de Goede * Copyright 2015 Karsten Merker <merker@debian.org> 4*80e5f83cSHans de Goede * Copyright 2015 Chen-Yu Tsai <wens@csie.org> 5af79c4f1SHans de Goede * 6*80e5f83cSHans de Goede * This file is dual-licensed: you can use it either under the terms 7*80e5f83cSHans de Goede * of the GPL or the X11 license, at your option. Note that this dual 8*80e5f83cSHans de Goede * licensing only applies to this file, and not this project as a 9*80e5f83cSHans de Goede * whole. 10af79c4f1SHans de Goede * 11*80e5f83cSHans de Goede * a) This file is free software; you can redistribute it and/or 12*80e5f83cSHans de Goede * modify it under the terms of the GNU General Public License as 13*80e5f83cSHans de Goede * published by the Free Software Foundation; either version 2 of the 14*80e5f83cSHans de Goede * License, or (at your option) any later version. 15*80e5f83cSHans de Goede * 16*80e5f83cSHans de Goede * This file is distributed in the hope that it will be useful, 17*80e5f83cSHans de Goede * but WITHOUT ANY WARRANTY; without even the implied warranty of 18*80e5f83cSHans de Goede * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19*80e5f83cSHans de Goede * GNU General Public License for more details. 20*80e5f83cSHans de Goede * 21*80e5f83cSHans de Goede * Or, alternatively, 22*80e5f83cSHans de Goede * 23*80e5f83cSHans de Goede * b) Permission is hereby granted, free of charge, to any person 24*80e5f83cSHans de Goede * obtaining a copy of this software and associated documentation 25*80e5f83cSHans de Goede * files (the "Software"), to deal in the Software without 26*80e5f83cSHans de Goede * restriction, including without limitation the rights to use, 27*80e5f83cSHans de Goede * copy, modify, merge, publish, distribute, sublicense, and/or 28*80e5f83cSHans de Goede * sell copies of the Software, and to permit persons to whom the 29*80e5f83cSHans de Goede * Software is furnished to do so, subject to the following 30*80e5f83cSHans de Goede * conditions: 31*80e5f83cSHans de Goede * 32*80e5f83cSHans de Goede * The above copyright notice and this permission notice shall be 33*80e5f83cSHans de Goede * included in all copies or substantial portions of the Software. 34*80e5f83cSHans de Goede * 35*80e5f83cSHans de Goede * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 36*80e5f83cSHans de Goede * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 37*80e5f83cSHans de Goede * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 38*80e5f83cSHans de Goede * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 39*80e5f83cSHans de Goede * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 40*80e5f83cSHans de Goede * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 41*80e5f83cSHans de Goede * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 42*80e5f83cSHans de Goede * OTHER DEALINGS IN THE SOFTWARE. 43af79c4f1SHans de Goede */ 44af79c4f1SHans de Goede 45af79c4f1SHans de Goede/dts-v1/; 46af79c4f1SHans de Goede#include "sun6i-a31s.dtsi" 47*80e5f83cSHans de Goede#include "sunxi-common-regulators.dtsi" 48*80e5f83cSHans de Goede 49*80e5f83cSHans de Goede#include <dt-bindings/gpio/gpio.h> 50*80e5f83cSHans de Goede#include <dt-bindings/input/input.h> 51*80e5f83cSHans de Goede#include <dt-bindings/pinctrl/sun4i-a10.h> 52af79c4f1SHans de Goede 53af79c4f1SHans de Goede/ { 54*80e5f83cSHans de Goede model = "MSI Primo81 tablet"; 55af79c4f1SHans de Goede compatible = "msi,primo81", "allwinner,sun6i-a31s"; 56af79c4f1SHans de Goede}; 57af79c4f1SHans de Goede 58*80e5f83cSHans de Goede&cpu0 { 59*80e5f83cSHans de Goede cpu-supply = <®_dcdc3>; 60*80e5f83cSHans de Goede}; 61*80e5f83cSHans de Goede 62*80e5f83cSHans de Goede&ehci0 { 63*80e5f83cSHans de Goede /* rtl8188etv wifi is connected here */ 64*80e5f83cSHans de Goede status = "okay"; 65*80e5f83cSHans de Goede}; 66*80e5f83cSHans de Goede 67*80e5f83cSHans de Goede&i2c0 { 68*80e5f83cSHans de Goede /* pull-ups and device VDDIO use AXP221 DLDO3 */ 69af79c4f1SHans de Goede pinctrl-names = "default"; 70*80e5f83cSHans de Goede pinctrl-0 = <&i2c0_pins_a>; 71*80e5f83cSHans de Goede status = "failed"; 72*80e5f83cSHans de Goede}; 73*80e5f83cSHans de Goede 74*80e5f83cSHans de Goede&i2c1 { 75*80e5f83cSHans de Goede pinctrl-names = "default"; 76*80e5f83cSHans de Goede pinctrl-0 = <&i2c1_pins_a>; 77*80e5f83cSHans de Goede status = "okay"; 78*80e5f83cSHans de Goede 79*80e5f83cSHans de Goede ctp@5d { 80*80e5f83cSHans de Goede pinctrl-names = "default"; 81*80e5f83cSHans de Goede pinctrl-0 = <>911_int_primo81>; 82*80e5f83cSHans de Goede compatible = "goodix,gt911"; 83*80e5f83cSHans de Goede reg = <0x5d>; 84*80e5f83cSHans de Goede interrupt-parent = <&pio>; 85*80e5f83cSHans de Goede interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */ 86*80e5f83cSHans de Goede touchscreen-swapped-x-y; 87*80e5f83cSHans de Goede }; 88*80e5f83cSHans de Goede}; 89*80e5f83cSHans de Goede 90*80e5f83cSHans de Goede&i2c2 { 91*80e5f83cSHans de Goede pinctrl-names = "default"; 92*80e5f83cSHans de Goede pinctrl-0 = <&i2c2_pins_a>; 93*80e5f83cSHans de Goede status = "okay"; 94*80e5f83cSHans de Goede 95*80e5f83cSHans de Goede accelerometer@1c { 96*80e5f83cSHans de Goede pinctrl-names = "default"; 97*80e5f83cSHans de Goede pinctrl-0 = <&mma8452_int_primo81>; 98*80e5f83cSHans de Goede compatible = "fsl,mma8452"; 99*80e5f83cSHans de Goede reg = <0x1c>; 100*80e5f83cSHans de Goede interrupt-parent = <&pio>; 101*80e5f83cSHans de Goede interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>; /* PA9 */ 102*80e5f83cSHans de Goede #io-channel-cells = <1>; 103*80e5f83cSHans de Goede }; 104*80e5f83cSHans de Goede}; 105*80e5f83cSHans de Goede 106*80e5f83cSHans de Goede&lradc { 107*80e5f83cSHans de Goede vref-supply = <®_aldo3>; 108*80e5f83cSHans de Goede status = "okay"; 109*80e5f83cSHans de Goede 110*80e5f83cSHans de Goede button@158 { 111*80e5f83cSHans de Goede label = "Volume Up"; 112*80e5f83cSHans de Goede linux,code = <KEY_VOLUMEUP>; 113*80e5f83cSHans de Goede channel = <0>; 114*80e5f83cSHans de Goede voltage = <158730>; 115*80e5f83cSHans de Goede }; 116*80e5f83cSHans de Goede 117*80e5f83cSHans de Goede button@349 { 118*80e5f83cSHans de Goede label = "Volume Down"; 119*80e5f83cSHans de Goede linux,code = <KEY_VOLUMEDOWN>; 120*80e5f83cSHans de Goede channel = <0>; 121*80e5f83cSHans de Goede voltage = <349206>; 122*80e5f83cSHans de Goede }; 123*80e5f83cSHans de Goede}; 124*80e5f83cSHans de Goede 125*80e5f83cSHans de Goede&mmc0 { 126*80e5f83cSHans de Goede pinctrl-names = "default"; 127*80e5f83cSHans de Goede pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_primo81>; 128*80e5f83cSHans de Goede vmmc-supply = <®_dcdc1>; 129*80e5f83cSHans de Goede bus-width = <4>; 130*80e5f83cSHans de Goede cd-gpios = <&pio 0 8 GPIO_ACTIVE_HIGH>; /* PA8 */ 131*80e5f83cSHans de Goede cd-inverted; 132*80e5f83cSHans de Goede status = "okay"; 133*80e5f83cSHans de Goede}; 134*80e5f83cSHans de Goede 135*80e5f83cSHans de Goede&pio { 136*80e5f83cSHans de Goede gt911_int_primo81: gt911_int_pin@0 { 137*80e5f83cSHans de Goede allwinner,pins = "PA3"; 138*80e5f83cSHans de Goede allwinner,function = "gpio_in"; 139*80e5f83cSHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 140*80e5f83cSHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 141*80e5f83cSHans de Goede }; 142*80e5f83cSHans de Goede 143*80e5f83cSHans de Goede mma8452_int_primo81: mma8452_int_pin@0 { 144*80e5f83cSHans de Goede allwinner,pins = "PA9"; 145*80e5f83cSHans de Goede allwinner,function = "gpio_in"; 146*80e5f83cSHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 147*80e5f83cSHans de Goede allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 148*80e5f83cSHans de Goede }; 149*80e5f83cSHans de Goede 150*80e5f83cSHans de Goede mmc0_cd_pin_primo81: mmc0_cd_pin@0 { 151*80e5f83cSHans de Goede allwinner,pins = "PA8"; 152*80e5f83cSHans de Goede allwinner,function = "gpio_in"; 153*80e5f83cSHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 154*80e5f83cSHans de Goede allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 155*80e5f83cSHans de Goede }; 156*80e5f83cSHans de Goede}; 157*80e5f83cSHans de Goede 158*80e5f83cSHans de Goede&p2wi { 159*80e5f83cSHans de Goede status = "okay"; 160*80e5f83cSHans de Goede 161*80e5f83cSHans de Goede axp22x: pmic@68 { 162*80e5f83cSHans de Goede compatible = "x-powers,axp221"; 163*80e5f83cSHans de Goede reg = <0x68>; 164*80e5f83cSHans de Goede interrupt-parent = <&nmi_intc>; 165*80e5f83cSHans de Goede interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 166*80e5f83cSHans de Goede }; 167*80e5f83cSHans de Goede}; 168*80e5f83cSHans de Goede 169*80e5f83cSHans de Goede#include "axp22x.dtsi" 170*80e5f83cSHans de Goede 171*80e5f83cSHans de Goede®_aldo3 { 172*80e5f83cSHans de Goede regulator-always-on; 173*80e5f83cSHans de Goede regulator-min-microvolt = <2700000>; 174*80e5f83cSHans de Goede regulator-max-microvolt = <3300000>; 175*80e5f83cSHans de Goede regulator-name = "avcc"; 176*80e5f83cSHans de Goede}; 177*80e5f83cSHans de Goede 178*80e5f83cSHans de Goede®_dc1sw { 179*80e5f83cSHans de Goede regulator-name = "vcc-lcd"; 180*80e5f83cSHans de Goede}; 181*80e5f83cSHans de Goede 182*80e5f83cSHans de Goede®_dc5ldo { 183*80e5f83cSHans de Goede regulator-min-microvolt = <700000>; 184*80e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 185*80e5f83cSHans de Goede regulator-name = "vdd-cpus"; /* This is an educated guess */ 186*80e5f83cSHans de Goede}; 187*80e5f83cSHans de Goede 188*80e5f83cSHans de Goede®_dcdc1 { 189*80e5f83cSHans de Goede regulator-always-on; 190*80e5f83cSHans de Goede regulator-min-microvolt = <3000000>; 191*80e5f83cSHans de Goede regulator-max-microvolt = <3000000>; 192*80e5f83cSHans de Goede regulator-name = "vcc-3v0"; 193*80e5f83cSHans de Goede}; 194*80e5f83cSHans de Goede 195*80e5f83cSHans de Goede®_dcdc2 { 196*80e5f83cSHans de Goede regulator-min-microvolt = <700000>; 197*80e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 198*80e5f83cSHans de Goede regulator-name = "vdd-gpu"; 199*80e5f83cSHans de Goede}; 200*80e5f83cSHans de Goede 201*80e5f83cSHans de Goede®_dcdc3 { 202*80e5f83cSHans de Goede regulator-always-on; 203*80e5f83cSHans de Goede regulator-min-microvolt = <700000>; 204*80e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 205*80e5f83cSHans de Goede regulator-name = "vdd-cpu"; 206*80e5f83cSHans de Goede}; 207*80e5f83cSHans de Goede 208*80e5f83cSHans de Goede®_dcdc4 { 209*80e5f83cSHans de Goede regulator-always-on; 210*80e5f83cSHans de Goede regulator-min-microvolt = <700000>; 211*80e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 212*80e5f83cSHans de Goede regulator-name = "vdd-sys-dll"; 213*80e5f83cSHans de Goede}; 214*80e5f83cSHans de Goede 215*80e5f83cSHans de Goede®_dcdc5 { 216*80e5f83cSHans de Goede regulator-always-on; 217*80e5f83cSHans de Goede regulator-min-microvolt = <1500000>; 218*80e5f83cSHans de Goede regulator-max-microvolt = <1500000>; 219*80e5f83cSHans de Goede regulator-name = "vcc-dram"; 220*80e5f83cSHans de Goede}; 221*80e5f83cSHans de Goede 222*80e5f83cSHans de Goede®_dldo1 { 223*80e5f83cSHans de Goede regulator-min-microvolt = <3300000>; 224*80e5f83cSHans de Goede regulator-max-microvolt = <3300000>; 225*80e5f83cSHans de Goede regulator-name = "vcc-wifi"; 226*80e5f83cSHans de Goede}; 227*80e5f83cSHans de Goede 228*80e5f83cSHans de Goede®_dldo3 { 229*80e5f83cSHans de Goede regulator-min-microvolt = <2800000>; 230*80e5f83cSHans de Goede regulator-max-microvolt = <2800000>; 231*80e5f83cSHans de Goede regulator-name = "vddio-csi"; 232*80e5f83cSHans de Goede}; 233*80e5f83cSHans de Goede 234*80e5f83cSHans de Goede®_eldo3 { 235*80e5f83cSHans de Goede regulator-min-microvolt = <1080000>; 236*80e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 237*80e5f83cSHans de Goede regulator-name = "vdd-mipi-bridge"; 238*80e5f83cSHans de Goede}; 239*80e5f83cSHans de Goede 240*80e5f83cSHans de Goede&simplefb_lcd { 241*80e5f83cSHans de Goede vcc-lcd-supply = <®_dc1sw>; 242*80e5f83cSHans de Goede vdd-mipi-bridge-supply = <®_eldo3>; 243*80e5f83cSHans de Goede}; 244*80e5f83cSHans de Goede 245*80e5f83cSHans de Goede&usb_otg { 246*80e5f83cSHans de Goede /* otg support requires support for AXP221 usb-power-supply and GPIO */ 247*80e5f83cSHans de Goede dr_mode = "host"; 248*80e5f83cSHans de Goede status = "okay"; 249*80e5f83cSHans de Goede}; 250*80e5f83cSHans de Goede 251*80e5f83cSHans de Goede&usbphy { 252*80e5f83cSHans de Goede usb1_vbus-supply = <®_dldo1>; 253af79c4f1SHans de Goede status = "okay"; 254af79c4f1SHans de Goede}; 255