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

/dts-v1/;

#include "apq8017.dtsi"
#include "msm8917-cdp.dtsi"
#include "msm8917-pmi8937.dtsi"
#include "apq8017-rome.dtsi"
#include "apq8017-audio.dtsi"

/ {
	model = "Qualcomm Technologies, Inc. APQ8017-PMI8937 CDP \
						with WCD codec/Rome card";
	compatible = "qcom,apq8017-cdp", "qcom,apq8017", "qcom,cdp";
	qcom,board-id= <1 2>;
	qcom,pmic-id = <0x10019 0x020037 0x0 0x0>;
};

&blsp1_uart1 {
	status = "ok";
};

&sdhc_2 {
	/* device core power supply */
	/delete-property/vdd-supply;
	/delete-property/qcom,vdd-voltage-level;
	/delete-property/qcom,vdd-current-level;

	/* device communication power supply */
	vdd-io-supply = <&pm8937_l5>;
	qcom,vdd-io-always-on;
	qcom,vdd-io-voltage-level = <1800000 1800000>;
	qcom,vdd-io-current-level = <200 325000>;

	qcom,core_3_0v_support;
	qcom,nonremovable;

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

	#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 &tlmm 124 0x4>;
	interrupt-names = "hc_irq", "pwr_irq", "sdiowakeup_irq";

	/delete-property/cd-gpios;
	/delete-property/qcom,devfreq,freq-table;

	status = "ok";

};

&mdss_fb0 {
	/delete-node/ qcom,cont-splash-memory;
};

/delete-node/ &cont_splash_mem;

&soc {
	gpio_keys {
		/delete-node/ home;
	};
};

&modem_mem {
	reg = <0x0 0x86800000 0x0 0x1500000>;
};

&adsp_fw_mem {
	reg = <0x0 0x87d00000 0x0 0x1100000>;
};

&wcnss_fw_mem {
	reg = <0x0 0x88e00000 0x0 0x700000>;
};

&secure_mem {
	status = "disabled";
};
