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

/dts-v1/;
/plugin/;

#include "sdm429-spyro-qrd-evt.dtsi"

/ {
	model = "Qualcomm Technologies, Inc. SDA429 QRD Spyro DVT Overlay";
	compatible = "qcom,sdm429w-qrd","qcom,sdm429w","qcom,sda429w";
	qcom,msm-id = <437 0x0>;
	qcom,board-id = <0x00010b 6>;
	qcom,pmic-id = <0x0002001b 0x0 0x0 0x0>;
};

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

&adsp_fw_mem {
	reg = <0x0 0x88700000 0x0 0x1500000>;
};

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

&usb_otg {
	HSUSB_3p3-supply = <&L16A>;
};

&msm_dig_codec {
	cdc-vdd-digital-supply = <&pm660_l11>;
};

&ext_smart_pa {
	dvdd-supply = <&pm660_l11>;
};
