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 aliases { 58af79c4f1SHans de Goede serial0 = &uart0; 59af79c4f1SHans de Goede }; 60af79c4f1SHans de Goede 61af79c4f1SHans de Goede chosen { 62af79c4f1SHans de Goede stdout-path = "serial0:115200n8"; 63af79c4f1SHans de Goede }; 64af79c4f1SHans de Goede}; 65af79c4f1SHans de Goede 66*80e5f83cSHans de Goede&cpu0 { 67*80e5f83cSHans de Goede cpu-supply = <®_dcdc3>; 68*80e5f83cSHans de Goede}; 69*80e5f83cSHans de Goede 70*80e5f83cSHans de Goede&ehci0 { 71*80e5f83cSHans de Goede /* rtl8188etv wifi is connected here */ 72*80e5f83cSHans de Goede status = "okay"; 73*80e5f83cSHans de Goede}; 74*80e5f83cSHans de Goede 75*80e5f83cSHans de Goede&i2c0 { 76*80e5f83cSHans de Goede /* pull-ups and device VDDIO use AXP221 DLDO3 */ 77af79c4f1SHans de Goede pinctrl-names = "default"; 78*80e5f83cSHans de Goede pinctrl-0 = <&i2c0_pins_a>; 79*80e5f83cSHans de Goede status = "failed"; 80*80e5f83cSHans de Goede}; 81*80e5f83cSHans de Goede 82*80e5f83cSHans de Goede&i2c1 { 83*80e5f83cSHans de Goede pinctrl-names = "default"; 84*80e5f83cSHans de Goede pinctrl-0 = <&i2c1_pins_a>; 85*80e5f83cSHans de Goede status = "okay"; 86*80e5f83cSHans de Goede 87*80e5f83cSHans de Goede ctp@5d { 88*80e5f83cSHans de Goede pinctrl-names = "default"; 89*80e5f83cSHans de Goede pinctrl-0 = <>911_int_primo81>; 90*80e5f83cSHans de Goede compatible = "goodix,gt911"; 91*80e5f83cSHans de Goede reg = <0x5d>; 92*80e5f83cSHans de Goede interrupt-parent = <&pio>; 93*80e5f83cSHans de Goede interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */ 94*80e5f83cSHans de Goede touchscreen-swapped-x-y; 95*80e5f83cSHans de Goede }; 96*80e5f83cSHans de Goede}; 97*80e5f83cSHans de Goede 98*80e5f83cSHans de Goede&i2c2 { 99*80e5f83cSHans de Goede pinctrl-names = "default"; 100*80e5f83cSHans de Goede pinctrl-0 = <&i2c2_pins_a>; 101*80e5f83cSHans de Goede status = "okay"; 102*80e5f83cSHans de Goede 103*80e5f83cSHans de Goede accelerometer@1c { 104*80e5f83cSHans de Goede pinctrl-names = "default"; 105*80e5f83cSHans de Goede pinctrl-0 = <&mma8452_int_primo81>; 106*80e5f83cSHans de Goede compatible = "fsl,mma8452"; 107*80e5f83cSHans de Goede reg = <0x1c>; 108*80e5f83cSHans de Goede interrupt-parent = <&pio>; 109*80e5f83cSHans de Goede interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>; /* PA9 */ 110*80e5f83cSHans de Goede #io-channel-cells = <1>; 111*80e5f83cSHans de Goede }; 112*80e5f83cSHans de Goede}; 113*80e5f83cSHans de Goede 114*80e5f83cSHans de Goede&lradc { 115*80e5f83cSHans de Goede vref-supply = <®_aldo3>; 116*80e5f83cSHans de Goede status = "okay"; 117*80e5f83cSHans de Goede 118*80e5f83cSHans de Goede button@158 { 119*80e5f83cSHans de Goede label = "Volume Up"; 120*80e5f83cSHans de Goede linux,code = <KEY_VOLUMEUP>; 121*80e5f83cSHans de Goede channel = <0>; 122*80e5f83cSHans de Goede voltage = <158730>; 123*80e5f83cSHans de Goede }; 124*80e5f83cSHans de Goede 125*80e5f83cSHans de Goede button@349 { 126*80e5f83cSHans de Goede label = "Volume Down"; 127*80e5f83cSHans de Goede linux,code = <KEY_VOLUMEDOWN>; 128*80e5f83cSHans de Goede channel = <0>; 129*80e5f83cSHans de Goede voltage = <349206>; 130*80e5f83cSHans de Goede }; 131*80e5f83cSHans de Goede}; 132*80e5f83cSHans de Goede 133*80e5f83cSHans de Goede&mmc0 { 134*80e5f83cSHans de Goede pinctrl-names = "default"; 135*80e5f83cSHans de Goede pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_primo81>; 136*80e5f83cSHans de Goede vmmc-supply = <®_dcdc1>; 137*80e5f83cSHans de Goede bus-width = <4>; 138*80e5f83cSHans de Goede cd-gpios = <&pio 0 8 GPIO_ACTIVE_HIGH>; /* PA8 */ 139*80e5f83cSHans de Goede cd-inverted; 140*80e5f83cSHans de Goede status = "okay"; 141*80e5f83cSHans de Goede}; 142*80e5f83cSHans de Goede 143*80e5f83cSHans de Goede&pio { 144*80e5f83cSHans de Goede gt911_int_primo81: gt911_int_pin@0 { 145*80e5f83cSHans de Goede allwinner,pins = "PA3"; 146*80e5f83cSHans de Goede allwinner,function = "gpio_in"; 147*80e5f83cSHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 148*80e5f83cSHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 149*80e5f83cSHans de Goede }; 150*80e5f83cSHans de Goede 151*80e5f83cSHans de Goede mma8452_int_primo81: mma8452_int_pin@0 { 152*80e5f83cSHans de Goede allwinner,pins = "PA9"; 153*80e5f83cSHans de Goede allwinner,function = "gpio_in"; 154*80e5f83cSHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 155*80e5f83cSHans de Goede allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 156*80e5f83cSHans de Goede }; 157*80e5f83cSHans de Goede 158*80e5f83cSHans de Goede mmc0_cd_pin_primo81: mmc0_cd_pin@0 { 159*80e5f83cSHans de Goede allwinner,pins = "PA8"; 160*80e5f83cSHans de Goede allwinner,function = "gpio_in"; 161*80e5f83cSHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 162*80e5f83cSHans de Goede allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 163*80e5f83cSHans de Goede }; 164*80e5f83cSHans de Goede}; 165*80e5f83cSHans de Goede 166*80e5f83cSHans de Goede&p2wi { 167*80e5f83cSHans de Goede status = "okay"; 168*80e5f83cSHans de Goede 169*80e5f83cSHans de Goede axp22x: pmic@68 { 170*80e5f83cSHans de Goede compatible = "x-powers,axp221"; 171*80e5f83cSHans de Goede reg = <0x68>; 172*80e5f83cSHans de Goede interrupt-parent = <&nmi_intc>; 173*80e5f83cSHans de Goede interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 174*80e5f83cSHans de Goede }; 175*80e5f83cSHans de Goede}; 176*80e5f83cSHans de Goede 177*80e5f83cSHans de Goede#include "axp22x.dtsi" 178*80e5f83cSHans de Goede 179*80e5f83cSHans de Goede®_aldo3 { 180*80e5f83cSHans de Goede regulator-always-on; 181*80e5f83cSHans de Goede regulator-min-microvolt = <2700000>; 182*80e5f83cSHans de Goede regulator-max-microvolt = <3300000>; 183*80e5f83cSHans de Goede regulator-name = "avcc"; 184*80e5f83cSHans de Goede}; 185*80e5f83cSHans de Goede 186*80e5f83cSHans de Goede®_dc1sw { 187*80e5f83cSHans de Goede regulator-min-microvolt = <3000000>; 188*80e5f83cSHans de Goede regulator-max-microvolt = <3000000>; 189*80e5f83cSHans de Goede regulator-name = "vcc-lcd"; 190*80e5f83cSHans de Goede}; 191*80e5f83cSHans de Goede 192*80e5f83cSHans de Goede®_dc5ldo { 193*80e5f83cSHans de Goede regulator-min-microvolt = <700000>; 194*80e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 195*80e5f83cSHans de Goede regulator-name = "vdd-cpus"; /* This is an educated guess */ 196*80e5f83cSHans de Goede}; 197*80e5f83cSHans de Goede 198*80e5f83cSHans de Goede®_dcdc1 { 199*80e5f83cSHans de Goede regulator-always-on; 200*80e5f83cSHans de Goede regulator-min-microvolt = <3000000>; 201*80e5f83cSHans de Goede regulator-max-microvolt = <3000000>; 202*80e5f83cSHans de Goede regulator-name = "vcc-3v0"; 203*80e5f83cSHans de Goede}; 204*80e5f83cSHans de Goede 205*80e5f83cSHans de Goede®_dcdc2 { 206*80e5f83cSHans de Goede regulator-min-microvolt = <700000>; 207*80e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 208*80e5f83cSHans de Goede regulator-name = "vdd-gpu"; 209*80e5f83cSHans de Goede}; 210*80e5f83cSHans de Goede 211*80e5f83cSHans de Goede®_dcdc3 { 212*80e5f83cSHans de Goede regulator-always-on; 213*80e5f83cSHans de Goede regulator-min-microvolt = <700000>; 214*80e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 215*80e5f83cSHans de Goede regulator-name = "vdd-cpu"; 216*80e5f83cSHans de Goede}; 217*80e5f83cSHans de Goede 218*80e5f83cSHans de Goede®_dcdc4 { 219*80e5f83cSHans de Goede regulator-always-on; 220*80e5f83cSHans de Goede regulator-min-microvolt = <700000>; 221*80e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 222*80e5f83cSHans de Goede regulator-name = "vdd-sys-dll"; 223*80e5f83cSHans de Goede}; 224*80e5f83cSHans de Goede 225*80e5f83cSHans de Goede®_dcdc5 { 226*80e5f83cSHans de Goede regulator-always-on; 227*80e5f83cSHans de Goede regulator-min-microvolt = <1500000>; 228*80e5f83cSHans de Goede regulator-max-microvolt = <1500000>; 229*80e5f83cSHans de Goede regulator-name = "vcc-dram"; 230*80e5f83cSHans de Goede}; 231*80e5f83cSHans de Goede 232*80e5f83cSHans de Goede®_dldo1 { 233*80e5f83cSHans de Goede regulator-min-microvolt = <3300000>; 234*80e5f83cSHans de Goede regulator-max-microvolt = <3300000>; 235*80e5f83cSHans de Goede regulator-name = "vcc-wifi"; 236*80e5f83cSHans de Goede}; 237*80e5f83cSHans de Goede 238*80e5f83cSHans de Goede®_dldo3 { 239*80e5f83cSHans de Goede regulator-min-microvolt = <2800000>; 240*80e5f83cSHans de Goede regulator-max-microvolt = <2800000>; 241*80e5f83cSHans de Goede regulator-name = "vddio-csi"; 242*80e5f83cSHans de Goede}; 243*80e5f83cSHans de Goede 244*80e5f83cSHans de Goede®_eldo3 { 245*80e5f83cSHans de Goede regulator-min-microvolt = <1080000>; 246*80e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 247*80e5f83cSHans de Goede regulator-name = "vdd-mipi-bridge"; 248*80e5f83cSHans de Goede}; 249*80e5f83cSHans de Goede 250*80e5f83cSHans de Goede&simplefb_lcd { 251*80e5f83cSHans de Goede vcc-lcd-supply = <®_dc1sw>; 252*80e5f83cSHans de Goede vdd-mipi-bridge-supply = <®_eldo3>; 253*80e5f83cSHans de Goede}; 254*80e5f83cSHans de Goede 255*80e5f83cSHans de Goede&usb_otg { 256*80e5f83cSHans de Goede /* otg support requires support for AXP221 usb-power-supply and GPIO */ 257*80e5f83cSHans de Goede dr_mode = "host"; 258*80e5f83cSHans de Goede status = "okay"; 259*80e5f83cSHans de Goede}; 260*80e5f83cSHans de Goede 261*80e5f83cSHans de Goede&usbphy { 262*80e5f83cSHans de Goede usb1_vbus-supply = <®_dldo1>; 263af79c4f1SHans de Goede status = "okay"; 264af79c4f1SHans de Goede}; 265