blob: 7a81e640ac95fc50f4aaeb31c8a29950927f16ee [file] [log] [blame]
/* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
/include/ "msm8974-camera-sensor-mtp.dtsi"
/include/ "msm8974-leds.dtsi"
/ {
aliases {
serial0 = &blsp1_uart1;
};
};
&soc {
serial@f991e000 {
status = "ok";
};
qcom,mdss_dsi@fd922800 {
qcom,dsi-pref-prim-pan = <&dsi_tosh_720_vid>;
};
qcom,mdss_mdp@fd900000 {
qcom,mdss-pref-prim-intf = "dsi";
};
qcom,hdmi_tx@fd922100 {
status = "disabled";
};
i2c@f9924000 {
synaptics@20 {
compatible = "synaptics,rmi4";
reg = <0x20>;
interrupt-parent = <&msmgpio>;
interrupts = <61 0x2008>;
vdd-supply = <&pm8941_l18>;
vcc_i2c-supply = <&pm8941_lvs1>;
synaptics,reset-gpio = <&msmgpio 60 0x00>;
synaptics,irq-gpio = <&msmgpio 61 0x2008>;
synaptics,display-coords = <0 0 1079 1919>;
synaptics,i2c-pull-up;
synaptics,power-down;
synaptics,disable-gpios;
synaptics,do-lockdown;
};
atmel_mxt_ts@4a {
compatible = "atmel,mxt-ts";
reg = <0x4a>;
interrupt-parent = <&msmgpio>;
interrupts = <61 0x2>;
vdd_ana-supply = <&pm8941_l18>;
vcc_i2c-supply = <&pm8941_lvs1>;
atmel,reset-gpio = <&msmgpio 60 0x00>;
atmel,irq-gpio = <&msmgpio 61 0x00>;
atmel,panel-coords = <0 0 760 1424>;
atmel,display-coords = <0 0 720 1280>;
atmel,i2c-pull-up;
atmel,no-force-update;
atmel,cfg_1 {
atmel,fw-name = "atmel_8974_fluid_v1_0_AA.hex";
atmel,family-id = <0x82>;
atmel,variant-id = <0x19>;
atmel,version = <0x10>;
atmel,build = <0xaa>;
atmel,config = [
/* Object 6, Instance = 0 */
00 00 00 00 00 00
/* Object 38, Instance = 0 */
15 01 00 03 0A 0C 00 00
/* Object 7, Instance = 0 */
20 08 32 03
/* Object 8, Instance = 0 */
0F 00 0A 0A 00 00 0A 0A 00 00
/* Object 9, Instance = 0 */
83 00 00 18 0E 00 70 46 02 01
00 0A 03 31 04 05 0A 0A 90 05
F8 02 05 F1 F1 0F 00 00 08 2D
12 06 00 00 00 01
/* Object 15, Instance = 0 */
00 00 00 00 00 00 00 00 00 00
00
/* Object 18, Instance = 0 */
00 00
/* Object 19, Instance = 0 */
00 00 00 00 00 00
/* Object 23, Instance = 0 */
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00
/* Object 25, Instance = 0 */
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00
/* Object 40, Instance = 0 */
00 00 00 00 00
/* Object 42, Instance = 0 */
33 1E 19 10 80 00 00 00 FF 00
/* Object 46, Instance = 0 */
00 00 10 10 00 00 03 00 00 01
/* Object 47, Instance = 0 */
08 0A 28 0A 02 0A 00 8C 00 20
00 00 00
/* Object 55, Instance = 0 */
00 00 00 00 00 00
/* Object 56, Instance = 0 */
00 00 00 18 05 05 05 05 05 05
05 05 05 05 05 05 05 05 05 05
05 05 05 05 05 05 05 05 00 00
00 00 00 00 00 00 00 00 00 00
00 00
/* Object 57, Instance = 0 */
00 00 00
/* Object 61, Instance = 0 */
00 00 00 00 00
/* Object 62, Instance = 0 */
01 2A 00 16 00 00 00 00 0B 01
02 03 04 08 00 00 08 10 18 05
00 0A 05 05 50 14 19 34 1A 7F
00 00 00 00 00 00 00 00 00 30
05 02 00 01 00 05 00 00 00 00
00 00 00 00
];
};
};
};
gen-vkeys {
compatible = "qcom,gen-vkeys";
label = "atmel_mxt_ts";
qcom,disp-maxx = <720>;
qcom,disp-maxy = <1280>;
qcom,panel-maxx = <760>;
qcom,panel-maxy = <1424>;
qcom,key-codes = <158 139 102 217>;
};
i2c@f9967000 {
isa1200@48 {
status = "okay";
reg = <0x48>;
vcc_i2c-supply = <&pm8941_s3>;
compatible = "imagis,isa1200";
label = "vibrator";
imagis,chip-en;
imagis,need-pwm-clk;
imagis,ext-clk-en;
imagis,hap-en-gpio = <&msmgpio 86 0x00>;
imagis,max-timeout = <15000>;
imagis,pwm-div = <256>;
imagis,mode-ctrl = <2>;
imagis,regulator {
regulator-name = "vcc_i2c";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-max-microamp = <9360>;
};
};
};
gpio_keys {
compatible = "gpio-keys";
input-name = "gpio-keys";
camera_snapshot {
label = "camera_snapshot";
gpios = <&pm8941_gpios 3 0x1>;
linux,input-type = <1>;
linux,code = <0x2fe>;
gpio-key,wakeup;
debounce-interval = <15>;
};
camera_focus {
label = "camera_focus";
gpios = <&pm8941_gpios 4 0x1>;
linux,input-type = <1>;
linux,code = <0x210>;
gpio-key,wakeup;
debounce-interval = <15>;
};
vol_up {
label = "volume_up";
gpios = <&pm8941_gpios 5 0x1>;
linux,input-type = <1>;
linux,code = <115>;
gpio-key,wakeup;
debounce-interval = <15>;
};
};
spi@f9923000 {
ethernet-switch@2 {
compatible = "micrel,ks8851";
reg = <2>;
interrupt-parent = <&msmgpio>;
interrupts = <94 0>;
spi-max-frequency = <4800000>;
rst-gpio = <&pm8941_mpps 6 0>;
vdd-io-supply = <&spi_eth_vreg>;
vdd-phy-supply = <&spi_eth_vreg>;
};
};
sound {
qcom,model = "msm8974-taiko-mtp-snd-card";
qcom,cdc-micbias2-headset-only;
};
};
&pm8941_lsid1 {
qcom,leds@d800 {
status = "okay";
qcom,wled_0 {
label = "wled";
linux,name = "wled:backlight";
linux,default-trigger = "bkl-trigger";
qcom,cs-out-en;
qcom,op-fdbck = <1>;
qcom,default-state = "on";
qcom,max-current = <25>;
qcom,ctrl-delay-us = <0>;
qcom,boost-curr-lim = <5>;
qcom,cp-sel = <0>;
qcom,switch-freq = <11>;
qcom,ovp-val = <2>;
qcom,num-strings = <3>;
qcom,id = <0>;
};
};
qcom,leds@d900 {
status = "disabled";
};
qcom,leds@da00 {
status = "disabled";
};
qcom,leds@db00 {
status = "disabled";
};
qcom,leds@dc00 {
status = "disabled";
};
qcom,leds@dd00 {
status = "disabled";
};
qcom,leds@de00 {
status = "disabled";
};
qcom,leds@df00 {
status = "disabled";
};
qcom,leds@e000 {
status = "disabled";
};
qcom,leds@e100 {
status = "disabled";
};
};
&sdcc1 {
status = "disabled";
};
&sdcc2 {
#address-cells = <0>;
interrupt-parent = <&sdcc2>;
interrupts = <0 1 2>;
#interrupt-cells = <1>;
interrupt-map-mask = <0xffffffff>;
interrupt-map = <0 &intc 0 125 0
1 &intc 0 220 0
2 &msmgpio 62 0x3>;
interrupt-names = "core_irq", "bam_irq", "status_irq";
cd-gpios = <&msmgpio 62 0x1>;
status = "disabled";
};
&sdhc_1 {
vdd-supply = <&pm8941_l20>;
vdd-io-supply = <&pm8941_s3>;
qcom,vdd-always-on;
qcom,vdd-lpm-sup;
qcom,vdd-voltage-level = <2950000 2950000>;
qcom,vdd-current-level = <800 500000>;
qcom,vdd-io-always-on;
qcom,vdd-io-voltage-level = <1800000 1800000>;
qcom,vdd-io-current-level = <250 154000>;
qcom,pad-pull-on = <0x0 0x3 0x3>; /* no-pull, pull-up, pull-up */
qcom,pad-pull-off = <0x0 0x3 0x3>; /* no-pull, pull-up, pull-up */
qcom,pad-drv-on = <0x4 0x4 0x4>; /* 10mA, 10mA, 10mA */
qcom,pad-drv-off = <0x0 0x0 0x0>; /* 2mA, 2mA, 2mA */
qcom,nonremovable;
status = "ok";
};
&sdhc_2 {
#address-cells = <0>;
interrupt-parent = <&sdhc_2>;
interrupts = <0 1 2>;
#interrupt-cells = <1>;
interrupt-map-mask = <0xffffffff>;
interrupt-map = <0 &intc 0 125 0
1 &intc 0 221 0
2 &msmgpio 62 0x3>;
interrupt-names = "hc_irq", "pwr_irq", "status_irq";
cd-gpios = <&msmgpio 62 0x1>;
vdd-supply = <&pm8941_l21>;
vdd-io-supply = <&pm8941_l13>;
qcom,vdd-voltage-level = <2950000 2950000>;
qcom,vdd-current-level = <9000 800000>;
qcom,vdd-io-voltage-level = <1800000 2950000>;
qcom,vdd-io-current-level = <6 22000>;
qcom,pad-pull-on = <0x0 0x3 0x3>; /* no-pull, pull-up, pull-up */
qcom,pad-pull-off = <0x0 0x3 0x3>; /* no-pull, pull-up, pull-up */
qcom,pad-drv-on = <0x4 0x4 0x4>; /* 10mA, 10mA, 10mA */
qcom,pad-drv-off = <0x0 0x0 0x0>; /* 2mA, 2mA, 2mA */
status = "ok";
};
/* Drive strength recommendations for clock line from hardware team is 10 mA.
* But since the driver has been been using the below values from the start
* without any problems, continue to use those.
*/
&sdcc1 {
qcom,pad-drv-on = <0x7 0x4 0x4>; /* 16mA, 10mA, 10mA */
};
&sdcc2 {
qcom,pad-drv-on = <0x7 0x4 0x4>; /* 16mA, 10mA, 10mA */
};
&sdhc_1 {
qcom,pad-drv-on = <0x7 0x4 0x4>; /* 16mA, 10mA, 10mA */
};
&sdhc_2 {
qcom,pad-drv-on = <0x7 0x4 0x4>; /* 16mA, 10mA, 10mA */
};
&usb_otg {
qcom,hsusb-otg-otg-control = <2>;
};
&uart7 {
status = "ok";
};
&usb3 {
qcom,otg-capability;
};
&pm8941_bms {
qcom,enable-fcc-learning;
qcom,min-fcc-learning-soc = <20>;
qcom,min-fcc-ocv-pc = <30>;
qcom,min-fcc-learning-samples = <5>;
qcom,fcc-resolution = <10>;
status = "ok";
};
&pm8941_chg {
status = "ok";
qcom,charging-disabled;
qcom,chgr@1000 {
status = "ok";
};
qcom,buck@1100 {
status = "ok";
};
qcom,bat-if@1200 {
status = "ok";
};
qcom,usb-chgpth@1300 {
status = "ok";
};
qcom,dc-chgpth@1400 {
status = "ok";
};
qcom,boost@1500 {
status = "ok";
};
qcom,chg-misc@1600 {
status = "ok";
};
};
&pm8941_gpios {
gpio@c000 { /* GPIO 1 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <0>; /* QPNP_PIN_PULL_UP_30 */
qcom,master-en = <1>;
};
gpio@c100 { /* GPIO 2 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <0>; /* QPNP_PIN_PULL_UP_30 */
qcom,master-en = <1>;
};
gpio@c200 { /* GPIO 3 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <0>; /* QPNP_PIN_PULL_UP_30 */
qcom,vin-sel = <2>;
qcom,src-sel = <0>; /* QPNP_PIN_SEL_FUNC_CONSTANT */
qcom,master-en = <1>;
};
gpio@c300 { /* GPIO 4 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <0>; /* QPNP_PIN_PULL_UP_30 */
qcom,vin-sel = <2>; /* QPNP_PIN_VIN2 */
qcom,src-sel = <0>; /* QPNP_PIN_SEL_FUNC_CONSTANT */
qcom,master-en = <1>;
};
gpio@c400 { /* GPIO 5 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <0>; /* QPNP_PIN_PULL_UP_30 */
qcom,vin-sel = <2>; /* QPNP_PIN_VIN2 */
qcom,src-sel = <0>; /* QPNP_PIN_SEL_FUNC_CONSTANT */
qcom,master-en = <1>;
};
gpio@c500 { /* GPIO 6 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <0>; /* QPNP_PIN_PULL_UP_30 */
qcom,master-en = <1>;
};
gpio@c600 { /* GPIO 7 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <0>; /* QPNP_PIN_PULL_UP_30 */
qcom,master-en = <1>;
};
gpio@c700 { /* GPIO 8 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <0>; /* QPNP_PIN_PULL_UP_30 */
qcom,master-en = <1>;
};
gpio@c800 { /* GPIO 9 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
qcom,master-en = <1>;
};
gpio@c900 { /* GPIO 10 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
qcom,master-en = <1>;
};
gpio@ca00 { /* GPIO 11 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
qcom,master-en = <1>;
};
gpio@cb00 { /* GPIO 12 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
qcom,master-en = <1>;
};
gpio@cc00 { /* GPIO 13 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
qcom,master-en = <1>;
};
gpio@cd00 { /* GPIO 14 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
qcom,master-en = <1>;
};
gpio@ce00 { /* GPIO 15 */
qcom,mode = <1>;
qcom,output-type = <0>;
qcom,pull = <5>;
qcom,vin-sel = <2>;
qcom,out-strength = <1>;
qcom,src-sel = <2>;
qcom,master-en = <1>;
};
gpio@cf00 { /* GPIO 16 */
qcom,mode = <1>;
qcom,output-type = <0>;
qcom,pull = <5>;
qcom,vin-sel = <2>;
qcom,out-strength = <3>;
qcom,src-sel = <3>; /* QPNP_PIN_SEL_FUNC_2 */
qcom,master-en = <1>;
};
gpio@d000 { /* GPIO 17 */
};
gpio@d100 { /* GPIO 18 */
};
gpio@d200 { /* GPIO 19 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,output-type = <0>; /* QPNP_PIN_OUT_BUF_CMOS */
qcom,pull = <5>; /* QPNP_PIN_PULL_NO */
qcom,vin-sel = <2>; /* QPNP_PIN_VIN2 */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,src-sel = <0>; /* QPNP_PIN_SEL_FUNC_CONSTANT */
qcom,master-en = <1>;
};
gpio@d300 { /* GPIO 20 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
qcom,master-en = <1>;
};
gpio@d400 { /* GPIO 21 */
};
gpio@d500 { /* GPIO 22 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <4>; /* QPNP_PIN_PULL_DN */
qcom,master-en = <1>;
};
gpio@d600 { /* GPIO 23 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
qcom,master-en = <1>;
};
gpio@d700 { /* GPIO 24 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
qcom,master-en = <1>;
};
gpio@d800 { /* GPIO 25 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
qcom,master-en = <1>;
};
gpio@d900 { /* GPIO 26 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
qcom,master-en = <1>;
};
gpio@da00 { /* GPIO 27 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <4>; /* QPNP_PIN_PULL_DN */
qcom,master-en = <1>;
};
gpio@db00 { /* GPIO 28 */
};
gpio@dc00 { /* GPIO 29 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,src-sel = <2>; /* QPNP_PIN_SEL_FUNC_1 */
qcom,master-en = <1>;
};
gpio@dd00 { /* GPIO 30 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <4>; /* QPNP_PIN_PULL_DN */
qcom,master-en = <1>;
};
gpio@de00 { /* GPIO 31 */
};
gpio@df00 { /* GPIO 32 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <4>; /* QPNP_PIN_PULL_DN */
qcom,master-en = <1>;
};
gpio@e000 { /* GPIO 33 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <4>; /* QPNP_PIN_PULL_DN */
qcom,master-en = <1>;
};
gpio@e100 { /* GPIO 34 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <4>; /* QPNP_PIN_PULL_DN */
qcom,master-en = <1>;
};
gpio@e200 { /* GPIO 35 */
qcom,mode = <0>; /* QPNP_PIN_MODE_DIG_IN */
qcom,pull = <4>; /* QPNP_PIN_PULL_DN */
qcom,master-en = <1>;
};
gpio@e300 { /* GPIO 36 */
};
};
&pm8941_mpps {
mpp@a000 { /* MPP 1 */
status = "disabled";
};
mpp@a100 { /* MPP 2 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,master-en = <1>;
};
mpp@a200 { /* MPP 3 */
};
mpp@a300 { /* MPP 4 */
};
mpp@a400 { /* MPP 5 */
};
mpp@a500 { /* MPP 6 */
/* SPI_ETH_RST config */
qcom,mode = <1>; /* DIG_OUT */
qcom,output-type = <0>; /* CMOS */
qcom,vin-sel = <2>; /* PM8941_S3 1.8V > 1.6V */
qcom,src-sel = <0>; /* CONSTANT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,master-en = <1>; /* ENABLE MPP */
};
mpp@a600 { /* MPP 7 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,master-en = <1>;
};
mpp@a700 { /* MPP 8 */
qcom,mode = <1>; /* QPNP_PIN_MODE_DIG_OUT */
qcom,out-strength = <1>; /* QPNP_PIN_OUT_STRENGTH_LOW */
qcom,master-en = <1>;
};
};
&slim_msm {
taiko_codec {
qcom,cdc-micbias1-ext-cap;
qcom,cdc-micbias2-ext-cap;
qcom,cdc-micbias4-ext-cap;
};
};
&spi_epm {
epm-adc@0 {
compatible = "cy,epm-adc-cy8c5568lti-114";
reg = <0>;
interrupt-parent = <&msmgpio>;
spi-max-frequency = <960000>;
qcom,channels = <31>;
qcom,gain = <100 100 100 50 100 100 1 100 1 50
1 100 1 100 50 50 50 50 50 50
100 50 100 50 50 50 50 50 50 50
50>;
qcom,rsense = <2 2 2 200 20 2 1 2 1 30
1 10 1 30 50 30 500 30 100 30
100 500 20 200 1000 20 1000 1000 70 200
50>;
qcom,channel-type = <0x1540>;
};
};
&dsi_tosh_720_vid {
qcom,cont-splash-enabled;
};