/* Copyright (c) 2014, 2020, 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 "msm8909.dtsi"
#include "msm8909-pm8909.dtsi"
#include "msm8909-pinctrl.dtsi"

/ {
	model = "Qualcomm Technologies, Inc. MSM8909 QRD";
	compatible = "qcom,msm8909-qrd", "qcom,msm8909", "qcom,qrd";
};

&blsp1_uart1 {
	status = "ok";
	pinctrl-names = "default";
	pinctrl-0 = <&uart_console_sleep>;
};

&qcom_rng {
	status = "okay";
};

&qcom_crypto {
	status = "okay";
};

&qcom_cedev {
	status = "okay";
};

&qcom_seecom {
	status = "okay";
};

&qcom_tzlog {
	status = "okay";
};

&soc {
	gpio_keys {
		compatible = "gpio-keys";
		input-name = "gpio-keys";
		pinctrl-names = "tlmm_gpio_key_active","tlmm_gpio_key_suspend";
		pinctrl-0 = <&gpio_key_active>;
		pinctrl-1 = <&gpio_key_suspend>;

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

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

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

	pinctrl-names = "active", "sleep";
	pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
	pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;

	qcom,bus-speed-mode = "HS200_1p8v", "DDR_1p8v";
	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 &msm_gpio 38 0>;
	interrupt-names = "hc_irq", "pwr_irq", "status_irq";
	cd-gpios = <&msm_gpio 38 0x1>;

	vdd-supply = <&pm8909_l11>;
	qcom,vdd-voltage-level = <1800000 2950000>;
	qcom,vdd-current-level = <15000 400000>;

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

	pinctrl-names = "active", "sleep";
	pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;

	status = "ok";
};

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

/* CoreSight */
&tpiu {
	pinctrl-names = "sdcard", "trace", "swduart",
			"swdtrc", "jtag", "spmi";
	/* NIDnT */
	pinctrl-0 = <&qdsd_clk_sdcard &qdsd_cmd_sdcard
		     &qdsd_data0_sdcard &qdsd_data1_sdcard
		     &qdsd_data2_sdcard &qdsd_data3_sdcard>;
	pinctrl-1 = <&qdsd_clk_trace &qdsd_cmd_trace
		     &qdsd_data0_trace &qdsd_data1_trace
		     &qdsd_data2_trace &qdsd_data3_trace>;
	pinctrl-2 = <&qdsd_cmd_swduart &qdsd_data0_swduart
		     &qdsd_data1_swduart &qdsd_data2_swduart
		     &qdsd_data3_swduart>;
	pinctrl-3 = <&qdsd_clk_swdtrc &qdsd_cmd_swdtrc
		     &qdsd_data0_swdtrc &qdsd_data1_swdtrc
		     &qdsd_data2_swdtrc &qdsd_data3_swdtrc>;
	pinctrl-4 = <&qdsd_cmd_jtag &qdsd_data0_jtag
		     &qdsd_data1_jtag &qdsd_data2_jtag
		     &qdsd_data3_jtag>;
	pinctrl-5 = <&qdsd_clk_spmi &qdsd_cmd_spmi
		     &qdsd_data0_spmi &qdsd_data3_spmi>;
};

&android_usb {
	qcom,android-usb-cdrom;
};
