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

&soc {
	int_codec: sound {
		qcom,model = "sdm439-snd-card-mtp";
		qcom,msm-hs-micbias-type = "internal";
		qcom,msm-micbias2-ext-cap;

		asoc-codec = <&stub_codec>, <&msm_digital_codec>,
				<&pmic_analog_codec>;
		asoc-codec-names = "msm-stub-codec.1", "msm-dig-codec",
					"analog-codec";
		msm-vdd-wsa-switch-supply = <&pm8953_l5>;
		qcom,msm-vdd-wsa-switch-voltage = <1800000>;
		qcom,msm-vdd-wsa-switch-current = <10000>;
	};

	clock_audio_native: audio_ext_clk_native {
		status = "disabled";
		compatible = "qcom,audio-ref-clk";
		#clock-cells = <1>;
		qcom,codec-mclk-clk-freq = <11289600>;
		qcom,audio-ref-clk-gpio = <&tlmm 66 0>;
		qcom,lpass-mclk-id = "pri_mclk";
		pinctrl-names = "sleep", "active";
		pinctrl-0 = <&cdc_mclk2_sleep>;
		pinctrl-1 = <&cdc_mclk2_active>;
	};
};


&clock_audio {
	pinctrl-names = "active", "sleep";
	pinctrl-0 = <&tasha_mclk_default>;
	pinctrl-1 = <&tasha_mclk_default>;
	qcom,audio-ref-clk-gpio = <&pm8953_gpios 1 0>;
};

&wcd9335 {
	cdc-vdd-buck-supply = <&dbu1>;
	qcom,cdc-vdd-buck-voltage = <1800000 1800000>;
	qcom,cdc-vdd-buck-current = <650000>;

	cdc-buck-sido-supply = <&dbu1>;
	qcom,cdc-buck-sido-voltage = <1800000 1800000>;
	qcom,cdc-buck-sido-current = <150000>;

	cdc-vdd-tx-h-supply = <&dbu1>;
	qcom,cdc-vdd-tx-h-voltage = <1800000 1800000>;
	qcom,cdc-vdd-tx-h-current = <25000>;

	cdc-vdd-rx-h-supply = <&dbu1>;
	qcom,cdc-vdd-rx-h-voltage = <1800000 1800000>;
	qcom,cdc-vdd-rx-h-current = <25000>;

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

	cdc-vdd-mic-bias-supply = <&pm8953_l13>;
	qcom,cdc-vdd-mic-bias-voltage = <3075000 3075000>;
	qcom,cdc-vdd-mic-bias-current = <15000>;
};

&pm8953_gpios {
	tasha_mclk {
		tasha_mclk_default: tasha_mclk_default{
			pins = "gpio1";
			function = "func1";
			qcom,drive-strength = <2>;
			power-source = <0>;
			bias-disable;
			output-low;
		};
	};
};

&pm8953_1 {
	pmic_analog_codec: analog-codec@f000 {
		status = "okay";
		compatible = "qcom,pmic-analog-codec";
		reg = <0xf000 0x200>;
		#address-cells = <2>;
		#size-cells = <0>;
		interrupt-parent = <&spmi_bus>;
		interrupts = <0x1 0xf0 0x0 IRQ_TYPE_NONE>,
			<0x1 0xf0 0x1 IRQ_TYPE_NONE>,
			<0x1 0xf0 0x2 IRQ_TYPE_NONE>,
			<0x1 0xf0 0x3 IRQ_TYPE_NONE>,
			<0x1 0xf0 0x4 IRQ_TYPE_NONE>,
			<0x1 0xf0 0x5 IRQ_TYPE_NONE>,
			<0x1 0xf0 0x6 IRQ_TYPE_NONE>,
			<0x1 0xf0 0x7 IRQ_TYPE_NONE>,
			<0x1 0xf1 0x0 IRQ_TYPE_NONE>,
			<0x1 0xf1 0x1 IRQ_TYPE_NONE>,
			<0x1 0xf1 0x2 IRQ_TYPE_NONE>,
			<0x1 0xf1 0x3 IRQ_TYPE_NONE>,
			<0x1 0xf1 0x4 IRQ_TYPE_NONE>,
			<0x1 0xf1 0x5 IRQ_TYPE_NONE>;
		interrupt-names = "spk_cnp_int",
				"spk_clip_int",
				"spk_ocp_int",
				"ins_rem_det1",
				"but_rel_det",
				"but_press_det",
				"ins_rem_det",
				"mbhc_int",
				"ear_ocp_int",
				"hphr_ocp_int",
				"hphl_ocp_det",
				"ear_cnp_int",
				"hphr_cnp_int",
				"hphl_cnp_int";

		cdc-vdda-cp-supply = <&pm8953_s4>;
		qcom,cdc-vdda-cp-voltage = <1900000 2050000>;
		qcom,cdc-vdda-cp-current = <500000>;

		cdc-vdd-io-supply = <&pm8953_l5>;
		qcom,cdc-vdd-io-voltage = <1800000 1800000>;
		qcom,cdc-vdd-io-current = <5000>;

		cdc-vdd-pa-supply = <&pm8953_s4>;
		qcom,cdc-vdd-pa-voltage = <1900000 2050000>;
		qcom,cdc-vdd-pa-current = <260000>;

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

		qcom,cdc-mclk-clk-rate = <9600000>;

		qcom,cdc-static-supplies = "cdc-vdd-io",
					"cdc-vdd-pa",
					"cdc-vdda-cp";

		qcom,cdc-on-demand-supplies = "cdc-vdd-mic-bias";

		msm_digital_codec: msm-dig-codec {
			compatible = "qcom,msm-digital-codec";
			reg = <0xc0f0000 0x0>;
		};
	};
};
