/* Copyright (c) 2013-2014, 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-sharp-qhd-video.dtsi"
/include/ "msm8974-camera-sensor-dragonboard.dtsi"
/include/ "msm8974-leds.dtsi"
/include/ "msm-rdbg.dtsi"

&vph_pwr_vreg {
	status = "ok";
};

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

	qcom,mdss_dsi@fd922800 {
		qcom,dsi-pref-prim-pan = <&dsi_sharp_qhd_vid>;
	};

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

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

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

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

		general {
			label = "general";
			gpios = <&pm8941_gpios 23 0x1>;
			linux,input-type = <1>;
			linux,code = <102>;
			gpio-key,wakeup;
			debounce-interval = <15>;
		};
	};

	bt_ar3002 {
		compatible = "qca,ar3002";
		qca,bt-reset-gpio = <&pm8941_gpios 34 0>;
	};

	hsic_hub {
		compatible = "qcom,hsic-smsc-hub";
		smsc,model-id = <4604>;
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;
		smsc,reset-gpio = <&pm8941_gpios 8 0x00>;
		/* Dragonboard has an always-on VBUS supply for HSIC hub,
		 * providing a dummy regulator for the hub driver
		 */
		hub-vbus-supply = <&vph_pwr_vreg>;

		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_vdd_dig-supply = <&pm8841_s2_corner>;
			HSIC_GDSC-supply = <&gdsc_usb_hsic>;
			hsic,strobe-gpio = <&msmgpio 144 0x00>;
			hsic,data-gpio = <&msmgpio 145 0x00>;
			hsic,ignore-cal-pad-config;
			hsic,strobe-pad-offset = <0x2050>;
			hsic,data-pad-offset = <0x2054>;
			qcom,phy-susp-sof-workaround;
			hsic,vdd-voltage-level = <1 5 7>;

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

	i2c@f9923000 {
		status = "ok";
		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_s3>;
			atmel,reset-gpio = <&msmgpio 60 0x00>;
			atmel,irq-gpio = <&msmgpio 61 0x00>;
			atmel,panel-coords = <0  0 566 1067>;
			atmel,display-coords = <0 0 540 960>;
			atmel,i2c-pull-up;
			atmel,cfg_1 {
				atmel,family-id = <0x81>;
				atmel,variant-id = <0x19>;
				atmel,version = <0x10>;
				atmel,build = <0xaa>;
				atmel,config = [
					/* Object 38, Instance = 0 */
					0F 02 00 17 04 0C 00 00
					/* Object 7, Instance = 0 */
					30 FF 19
					/* Object 8, Instance = 0 */
					1B 00 05 01 00 00 08 08 00 00
					/* Object 9, Instance = 0 */
					83 00 00 13 0B 00 10 23 01 03
					0A 0F 01 0B 04 05 28 0A 2B 04
					36 02 00 00 00 00 8F 28 8F 50
					12 0F 32 32 02
					/* 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 00 00 00 00
					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
					/* Object 40, Instance = 0 */
					00 00 00 00 00
					/* Object 42, Instance = 0 */
					00 00 00 00 00 00 00 00
					/* Object 46, Instance = 0 */
					00 03 10 30 00 00 01 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
					];
			};
		};
	};

	gen-vkeys {
		compatible = "qcom,gen-vkeys";
		label = "atmel_mxt_ts";
		qcom,disp-maxx = <540>;
		qcom,disp-maxy = <960>;
		qcom,panel-maxx = <566>;
		qcom,panel-maxy = <1067>;
		qcom,key-codes = <158 139 102 217>;
	};

	sound {
		qcom,model = "apq8074-taiko-db-snd-card";
		qcom,hdmi-audio-rx;

		qcom,audio-routing =
			"RX_BIAS", "MCLK",
			"LDO_H", "MCLK",
			"AMIC1", "MIC BIAS1 External",
			"MIC BIAS1 External", "Analog Mic4",
			"AMIC2", "MIC BIAS2 External",
			"MIC BIAS2 External", "Headset Mic",
			"AMIC3", "MIC BIAS2 External",
			"MIC BIAS2 External", "ANCRight Headset Mic",
			"AMIC4", "MIC BIAS2 External",
			"MIC BIAS2 External", "ANCLeft Headset Mic",
			"AMIC5", "MIC BIAS4 External",
			"MIC BIAS4 External", "Analog Mic6",
			"AMIC6", "MIC BIAS3 External",
			"MIC BIAS3 External", "Analog Mic7",
			"DMIC1", "MIC BIAS3 External",
			"MIC BIAS3 External", "Digital Mic1",
			"DMIC2", "MIC BIAS3 External",
			"MIC BIAS3 External", "Digital Mic2",
			"DMIC3", "MIC BIAS4 External",
			"MIC BIAS4 External", "Digital Mic3",
			"DMIC4", "MIC BIAS3 External",
			"MIC BIAS3 External", "Digital Mic4",
			"DMIC5", "MIC BIAS4 External",
			"MIC BIAS4 External", "Digital Mic5",
			"DMIC6", "MIC BIAS4 External",
			"MIC BIAS4 External", "Digital Mic6";


		qcom,prim-auxpcm-gpio-clk  = <&msmgpio 74 0>;
		qcom,prim-auxpcm-gpio-sync = <&msmgpio 75 0>;
		qcom,prim-auxpcm-gpio-din  = <&msmgpio 76 0>;
		qcom,prim-auxpcm-gpio-dout = <&msmgpio 77 0>;
		qcom,prim-auxpcm-gpio-set = "prim-gpio-tert";

		qcom,cdc-micbias2-headset-only;
	};

	qcom,pronto@fb21b000 {
		status = "disabled";
	};

	qcom,iris-fm {
		status = "disabled";
	};

	qcom,wcnss-wlan@fb000000 {
		status = "disabled";
	};

	qcom,smd-wcnss {
		status = "disabled";
	};

	qcom,smsm-wcnss {
		status = "disabled";
	};
};

&mdss_fb0 {
	qcom,memory-reservation-size = <0x1000000>; /* size 16MB */
};

&sdcc3 {
	qcom,sup-voltages = <2000 2000>;
	status = "ok";
};

&pm8941_l19 {
	regulator-min-microvolt = <3300000>;
	regulator-max-microvolt = <3300000>;
	qcom,init-voltage = <3300000>;
	regulator-always-on;
};

&pm8941_l10 {
	regulator-min-microvolt = <1800000>;
	regulator-max-microvolt = <1800000>;
	qcom,init-voltage = <1800000>;
	regulator-always-on;
};

&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>;
};

&usb_otg {
	status = "ok";
	qcom,hsusb-otg-otg-control = <2>;
	qcom,hsusb-otg-mode = <3>;
	vbus_otg-supply = <&pm8941_mvs1>;
	qcom,usb2-enable-hsphy2;
	qcom,dp-manual-pullup;

	#address-cells = <0>;
	interrupt-parent = <&usb_otg>;
	interrupts = <0 1 2>;
	#interrupt-cells = <1>;
	interrupt-map-mask = <0xffffffff>;
	interrupt-map = <0 &intc 0 134 0
		1 &intc 0 140 0
		2 &spmi_bus 0x0 0x0 0x9 0x0>;
	interrupt-names = "core_irq", "async_irq", "pmic_id_irq";
};

&usb3 {
	interrupts = <0>;	/* remove pmic_id_irq; used by &usb_otg */
	qcom,charging-disabled;
	vbus_dwc3-supply = <0>;
	dwc3@f9200000 {
		host-only-mode;
	};
};

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

		/* If boot isn't available, vph_pwr_vreg can be used instead */
		cdc-vdd-spkdrv-supply = <&pm8941_boost>;
		qcom,cdc-vdd-spkdrv-voltage = <5000000 5000000>;
		qcom,cdc-vdd-spkdrv-current = <1250000>;

		qcom,cdc-on-demand-supplies = "cdc-vdd-spkdrv";
	};
};

&pm8941_gpios {
	gpio@c000 { /* GPIO 1 */
		qcom,mode = <0>;
		qcom,pull = <0>;
		qcom,vin-sel = <2>;
		qcom,src-sel = <0>;
	};

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

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

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

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

	gpio@c500 { /* GPIO 6 */
		/* TUSB3_HUB-RESET */
		qcom,mode = <1>;		/* QPNP_PIN_MODE_DIG_OUT */
		qcom,output-type = <0>;		/* QPNP_PIN_OUT_BUF_CMOS */
		qcom,pull = <0>;		/* QPNP_PIN_PULL_30 */
		qcom,vin-sel = <0>;		/* QPNP_PIN_VIN0 VPH */
		qcom,out-strength = <2>;	/* QPNP_PIN_OUT_STRENGTH_MED */
		qcom,src-sel = <0>;		/* QPNP_PIN_SEL_FUNC_CONSTANT */
		qcom,invert = <1>;		/* Keep it out of reset */
		qcom,master-en = <1>;
	};

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

	gpio@c700 { /* GPIO 8 */
		/* HSIC_HUB-RESET */
		qcom,mode = <1>;		/* DIG_OUT */
		qcom,pull = <5>;		/* PULL_NO */
		qcom,out-strength = <2>;	/* STRENGTH_MED */
		qcom,master-en = <1>;
	};

	gpio@c800 { /* GPIO 9 */
		/* GbE_RST_N */
		qcom,mode = <1>;		/* QPNP_PIN_MODE_DIG_OUT */
		qcom,output-type = <0>;		/* QPNP_PIN_OUT_BUF_CMOS */
		qcom,pull = <0>;		/* QPNP_PIN_PULL_30 */
		qcom,vin-sel = <0>;		/* QPNP_PIN_VIN0 VPH */
		qcom,out-strength = <2>;	/* QPNP_PIN_OUT_STRENGTH_MED */
		qcom,src-sel = <0>;		/* QPNP_PIN_SEL_FUNC_CONSTANT */
		qcom,invert = <1>;		/* Keep it out of reset */
		qcom,master-en = <1>;
	};

	gpio@c900 { /* GPIO 10 */
		/* SATA_RST_N */
		qcom,mode = <1>;		/* QPNP_PIN_MODE_DIG_OUT */
		qcom,output-type = <0>;		/* QPNP_PIN_OUT_BUF_CMOS */
		qcom,pull = <0>;		/* QPNP_PIN_PULL_30 */
		qcom,vin-sel = <0>;		/* QPNP_PIN_VIN0 VPH */
		qcom,out-strength = <2>;	/* QPNP_PIN_OUT_STRENGTH_MED */
		qcom,src-sel = <0>;		/* QPNP_PIN_SEL_FUNC_CONSTANT */
		qcom,invert = <1>;		/* Keep it out of reset */
		qcom,master-en = <1>;
	};

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

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

	gpio@e100 { /* GPIO 34 */
		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,invert = <0>;
		qcom,master-en = <1>;
	};

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

	mpp@a500 { /* MPP 6 */
	};

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

&spi_epm {
	status = "disabled";
};

&pm8941_lsid1 {
	qcom,leds@d000 {
		qcom,rgb_2 {
			status = "ok";
			qcom,default-state = "on";
			qcom,turn-off-delay-ms = <1000>;
		};
	};

	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 = <20>;
			qcom,ctrl-delay-us = <0>;
			qcom,boost-curr-lim = <3>;
			qcom,cp-sel = <0>;
			qcom,switch-freq = <2>;
			qcom,ovp-val = <1>;
			qcom,num-strings = <1>;
			qcom,id = <0>;
		};
	};
};

&pm8941_chg {
	status = "ok";

	qcom,charging-disabled;

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

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

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

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

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

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

&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>;

	qcom,vdd-always-on;
	qcom,vdd-lpm-sup;

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

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