/* 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/ "msm8974-camera-sensor.dtsi"
/include/ "msm8974-leds.dtsi"

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

	qcom,mdss_dsi_toshiba_720p_video {
		status = "ok";
	};

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

	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,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";
	};
};

&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 = "off";
				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>;
};

&usb_otg {
	qcom,hsusb-otg-otg-control = <2>;
};

&uart7 {
	status = "ok";
};

&usb3 {
	qcom,otg-capability;
};

&pm8941_bms {
	status = "ok";
};

&pm8941_chg {
	status = "ok";

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

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

	qcom,chg-bat-if@1200 {
		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 = <5>;
		qcom,vin-sel = <2>;
		qcom,out-strength = <3>;
		qcom,src-sel = <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 = <2>;	/* QPNP_PIN_OUT_STRENGTH_MED */
		qcom,src-sel = <0>;		/* QPNP_PIN_SEL_FUNC_CONSTANT */
		qcom,master-en = <1>;
	};

	gpio@d300 { /* GPIO 20 */
	};

	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 */
	};

	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 */
	};
};

&slim_msm {
	taiko_codec {
		qcom,cdc-micbias2-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>;
	};
};
