/* 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/ "dsi-panel-toshiba-720p-video.dtsi"
/include/ "dsi-panel-orise-720p-video.dtsi"
/include/ "msm8974-leds.dtsi"
/include/ "msm8974-camera-sensor-cdp-mtp.dtsi"

/ {
	serial@f991e000 {
		status = "ok";
	};

	qcom,mdss_dsi_toshiba_720p_video {
		status = "ok";
		qcom,cont-splash-enabled;
	};

	qcom,mdss_dsi_orise_720p_video {
		status = "disable";
	};

	qcom,hdmi_tx@fd922100 {
		status = "ok";
	};

	i2c@f9924000 {
		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,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,smart-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-cdp-snd-card";
		qcom,hdmi-audio-rx;
		qcom,us-euro-gpios = <&pm8941_gpios 20 0>;
	};

	usb2_otg_sw: regulator-tpd4s214 {
		compatible = "regulator-fixed";
		regulator-name = "usb2_otg_sw";
		gpio = <&pm8941_gpios 18 0>;
		parent-supply = <&pm8941_boost>;
		startup-delay-us = <17000>;
		enable-active-high;
	};

	hsic_host: hsic@f9a00000 {
		compatible = "qcom,hsic-host";
		reg = <0xf9a00000 0x400>;
		#address-cells = <0>;
		interrupt-parent = <&hsic_host>;
		interrupts = <0 1 2>;
		#interrupt-cells = <1>;
		interrupt-map-mask = <0xffffffff>;
		interrupt-map = <0 &intc 0 136 0
			1 &intc 0 148 0
			2 &msmgpio 144 0x8>;
		interrupt-names = "core_irq", "async_irq", "wakeup";
		HSIC_VDDCX-supply = <&pm8841_s2>;
		HSIC_GDSC-supply = <&gdsc_usb_hsic>;
		hsic,strobe-gpio = <&msmgpio 144 0x00>;
		hsic,data-gpio = <&msmgpio 145 0x00>;
		hsic,resume-gpio = <&msmgpio 80 0x00>;
		hsic,ignore-cal-pad-config;
		hsic,strobe-pad-offset = <0x2050>;
		hsic,data-pad-offset = <0x2054>;

		qcom,msm-bus,name = "hsic";
		qcom,msm-bus,num-cases = <2>;
		qcom,msm-bus,active-only = <0>;
		qcom,msm-bus,num-paths = <1>;
		qcom,msm-bus,vectors-KBps =
				<85 512 0 0>,
				<85 512 40000 160000>;
        };

};

&spmi_bus {
	qcom,pm8941@1 {
		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;
				qcom,default-state = "on";
				qcom,max-current = <25>;
				qcom,ctrl-delay-us = <0>;
				qcom,boost-curr-lim = <3>;
				qcom,cp-sel = <0>;
				qcom,switch-freq = <2>;
				qcom,ovp-val = <2>;
				qcom,num-strings = <1>;
				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";
		};
	};
};

&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>;
	wp-gpios = <&pm8941_gpios 29 0x1>;
};

&sdhc_1 {
	vdd-supply = <&pm8941_l20>;
	vdd-io-supply = <&pm8941_s3>;

	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 = <0x7 0x4 0x4>; /* 16mA, 10mA, 10mA */
	qcom,pad-drv-off = <0x0 0x0 0x0>; /* 2mA, 2mA, 2mA */

	qcom,nonremovable;
};

&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-always-on;
	qcom,vdd-io-lpm-sup;
	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 = <0x7 0x4 0x4>; /* 16mA, 10mA, 10mA */
	qcom,pad-drv-off = <0x0 0x0 0x0>; /* 2mA, 2mA, 2mA */
};

&uart7 {
	status = "ok";
	qcom,tx-gpio = <&msmgpio 41 0x00>;
	qcom,rx-gpio = <&msmgpio 42 0x00>;
	qcom,cts-gpio = <&msmgpio 43 0x00>;
	qcom,rfr-gpio = <&msmgpio 44 0x00>;
};

&usb3 {
	qcom,otg-capability;
};

&pm8941_chg {
	status = "ok";

	qcom,chg-chgr@1000 {
		status = "ok";
	};

	qcom,chg-buck@1100 {
		status = "ok";
	};

	qcom,chg-usb-chgpth@1300 {
		status = "ok";
	};

	qcom,chg-dc-chgpth@1400 {
		status = "ok";
	};

	qcom,chg-boost@1500 {
		status = "ok";
	};

	qcom,chg-misc@1600 {
		status = "ok";
	};
};

&pm8941_gpios {
	gpio@c000 { /* GPIO 1 */
	};

	gpio@c100 { /* GPIO 2 */
	};

	gpio@c200 { /* GPIO 3 */
		qcom,mode = <0>;
		qcom,pull = <0>;
		qcom,vin-sel = <2>;
		qcom,src-sel = <0>;
	};

	gpio@c300 { /* GPIO 4 */
		qcom,mode = <0>;
		qcom,pull = <0>;
		qcom,vin-sel = <2>;
		qcom,src-sel = <0>;
	};

	gpio@c400 { /* GPIO 5 */
		qcom,mode = <0>;
		qcom,pull = <0>;
		qcom,vin-sel = <2>;
		qcom,src-sel = <0>;
	};

	gpio@c500 { /* GPIO 6 */
	};

	gpio@c600 { /* GPIO 7 */
	};

	gpio@c700 { /* GPIO 8 */
	};

	gpio@c800 { /* GPIO 9 */
	};

	gpio@c900 { /* GPIO 10 */
	};

	gpio@ca00 { /* GPIO 11 */
	};

	gpio@cb00 { /* GPIO 12 */
	};

	gpio@cc00 { /* GPIO 13 */
	};

	gpio@cd00 { /* GPIO 14 */
	};

	gpio@ce00 { /* GPIO 15 */
		qcom,mode = <1>;
		qcom,output-type = <0>;
		qcom,pull = <5>;
		qcom,vin-sel = <2>;
		qcom,out-strength = <3>;
		qcom,src-sel = <2>;
		qcom,master-en = <1>;
	};

	gpio@cf00 { /* GPIO 16 */
		qcom,mode = <1>;
		qcom,output-type = <0>;
		qcom,pull = <2>;
		qcom,vin-sel = <2>;
		qcom,out-strength = <2>;
		qcom,src-sel = <2>;
		qcom,master-en = <1>;
	};

	gpio@d000 { /* GPIO 17 */
	};

	gpio@d100 { /* GPIO 18 */
		/* usb2_otg_sw regulator enable */
		qcom,mode = <1>;		/* Digital output */
		qcom,output-type = <0>;		/* CMOS logic */
		qcom,invert = <0>; 		/* Output low initially */
		qcom,vin-sel = <2>; 		/* PM8941 S3 = 1.8 V */
		qcom,src-sel = <0>; 		/* Constant */
		qcom,out-strength = <2>;	/* Medium drive strength */
		qcom,master-en = <1>;		/* Enable GPIO */
	};

	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 = <2>;	/* QPNP_PIN_OUT_STRENGTH_MED */
		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,output-type = <0>;		/* QPNP_PIN_OUT_BUF_CMOS */
		qcom,invert = <0>; 		/* Output low initially */
		qcom,pull = <5>;		/* QPNP_PIN_PULL_NO */
		qcom,vin-sel = <2>;		/* QPNP_PIN_VIN2 */
		qcom,out-strength = <2>;	/* QPNP_PIN_OUT_STRENGTH_MED */
		qcom,src-sel = <0>;		/* QPNP_PIN_SEL_FUNC_CONSTANT */
		qcom,master-en = <1>;
	};

	gpio@d400 { /* GPIO 21 */
	};

	gpio@d500 { /* GPIO 22 */
	};

	gpio@d600 { /* GPIO 23 */
	};

	gpio@d700 { /* GPIO 24 */
	};

	gpio@d800 { /* GPIO 25 */
	};

	gpio@d900 { /* GPIO 26 */
	};

	gpio@da00 { /* GPIO 27 */
	};

	gpio@db00 { /* GPIO 28 */
	};

	gpio@dc00 { /* GPIO 29 */
		qcom,pull = <0>; /* set to default pull */
		qcom,master-en = <1>;
		qcom,vin-sel = <2>; /* select 1.8 V source */
	};

	gpio@dd00 { /* GPIO 30 */
	};

	gpio@de00 { /* GPIO 31 */
	};

	gpio@df00 { /* GPIO 32 */
	};

	gpio@e000 { /* GPIO 33 */
	};

	gpio@e100 { /* GPIO 34 */
	};

	gpio@e200 { /* GPIO 35 */
	};

	gpio@e300 { /* GPIO 36 */
	};
};

&pm8941_mpps {

	mpp@a000 { /* MPP 1 */
		status = "disabled";
	};

	mpp@a100 { /* MPP 2 */
	};

	mpp@a200 { /* MPP 3 */
	};

	mpp@a300 { /* MPP 4 */
	};

	mpp@a400 { /* MPP 5 */
		/* SPI_ETH 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,master-en = <1>; /* ENABLE MPP */
	};

	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,master-en = <1>; /* ENABLE MPP */
	};

	mpp@a600 { /* MPP 7 */
	};

	mpp@a700 { /* MPP 8 */
	};
};

&pm8841_mpps {

	mpp@a000 { /* MPP 1 */
	};

	mpp@a100 { /* MPP 2 */
	};

	mpp@a200 { /* MPP 3 */
	};

	mpp@a300 { /* MPP 4 */
	};
};

/* CoreSight */
&tpiu {
	qcom,seta-gpios = <&msmgpio 31 0>,
			  <&msmgpio 32 0>,
			  <&msmgpio 33 0>,
			  <&msmgpio 34 0>,
			  <&msmgpio 35 0>,
			  <&msmgpio 36 0>,
			  <&msmgpio 37 0>,
			  <&msmgpio 38 0>,
			  <&msmgpio 39 0>,
			  <&msmgpio 40 0>,
			  <&msmgpio 41 0>,
			  <&msmgpio 42 0>,
			  <&msmgpio 43 0>,
			  <&msmgpio 44 0>,
			  <&msmgpio 45 0>,
			  <&msmgpio 46 0>,
			  <&msmgpio 47 0>,
			  <&msmgpio 48 0>;
	qcom,seta-gpios-func = <4 4 4 3 4 4 4 3 4 3 5 5 5 5 4 4 5 5>;
	qcom,seta-gpios-drv =  <7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7>;
	qcom,seta-gpios-pull = <0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0>;
	qcom,seta-gpios-dir =  <2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2>;

	qcom,setb-gpios = <&msmgpio 15 0>,
			  <&msmgpio 16 0>,
			  <&msmgpio 17 0>,
			  <&msmgpio 18 0>,
			  <&msmgpio 19 0>,
			  <&msmgpio 20 0>,
			  <&msmgpio 21 0>,
			  <&msmgpio 22 0>,
			  <&msmgpio 23 0>,
			  <&msmgpio 24 0>,
			  <&msmgpio 25 0>,
			  <&msmgpio 26 0>,
			  <&msmgpio 27 0>,
			  <&msmgpio 28 0>,
			  <&msmgpio 89 0>,
			  <&msmgpio 90 0>,
			  <&msmgpio 91 0>,
			  <&msmgpio 92 0>;
	qcom,setb-gpios-func = <2 2 2 2 5 5 5 5 6 6 6 7 7 5 2 3 3 3>;
	qcom,setb-gpios-drv =  <7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7>;
	qcom,setb-gpios-pull = <0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0>;
	qcom,setb-gpios-dir =  <2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2>;
};

&slim_msm {
	taiko_codec {
		qcom,cdc-micbias1-ext-cap;
		qcom,cdc-micbias3-ext-cap;
		qcom,cdc-micbias4-ext-cap;
	};
};
