1af79c4f1SHans de Goede/* 280e5f83cSHans de Goede * Copyright 2014 Siarhei Siamashka <siarhei.siamashka@gmail.com> 380e5f83cSHans de Goede * Copyright 2015 Karsten Merker <merker@debian.org> 480e5f83cSHans de Goede * Copyright 2015 Chen-Yu Tsai <wens@csie.org> 5af79c4f1SHans de Goede * 680e5f83cSHans de Goede * This file is dual-licensed: you can use it either under the terms 780e5f83cSHans de Goede * of the GPL or the X11 license, at your option. Note that this dual 880e5f83cSHans de Goede * licensing only applies to this file, and not this project as a 980e5f83cSHans de Goede * whole. 10af79c4f1SHans de Goede * 1180e5f83cSHans de Goede * a) This file is free software; you can redistribute it and/or 1280e5f83cSHans de Goede * modify it under the terms of the GNU General Public License as 1380e5f83cSHans de Goede * published by the Free Software Foundation; either version 2 of the 1480e5f83cSHans de Goede * License, or (at your option) any later version. 1580e5f83cSHans de Goede * 1680e5f83cSHans de Goede * This file is distributed in the hope that it will be useful, 1780e5f83cSHans de Goede * but WITHOUT ANY WARRANTY; without even the implied warranty of 1880e5f83cSHans de Goede * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1980e5f83cSHans de Goede * GNU General Public License for more details. 2080e5f83cSHans de Goede * 2180e5f83cSHans de Goede * Or, alternatively, 2280e5f83cSHans de Goede * 2380e5f83cSHans de Goede * b) Permission is hereby granted, free of charge, to any person 2480e5f83cSHans de Goede * obtaining a copy of this software and associated documentation 2580e5f83cSHans de Goede * files (the "Software"), to deal in the Software without 2680e5f83cSHans de Goede * restriction, including without limitation the rights to use, 2780e5f83cSHans de Goede * copy, modify, merge, publish, distribute, sublicense, and/or 2880e5f83cSHans de Goede * sell copies of the Software, and to permit persons to whom the 2980e5f83cSHans de Goede * Software is furnished to do so, subject to the following 3080e5f83cSHans de Goede * conditions: 3180e5f83cSHans de Goede * 3280e5f83cSHans de Goede * The above copyright notice and this permission notice shall be 3380e5f83cSHans de Goede * included in all copies or substantial portions of the Software. 3480e5f83cSHans de Goede * 3580e5f83cSHans de Goede * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 3680e5f83cSHans de Goede * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 3780e5f83cSHans de Goede * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 3880e5f83cSHans de Goede * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 3980e5f83cSHans de Goede * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 4080e5f83cSHans de Goede * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 4180e5f83cSHans de Goede * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 4280e5f83cSHans 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" 4780e5f83cSHans de Goede#include "sunxi-common-regulators.dtsi" 4880e5f83cSHans de Goede 4980e5f83cSHans de Goede#include <dt-bindings/gpio/gpio.h> 5080e5f83cSHans de Goede#include <dt-bindings/input/input.h> 51af79c4f1SHans de Goede 52af79c4f1SHans de Goede/ { 5380e5f83cSHans de Goede model = "MSI Primo81 tablet"; 54af79c4f1SHans de Goede compatible = "msi,primo81", "allwinner,sun6i-a31s"; 55*d1d4295aSJagan Teki 56*d1d4295aSJagan Teki hdmi-connector { 57*d1d4295aSJagan Teki compatible = "hdmi-connector"; 58*d1d4295aSJagan Teki type = "c"; 59*d1d4295aSJagan Teki 60*d1d4295aSJagan Teki port { 61*d1d4295aSJagan Teki hdmi_con_in: endpoint { 62*d1d4295aSJagan Teki remote-endpoint = <&hdmi_out_con>; 63*d1d4295aSJagan Teki }; 64*d1d4295aSJagan Teki }; 65*d1d4295aSJagan Teki }; 66af79c4f1SHans de Goede}; 67af79c4f1SHans de Goede 6880e5f83cSHans de Goede&cpu0 { 6980e5f83cSHans de Goede cpu-supply = <®_dcdc3>; 7080e5f83cSHans de Goede}; 7180e5f83cSHans de Goede 72*d1d4295aSJagan Teki&de { 73*d1d4295aSJagan Teki status = "okay"; 74*d1d4295aSJagan Teki}; 75*d1d4295aSJagan Teki 7680e5f83cSHans de Goede&ehci0 { 7780e5f83cSHans de Goede /* rtl8188etv wifi is connected here */ 7880e5f83cSHans de Goede status = "okay"; 7980e5f83cSHans de Goede}; 8080e5f83cSHans de Goede 81*d1d4295aSJagan Teki&hdmi { 82*d1d4295aSJagan Teki status = "okay"; 83*d1d4295aSJagan Teki}; 84*d1d4295aSJagan Teki 85*d1d4295aSJagan Teki&hdmi_out { 86*d1d4295aSJagan Teki hdmi_out_con: endpoint { 87*d1d4295aSJagan Teki remote-endpoint = <&hdmi_con_in>; 88*d1d4295aSJagan Teki }; 89*d1d4295aSJagan Teki}; 90*d1d4295aSJagan Teki 9180e5f83cSHans de Goede&i2c0 { 9280e5f83cSHans de Goede /* pull-ups and device VDDIO use AXP221 DLDO3 */ 93af79c4f1SHans de Goede pinctrl-names = "default"; 9480e5f83cSHans de Goede pinctrl-0 = <&i2c0_pins_a>; 9580e5f83cSHans de Goede status = "failed"; 9680e5f83cSHans de Goede}; 9780e5f83cSHans de Goede 9880e5f83cSHans de Goede&i2c1 { 9980e5f83cSHans de Goede pinctrl-names = "default"; 10080e5f83cSHans de Goede pinctrl-0 = <&i2c1_pins_a>; 10180e5f83cSHans de Goede status = "okay"; 10280e5f83cSHans de Goede 10380e5f83cSHans de Goede ctp@5d { 10480e5f83cSHans de Goede pinctrl-names = "default"; 10580e5f83cSHans de Goede pinctrl-0 = <>911_int_primo81>; 10680e5f83cSHans de Goede compatible = "goodix,gt911"; 10780e5f83cSHans de Goede reg = <0x5d>; 10880e5f83cSHans de Goede interrupt-parent = <&pio>; 10980e5f83cSHans de Goede interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */ 11080e5f83cSHans de Goede touchscreen-swapped-x-y; 11180e5f83cSHans de Goede }; 11280e5f83cSHans de Goede}; 11380e5f83cSHans de Goede 11480e5f83cSHans de Goede&i2c2 { 11580e5f83cSHans de Goede pinctrl-names = "default"; 11680e5f83cSHans de Goede pinctrl-0 = <&i2c2_pins_a>; 11780e5f83cSHans de Goede status = "okay"; 11880e5f83cSHans de Goede 11980e5f83cSHans de Goede accelerometer@1c { 12080e5f83cSHans de Goede pinctrl-names = "default"; 12180e5f83cSHans de Goede pinctrl-0 = <&mma8452_int_primo81>; 12280e5f83cSHans de Goede compatible = "fsl,mma8452"; 12380e5f83cSHans de Goede reg = <0x1c>; 12480e5f83cSHans de Goede interrupt-parent = <&pio>; 12580e5f83cSHans de Goede interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>; /* PA9 */ 12680e5f83cSHans de Goede #io-channel-cells = <1>; 12780e5f83cSHans de Goede }; 12880e5f83cSHans de Goede}; 12980e5f83cSHans de Goede 13080e5f83cSHans de Goede&lradc { 13180e5f83cSHans de Goede vref-supply = <®_aldo3>; 13280e5f83cSHans de Goede status = "okay"; 13380e5f83cSHans de Goede 13480e5f83cSHans de Goede button@158 { 13580e5f83cSHans de Goede label = "Volume Up"; 13680e5f83cSHans de Goede linux,code = <KEY_VOLUMEUP>; 13780e5f83cSHans de Goede channel = <0>; 13880e5f83cSHans de Goede voltage = <158730>; 13980e5f83cSHans de Goede }; 14080e5f83cSHans de Goede 14180e5f83cSHans de Goede button@349 { 14280e5f83cSHans de Goede label = "Volume Down"; 14380e5f83cSHans de Goede linux,code = <KEY_VOLUMEDOWN>; 14480e5f83cSHans de Goede channel = <0>; 14580e5f83cSHans de Goede voltage = <349206>; 14680e5f83cSHans de Goede }; 14780e5f83cSHans de Goede}; 14880e5f83cSHans de Goede 14980e5f83cSHans de Goede&mmc0 { 15080e5f83cSHans de Goede pinctrl-names = "default"; 15180e5f83cSHans de Goede pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_primo81>; 15280e5f83cSHans de Goede vmmc-supply = <®_dcdc1>; 15380e5f83cSHans de Goede bus-width = <4>; 154*d1d4295aSJagan Teki cd-gpios = <&pio 0 8 GPIO_ACTIVE_LOW>; /* PA8 */ 15580e5f83cSHans de Goede status = "okay"; 15680e5f83cSHans de Goede}; 15780e5f83cSHans de Goede 15880e5f83cSHans de Goede&pio { 15980e5f83cSHans de Goede gt911_int_primo81: gt911_int_pin@0 { 160*d1d4295aSJagan Teki pins = "PA3"; 161*d1d4295aSJagan Teki function = "gpio_in"; 16280e5f83cSHans de Goede }; 16380e5f83cSHans de Goede 16480e5f83cSHans de Goede mma8452_int_primo81: mma8452_int_pin@0 { 165*d1d4295aSJagan Teki pins = "PA9"; 166*d1d4295aSJagan Teki function = "gpio_in"; 167*d1d4295aSJagan Teki bias-pull-up; 16880e5f83cSHans de Goede }; 16980e5f83cSHans de Goede 17080e5f83cSHans de Goede mmc0_cd_pin_primo81: mmc0_cd_pin@0 { 171*d1d4295aSJagan Teki pins = "PA8"; 172*d1d4295aSJagan Teki function = "gpio_in"; 173*d1d4295aSJagan Teki bias-pull-up; 17480e5f83cSHans de Goede }; 17580e5f83cSHans de Goede}; 17680e5f83cSHans de Goede 17780e5f83cSHans de Goede&p2wi { 17880e5f83cSHans de Goede status = "okay"; 17980e5f83cSHans de Goede 18080e5f83cSHans de Goede axp22x: pmic@68 { 18180e5f83cSHans de Goede compatible = "x-powers,axp221"; 18280e5f83cSHans de Goede reg = <0x68>; 18380e5f83cSHans de Goede interrupt-parent = <&nmi_intc>; 18480e5f83cSHans de Goede interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 185*d1d4295aSJagan Teki x-powers,drive-vbus-en; 18680e5f83cSHans de Goede }; 18780e5f83cSHans de Goede}; 18880e5f83cSHans de Goede 18980e5f83cSHans de Goede#include "axp22x.dtsi" 19080e5f83cSHans de Goede 191*d1d4295aSJagan Teki&battery_power_supply { 192*d1d4295aSJagan Teki status = "okay"; 193*d1d4295aSJagan Teki}; 194*d1d4295aSJagan Teki 19580e5f83cSHans de Goede®_aldo3 { 19680e5f83cSHans de Goede regulator-always-on; 19780e5f83cSHans de Goede regulator-min-microvolt = <2700000>; 19880e5f83cSHans de Goede regulator-max-microvolt = <3300000>; 19980e5f83cSHans de Goede regulator-name = "avcc"; 20080e5f83cSHans de Goede}; 20180e5f83cSHans de Goede 20280e5f83cSHans de Goede®_dc1sw { 20380e5f83cSHans de Goede regulator-name = "vcc-lcd"; 20480e5f83cSHans de Goede}; 20580e5f83cSHans de Goede 20680e5f83cSHans de Goede®_dc5ldo { 20780e5f83cSHans de Goede regulator-min-microvolt = <700000>; 20880e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 20980e5f83cSHans de Goede regulator-name = "vdd-cpus"; /* This is an educated guess */ 21080e5f83cSHans de Goede}; 21180e5f83cSHans de Goede 21280e5f83cSHans de Goede®_dcdc1 { 21380e5f83cSHans de Goede regulator-always-on; 21480e5f83cSHans de Goede regulator-min-microvolt = <3000000>; 21580e5f83cSHans de Goede regulator-max-microvolt = <3000000>; 21680e5f83cSHans de Goede regulator-name = "vcc-3v0"; 21780e5f83cSHans de Goede}; 21880e5f83cSHans de Goede 21980e5f83cSHans de Goede®_dcdc2 { 22080e5f83cSHans de Goede regulator-min-microvolt = <700000>; 22180e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 22280e5f83cSHans de Goede regulator-name = "vdd-gpu"; 22380e5f83cSHans de Goede}; 22480e5f83cSHans de Goede 22580e5f83cSHans de Goede®_dcdc3 { 22680e5f83cSHans de Goede regulator-always-on; 22780e5f83cSHans de Goede regulator-min-microvolt = <700000>; 22880e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 22980e5f83cSHans de Goede regulator-name = "vdd-cpu"; 23080e5f83cSHans de Goede}; 23180e5f83cSHans de Goede 23280e5f83cSHans de Goede®_dcdc4 { 23380e5f83cSHans de Goede regulator-always-on; 23480e5f83cSHans de Goede regulator-min-microvolt = <700000>; 23580e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 23680e5f83cSHans de Goede regulator-name = "vdd-sys-dll"; 23780e5f83cSHans de Goede}; 23880e5f83cSHans de Goede 23980e5f83cSHans de Goede®_dcdc5 { 24080e5f83cSHans de Goede regulator-always-on; 24180e5f83cSHans de Goede regulator-min-microvolt = <1500000>; 24280e5f83cSHans de Goede regulator-max-microvolt = <1500000>; 24380e5f83cSHans de Goede regulator-name = "vcc-dram"; 24480e5f83cSHans de Goede}; 24580e5f83cSHans de Goede 24680e5f83cSHans de Goede®_dldo1 { 24780e5f83cSHans de Goede regulator-min-microvolt = <3300000>; 24880e5f83cSHans de Goede regulator-max-microvolt = <3300000>; 24980e5f83cSHans de Goede regulator-name = "vcc-wifi"; 25080e5f83cSHans de Goede}; 25180e5f83cSHans de Goede 25280e5f83cSHans de Goede®_dldo3 { 25380e5f83cSHans de Goede regulator-min-microvolt = <2800000>; 25480e5f83cSHans de Goede regulator-max-microvolt = <2800000>; 25580e5f83cSHans de Goede regulator-name = "vddio-csi"; 25680e5f83cSHans de Goede}; 25780e5f83cSHans de Goede 258*d1d4295aSJagan Teki®_drivevbus { 259*d1d4295aSJagan Teki regulator-name = "usb0-vbus"; 260*d1d4295aSJagan Teki status = "okay"; 261*d1d4295aSJagan Teki}; 262*d1d4295aSJagan Teki 26380e5f83cSHans de Goede®_eldo3 { 26480e5f83cSHans de Goede regulator-min-microvolt = <1080000>; 26580e5f83cSHans de Goede regulator-max-microvolt = <1320000>; 26680e5f83cSHans de Goede regulator-name = "vdd-mipi-bridge"; 26780e5f83cSHans de Goede}; 26880e5f83cSHans de Goede 26980e5f83cSHans de Goede&simplefb_lcd { 27080e5f83cSHans de Goede vcc-lcd-supply = <®_dc1sw>; 27180e5f83cSHans de Goede vdd-mipi-bridge-supply = <®_eldo3>; 27280e5f83cSHans de Goede}; 27380e5f83cSHans de Goede 27480e5f83cSHans de Goede&usb_otg { 275*d1d4295aSJagan Teki dr_mode = "otg"; 276*d1d4295aSJagan Teki status = "okay"; 277*d1d4295aSJagan Teki}; 278*d1d4295aSJagan Teki 279*d1d4295aSJagan Teki&usb_power_supply { 28080e5f83cSHans de Goede status = "okay"; 28180e5f83cSHans de Goede}; 28280e5f83cSHans de Goede 28380e5f83cSHans de Goede&usbphy { 284*d1d4295aSJagan Teki usb0_id_det-gpio = <&pio 0 15 GPIO_ACTIVE_HIGH>; /* PA15 */ 285*d1d4295aSJagan Teki usb0_vbus_power-supply = <&usb_power_supply>; 286*d1d4295aSJagan Teki usb0_vbus-supply = <®_drivevbus>; 28780e5f83cSHans de Goede usb1_vbus-supply = <®_dldo1>; 288af79c4f1SHans de Goede status = "okay"; 289af79c4f1SHans de Goede}; 290