/* Copyright (c) 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.
 */

&soc {
	serial@f991e000 {
		status = "ok";
	};

	i2c@f9923000{
		atmel_mxt_ts@4a {
		compatible = "atmel,mxt-ts";
		reg = <0x4a>;
		interrupt-parent = <&msmgpio>;
		interrupts = <1 0x2002>;
		vdd_ana-supply = <&pm8110_l19>;
		vcc_i2c-supply = <&pm8110_l14>;
		atmel,reset-gpio = <&msmgpio 0 0x00>;
		atmel,irq-gpio = <&msmgpio 1 0x00>;
		atmel,panel-coords = <0 0 508 880>;
		atmel,display-coords = <0 0 480 800>;
		atmel,i2c-pull-up;
		atmel,no-force-update;
		atmel,no-lpm-support;
		atmel,cfg_1 {
			atmel,family-id = <0x81>;
			atmel,variant-id = <0x15>;
			atmel,version = <0x11>;
			atmel,build = <0xaa>;
			atmel,config = [
				/* Object 6, Instance = 0 */
				00 00 00 00 00 00
				/* Object 38, Instance = 0 */
				1D 03 00 1E 07 0D 00 00
				/* Object 7, Instance = 0 */
				20 08 32
				/* Object 8, Instance = 0 */
				19 00 14 14 FF 00 FF 00 00 00
				/* Object 9, Instance = 0 */
				83 00 00 13 0B 00 20 32 01 03
				00 32 05 30 0A 05 0A 00 70 03
				FC 01 04 2F F8 DC 00 00 40 00
				00 0A 00 00 02
				/* Object 18, Instance = 0 */
				00 00
				/* Object 19, Instance = 0 */
				00 00 00 00 00 00
				/* Object 25, Instance = 0 */
				03 00 18 79 A8 61
				/* Object 58, Instance = 0 */
				00 00 00 00 00 00 00 00 00 00
				00
				/* Object 42, Instance = 0 */
				00 00 00 00 00 00 00 00
				/* Object 46, Instance = 0 */
				04 03 08 10 00 00 00 00 00
				/* Object 47, Instance = 0 */
				00 00 00 00 00 00 00 00 00 00
				/* Object 48, Instance = 0 */
				00 00 00 00 00 00 00 00 00 00
				00 00 00 00 00 00 00 00 00 00
				00 00 00 00 00 00 00 00 00 00
				00 00 00 00 00 00 00 00 00 00
				00 00 00 00 00 00 00 00 00 00
				00 00 00 00
				/* Object 55, Instance = 0 */
				00 00 00 00
				];
			};
		};

		synaptics@20 {
			compatible = "synaptics,rmi4";
			reg = <0x20>;
			interrupt-parent = <&msmgpio>;
			interrupts = <1 0x2002>;
			vdd-supply = <&pm8110_l19>;
			vcc_i2c-supply = <&pm8110_l14>;
			synaptics,reset-gpio = <&msmgpio 0 0x00>;
			synaptics,irq-gpio = <&msmgpio 1 0x2008>;
			synaptics,button-map = <139 102 158>;
			synaptics,i2c-pull-up;
			synaptics,power-down;
			synaptics,disable-gpios;
		};
	};

	gen-vkeys {
		compatible = "qcom,gen-vkeys";
		label = "atmel_mxt_ts";
		qcom,disp-maxx = <480>;
		qcom,disp-maxy = <800>;
		qcom,panel-maxx = <508>;
		qcom,panel-maxy = <880>;
		qcom,key-codes = <158 102 139>;
		qcom,y-offset = <35>;
	};

	gpio_keys {
		compatible = "gpio-keys";
		input-name = "gpio-keys";

		camera_snapshot {
			label = "camera_snapshot";
			gpios = <&msmgpio 73 0x1>;
			linux,input-type = <1>;
			linux,code = <0x2fe>;
			gpio-key,wakeup;
			debounce-interval = <15>;
		};

		camera_focus {
			label = "camera_focus";
			gpios = <&msmgpio 74 0x1>;
			linux,input-type = <1>;
			linux,code = <0x210>;
			gpio-key,wakeup;
			debounce-interval = <15>;
		};

		vol_up {
			label = "volume_up";
			gpios = <&msmgpio 72 0x1>;
			linux,input-type = <1>;
			linux,code = <115>;
			gpio-key,wakeup;
			debounce-interval = <15>;
		};
	};

	sound {
		qcom,audio-routing =
			"RX_BIAS", "MCLK",
			"INT_LDO_H", "MCLK",
			"MIC BIAS External", "Handset Mic",
			"MIC BIAS Internal2", "Headset Mic",
			"AMIC1", "MIC BIAS External",
			"AMIC2", "MIC BIAS Internal2",
			"MIC BIAS External", "Digital Mic1",
			"MIC BIAS External", "Digital Mic2",
			"DMIC1", "MIC BIAS External",
			"DMIC2", "MIC BIAS External";
		qcom,headset-jack-type-NC;
    };
};

&i2c_cdc  {
	msm8x10_wcd_codec@0d{
		compatible = "qcom,msm8x10-wcd-i2c";
		reg = <0x0d>;

		interrupt-parent = <&wcd9xxx_intc>;
		interrupts = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
			      17 18 19 20 21 22 23>;

		cdc-vdda-cp-supply = <&pm8110_s4>;
		qcom,cdc-vdda-cp-voltage = <1800000 2150000>;
		qcom,cdc-vdda-cp-current = <650000>;

		cdc-vdda-h-supply = <&pm8110_l6>;
		qcom,cdc-vdda-h-voltage = <1800000 1800000>;
		qcom,cdc-vdda-h-current = <25000>;

		cdc-vdd-px-supply = <&pm8110_l6>;
		qcom,cdc-vdd-px-voltage = <1800000 1800000>;
		qcom,cdc-vdd-px-current = <10000>;

		cdc-vdd-1p2v-supply = <&pm8110_l4>;
		qcom,cdc-vdd-1p2v-voltage = <1200000 1200000>;
		qcom,cdc-vdd-1p2v-current = <5000>;

		cdc-vdd-mic-bias-supply = <&pm8110_l20>;
		qcom,cdc-vdd-mic-bias-voltage = <3075000 3075000>;
		qcom,cdc-vdd-mic-bias-current = <25000>;

		qcom,cdc-micbias-ldoh-v = <0x3>;
		qcom,cdc-micbias-cfilt-sel = <0x0>;
		qcom,cdc-micbias-cfilt-mv = <2700>;
		qcom,cdc-mclk-clk-rate = <12288000>;

		qcom,cdc-static-supplies = "cdc-vdda-h",
					   "cdc-vdd-px",
					   "cdc-vdd-1p2v";

		qcom,cdc-on-demand-supplies = "cdc-vdda-cp",
					      "cdc-vdd-mic-bias";
		qcom,cdc-micbias1-ext-cap;
	};

	msm8x10_wcd_codec@77{
		compatible = "qcom,msm8x10-wcd-i2c";
		reg = <0x77>;
	};

	msm8x10_wcd_codec@66{
		compatible = "qcom,msm8x10-wcd-i2c";
		reg = <0x66>;
	};

	msm8x10_wcd_codec@55{
		compatible = "qcom,msm8x10-wcd-i2c";
		reg = <0x55>;
	};
};

&spmi_bus {
	qcom,pm8110@0 {
		qcom,leds@a100 {
			status = "okay";
			qcom,led_mpp_2 {
				label = "mpp";
				linux,name = "button-backlight";
				linux-default-trigger = "hr-trigger";
				qcom,default-state = "off";
				qcom,max-current = <40>;
				qcom,id = <6>;
				qcom,source-sel = <1>;
				qcom,mode-ctrl = <0x60>;
				qcom,mode = "manual";
			};
		};

		qcom,leds@a200 {
			status = "okay";
			qcom,led_mpp_3 {
				label = "mpp";
				linux,name = "wled-backlight";
				linux,default-trigger = "bkl-trigger";
				qcom,default-state = "on";
				qcom,max-current = <40>;
				qcom,id = <6>;
				qcom,source-sel = <8>;
				qcom,mode-ctrl = <0x10>;
				qcom,pwm-channel = <0>;
				qcom,pwm-us = <27>;
				qcom,vin-ctrl = <0x03>;
				qcom,mode = "pwm";
			};
		};
	};
};

&spmi_bus {
	qcom,pm8110@1 {
		qcom,vibrator@c000 {
			status = "okay";
			qcom,vib-timeout-ms = <15000>;
			qcom,vib-vtg-level-mV = <3100>;
		};
	};
};

&sdhc_1 {
	vdd-supply = <&pm8110_l17>;
	qcom,vdd-voltage-level = <2900000 2900000>;
	qcom,vdd-current-level = <200 400000>;

	vdd-io-supply = <&pm8110_l6>;
	qcom,vdd-io-always-on;
	qcom,vdd-io-voltage-level = <1800000 1800000>;
	qcom,vdd-io-current-level = <200 60000>;

	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,clk-rates = <400000 25000000 50000000 100000000 200000000>;
	qcom,bus-speed-mode = "HS200_1p8v", "DDR_1p8v";
	qcom,nonremovable;

	status = "ok";
};

&sdhc_2 {
	vdd-supply = <&pm8110_l18>;
	qcom,vdd-voltage-level = <2950000 2950000>;
	qcom,vdd-current-level = <15000 400000>;

	vdd-io-supply = <&pm8110_l21>;
	qcom,vdd-io-voltage-level = <1800000 2950000>;
	qcom,vdd-io-current-level = <200 50000>;

	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,clk-rates = <400000 25000000 50000000 100000000 200000000>;

	#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 42 0x3>;
	interrupt-names = "hc_irq", "pwr_irq", "status_irq";
	cd-gpios = <&msmgpio 42 0x1>;

	status = "ok";
};

&pm8110_chg {
	status = "ok";
	qcom,charging-disabled;
	qcom,use-default-batt-values;

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

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

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

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

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

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

	gpio@c200 { /* GPIO 3 */
	};

	gpio@c300 { /* GPIO 4 */
	};
};

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

	mpp@a100 { /* MPP 2 */
		status = "disabled";
	};

	mpp@a200 { /* MPP 3 */
		status = "disabled";
	};

	mpp@a300 { /* MPP 4 */
		/* PA_THERM config */
		qcom,mode = <4>; /* AIN input */
		qcom,invert = <1>; /* Enable MPP */
		qcom,ain-route = <3>; /* AMUX 8 */
		qcom,master-en = <1>;
		qcom,src-sel = <0>; /* Function constant */
	};
};

/* CoreSight */
&tpiu {
	qcom,seta-gpios = <&msmgpio 4 0>,
			  <&msmgpio 5 0>,
			  <&msmgpio 6 0>,
			  <&msmgpio 7 0>,
			  <&msmgpio 22 0>,
			  <&msmgpio 23 0>,
			  <&msmgpio 24 0>,
			  <&msmgpio 25 0>,
			  <&msmgpio 26 0>,
			  <&msmgpio 27 0>,
			  <&msmgpio 28 0>,
			  <&msmgpio 29 0>,
			  <&msmgpio 30 0>,
			  <&msmgpio 31 0>,
			  <&msmgpio 94 0>,
			  <&msmgpio 95 0>,
			  <&msmgpio 96 0>,
			  <&msmgpio 97 0>;
	qcom,seta-gpios-func = <9 9 8 11 2 2 2 2 2 2 3 2 3 3 4 4 4 4>;
	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 8 0>,
			  <&msmgpio 10 0>,
			  <&msmgpio 11 0>,
			  <&msmgpio 13 0>,
			  <&msmgpio 14 0>,
			  <&msmgpio 15 0>,
			  <&msmgpio 16 0>,
			  <&msmgpio 17 0>,
			  <&msmgpio 18 0>,
			  <&msmgpio 19 0>,
			  <&msmgpio 20 0>,
			  <&msmgpio 21 0>,
			  <&msmgpio 42 0>,
			  <&msmgpio 80 0>,
			  <&msmgpio 81 0>,
			  <&msmgpio 82 0>,
			  <&msmgpio 83 0>,
			  <&msmgpio 84 0>;
	qcom,setb-gpios-func = <10 8 8 6 9 9 9 9 9 9 9 9 5 7 7 8 8 8>;
	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>;
};

&mdss_mdp {
	qcom,mdss-pref-prim-intf = "dsi";
};

&mdss_dsi0 {
	qcom,dsi-pref-prim-pan = <&dsi_truly_wvga_vid>;
};

&dsi_truly_wvga_vid {
	qcom,cont-splash-enabled;
};

&dsi_truly_wvga_cmd {
	qcom,cont-splash-enabled;
};
