/*
 * Copyright (c) 2017, 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 "sdm670-wcd.dtsi"
#include "sdm670-wsa881x.dtsi"
#include <dt-bindings/clock/qcom,audio-ext-clk.h>

&tavil_snd {
	qcom,msm-mi2s-master = <1>, <1>, <1>, <1>, <1>;
	qcom,audio-routing =
		"AIF4 VI", "MCLK",
		"RX_BIAS", "MCLK",
		"MADINPUT", "MCLK",
		"hifi amp", "LINEOUT1",
		"hifi amp", "LINEOUT2",
		"AMIC2", "MIC BIAS2",
		"MIC BIAS2", "Headset Mic",
		"AMIC3", "MIC BIAS2",
		"MIC BIAS2", "ANCRight Headset Mic",
		"AMIC4", "MIC BIAS2",
		"MIC BIAS2", "ANCLeft Headset Mic",
		"AMIC5", "MIC BIAS3",
		"MIC BIAS3", "Handset Mic",
		"DMIC0", "MIC BIAS1",
		"MIC BIAS1", "Digital Mic0",
		"DMIC1", "MIC BIAS1",
		"MIC BIAS1", "Digital Mic1",
		"DMIC2", "MIC BIAS3",
		"MIC BIAS3", "Digital Mic2",
		"DMIC3", "MIC BIAS3",
		"MIC BIAS3", "Digital Mic3",
		"DMIC4", "MIC BIAS4",
		"MIC BIAS4", "Digital Mic4",
		"DMIC5", "MIC BIAS4",
		"MIC BIAS4", "Digital Mic5",
		"SpkrLeft IN", "SPK1 OUT",
		"SpkrRight IN", "SPK2 OUT";

	qcom,msm-mbhc-hphl-swh = <1>;
	qcom,msm-mbhc-gnd-swh = <1>;
	qcom,hph-en0-gpio = <&tavil_hph_en0>;
	qcom,hph-en1-gpio = <&tavil_hph_en1>;
	qcom,msm-mclk-freq = <9600000>;
	asoc-codec = <&stub_codec>;
	asoc-codec-names = "msm-stub-codec.1";
	qcom,wsa-max-devs = <2>;
	qcom,wsa-devs = <&wsa881x_0211>, <&wsa881x_0212>,
		<&wsa881x_0213>, <&wsa881x_0214>;
	qcom,wsa-aux-dev-prefix = "SpkrLeft", "SpkrRight",
		"SpkrLeft", "SpkrRight";
};

&int_codec {
	qcom,audio-routing =
		"RX_BIAS", "INT_MCLK0",
		"SPK_RX_BIAS", "INT_MCLK0",
		"INT_LDO_H", "INT_MCLK0",
		"RX_I2S_CLK", "INT_MCLK0",
		"TX_I2S_CLK", "INT_MCLK0",
		"MIC BIAS External", "Handset Mic",
		"MIC BIAS External2", "Headset Mic",
		"MIC BIAS External", "Secondary Mic",
		"AMIC1", "MIC BIAS External",
		"AMIC2", "MIC BIAS External2",
		"AMIC3", "MIC BIAS External",
		"DMIC1", "MIC BIAS External",
		"MIC BIAS External", "Digital Mic1",
		"DMIC2", "MIC BIAS External",
		"MIC BIAS External", "Digital Mic2",
		"DMIC3", "MIC BIAS External",
		"MIC BIAS External", "Digital Mic3",
		"DMIC4", "MIC BIAS External",
		"MIC BIAS External", "Digital Mic4",
		"SpkrLeft IN", "SPK1 OUT",
		"SpkrRight IN", "SPK2 OUT",
		"PDM_IN_RX1", "PDM_OUT_RX1",
		"PDM_IN_RX2", "PDM_OUT_RX2",
		"PDM_IN_RX3", "PDM_OUT_RX3",
		"ADC1_IN", "ADC1_OUT",
		"ADC2_IN", "ADC2_OUT",
		"ADC3_IN", "ADC3_OUT";

	qcom,msm-mi2s-master = <1>, <1>, <1>, <1>, <1>;
	qcom,msm-mclk-freq = <9600000>;
	qcom,msm-mbhc-hphl-swh = <1>;
	qcom,msm-mbhc-gnd-swh = <1>;
	qcom,msm-micbias2-ext-cap;
	qcom,msm-hs-micbias-type = "external";
	qcom,cdc-pdm-gpios = <&cdc_pdm_gpios>;
	qcom,cdc-comp-gpios = <&cdc_comp_gpios>;
	qcom,cdc-dmic-gpios = <&cdc_dmic_gpios>;

	asoc-codec = <&stub_codec>, <&msm_digital_codec>,
		     <&pmic_analog_codec>, <&msm_sdw_codec>;
	asoc-codec-names = "msm-stub-codec.1", "msm-dig-codec",
			   "analog-codec", "msm_sdw_codec";

	qcom,wsa-max-devs = <2>;
	qcom,wsa-devs = <&wsa881x_211_en>, <&wsa881x_212_en>,
			<&wsa881x_213_en>, <&wsa881x_214_en>;
	qcom,wsa-aux-dev-prefix = "SpkrLeft", "SpkrRight",
				  "SpkrLeft", "SpkrRight";
};

&soc {
	wcd_usbc_analog_en1_gpio: msm_cdc_pinctrl_usbc_audio_en1 {
		compatible = "qcom,msm-cdc-pinctrl";
		pinctrl-names = "aud_active", "aud_sleep";
		pinctrl-0 = <&wcd_usbc_analog_en1_active>;
		pinctrl-1 = <&wcd_usbc_analog_en1_idle>;
	};

	cdc_pdm_gpios: cdc_pdm_pinctrl {
		compatible = "qcom,msm-cdc-pinctrl";
		pinctrl-names = "aud_active", "aud_sleep";
		pinctrl-0 = <&cdc_pdm_clk_active &cdc_pdm_sync_active
			     &cdc_pdm_rx0_active &cdc_pdm_rx1_2_active
			     &cdc_pdm_2_gpios_active>;
		pinctrl-1 = <&cdc_pdm_clk_sleep &cdc_pdm_sync_sleep
			     &cdc_pdm_rx0_sleep &cdc_pdm_rx1_2_sleep
			     &cdc_pdm_2_gpios_sleep>;
		qcom,lpi-gpios;
	};

	cdc_comp_gpios: cdc_comp_pinctrl {
		compatible = "qcom,msm-cdc-pinctrl";
		pinctrl-names = "aud_active", "aud_sleep";
		pinctrl-0 = <&cdc_rx0_comp_active &cdc_rx1_comp_active>;
		pinctrl-1 = <&cdc_rx0_comp_sleep &cdc_rx1_comp_sleep>;
		qcom,lpi-gpios;
	};

	cdc_dmic_gpios: cdc_dmic_pinctrl {
		compatible = "qcom,msm-cdc-pinctrl";
		pinctrl-names = "aud_active", "aud_sleep";
		pinctrl-0 = <&cdc_dmic12_gpios_active
			     &cdc_dmic34_gpios_active>;
		pinctrl-1 = <&cdc_dmic12_gpios_sleep
			     &cdc_dmic34_gpios_sleep>;
		qcom,lpi-gpios;
	};

	cdc_sdw_gpios: sdw_clk_data_pinctrl {
		compatible = "qcom,msm-cdc-pinctrl";
		pinctrl-names = "aud_active", "aud_sleep";
		pinctrl-0 = <&sdw_clk_active &sdw_data_active>;
		pinctrl-1 = <&sdw_clk_sleep &sdw_data_sleep>;
	};

	wsa_spkr_en1: wsa_spkr_en1_pinctrl {
		compatible = "qcom,msm-cdc-pinctrl";
		pinctrl-names = "aud_active", "aud_sleep";
		pinctrl-0 = <&spkr_1_sd_n_active>;
		pinctrl-1 = <&spkr_1_sd_n_sleep>;
	};

	wsa_spkr_en2: wsa_spkr_en2_pinctrl {
		compatible = "qcom,msm-cdc-pinctrl";
		pinctrl-names = "aud_active", "aud_sleep";
		pinctrl-0 = <&spkr_2_sd_n_active>;
		pinctrl-1 = <&spkr_2_sd_n_sleep>;
	};

	msm_sdw_codec: msm-sdw-codec@62ec1000 {
		status = "okay";
		compatible = "qcom,msm-sdw-codec";
		reg = <0x62ec1000 0x0>;
		interrupts = <0 88 0>;
		interrupt-names = "swr_master_irq";
		qcom,cdc-sdw-gpios = <&cdc_sdw_gpios>;

		swr_master {
			compatible = "qcom,swr-wcd";
			#address-cells = <2>;
			#size-cells = <0>;

			wsa881x_211_en: wsa881x_en@20170211 {
				compatible = "qcom,wsa881x";
				reg = <0x0 0x20170211>;
				qcom,spkr-sd-n-node = <&wsa_spkr_en1>;
			};

			wsa881x_212_en: wsa881x_en@20170212 {
				compatible = "qcom,wsa881x";
				reg = <0x0 0x20170212>;
				qcom,spkr-sd-n-node = <&wsa_spkr_en2>;
			};

			wsa881x_213_en: wsa881x_en@21170213 {
				compatible = "qcom,wsa881x";
				reg = <0x0 0x21170213>;
				qcom,spkr-sd-n-node = <&wsa_spkr_en1>;
			};

			wsa881x_214_en: wsa881x_en@21170214 {
				compatible = "qcom,wsa881x";
				reg = <0x0 0x21170214>;
				qcom,spkr-sd-n-node = <&wsa_spkr_en2>;
			};
		};
	};

	wcd9xxx_intc: wcd9xxx-irq {
		status = "disabled";
		compatible = "qcom,wcd9xxx-irq";
		interrupt-controller;
		#interrupt-cells = <1>;
		interrupt-parent = <&tlmm>;
		qcom,gpio-connect = <&tlmm 80 0>;
		pinctrl-names = "default";
		pinctrl-0 = <&wcd_intr_default>;
	};

	clock_audio_lnbb: audio_ext_clk_lnbb {
		status = "disabled";
		compatible = "qcom,audio-ref-clk";
		clock-names = "osr_clk";
		clocks = <&clock_rpmh RPMH_LN_BB_CLK2>;
		qcom,node_has_rpm_clock;
		#clock-cells = <1>;
	};

	wcd_rst_gpio: msm_cdc_pinctrl@64 {
		status = "disabled";
		compatible = "qcom,msm-cdc-pinctrl";
		pinctrl-names = "aud_active", "aud_sleep";
		pinctrl-0 = <&lpi_cdc_reset_active>;
		pinctrl-1 = <&lpi_cdc_reset_sleep>;
		qcom,lpi-gpios;
	};

	wdsp_mgr: qcom,wcd-dsp-mgr {
		compatible = "qcom,wcd-dsp-mgr";
		qcom,wdsp-components = <&wcd934x_cdc 0>,
				       <&wcd_spi_0 1>,
				       <&glink_spi_xprt_wdsp 2>;
					qcom,img-filename = "cpe_9340";
	};

	wdsp_glink: qcom,wcd-dsp-glink {
		compatible = "qcom,wcd-dsp-glink";
	};
};

&slim_aud {
	wcd934x_cdc: tavil_codec {
		status = "disabled";
		compatible = "qcom,tavil-slim-pgd";
		elemental-addr = [00 01 50 02 17 02];

		interrupt-parent = <&wcd9xxx_intc>;
		interrupts = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
			      17 18 19 20 21 22 23 24 25 26 27 28 29
			      30 31>;

		qcom,wcd-rst-gpio-node = <&wcd_rst_gpio>;

		clock-names = "wcd_clk";
		clocks = <&clock_audio_lnbb AUDIO_PMIC_LNBB_CLK>;

		cdc-vdd-mic-bias-supply = <&pm660l_bob>;
		qcom,cdc-vdd-mic-bias-voltage = <3312000 3312000>;
		qcom,cdc-vdd-mic-bias-current = <30400>;

		qcom,cdc-static-supplies = "cdc-vdd-mic-bias";

		qcom,cdc-micbias1-mv = <1800>;
		qcom,cdc-micbias2-mv = <1800>;
		qcom,cdc-micbias3-mv = <1800>;
		qcom,cdc-micbias4-mv = <1800>;

		qcom,cdc-mclk-clk-rate = <9600000>;
		qcom,cdc-slim-ifd = "tavil-slim-ifd";
		qcom,cdc-slim-ifd-elemental-addr = [00 00 50 02 17 02];
		qcom,cdc-dmic-sample-rate = <4800000>;
		qcom,cdc-mad-dmic-rate = <600000>;

		qcom,wdsp-cmpnt-dev-name = "tavil_codec";

		wcd_spi_0: wcd_spi {
			compatible = "qcom,wcd-spi-v2";
			qcom,master-bus-num = <0>;
			qcom,chip-select = <0>;
			qcom,max-frequency = <24000000>;
			qcom,mem-base-addr = <0x100000>;
		};
	};
};

&pm660l_3 {
	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 = <0x3 0xf0 0x0 IRQ_TYPE_NONE>,
			     <0x3 0xf0 0x1 IRQ_TYPE_NONE>,
			     <0x3 0xf0 0x2 IRQ_TYPE_NONE>,
			     <0x3 0xf0 0x3 IRQ_TYPE_NONE>,
			     <0x3 0xf0 0x4 IRQ_TYPE_NONE>,
			     <0x3 0xf0 0x5 IRQ_TYPE_NONE>,
			     <0x3 0xf0 0x6 IRQ_TYPE_NONE>,
			     <0x3 0xf0 0x7 IRQ_TYPE_NONE>,
			     <0x3 0xf1 0x0 IRQ_TYPE_NONE>,
			     <0x3 0xf1 0x1 IRQ_TYPE_NONE>,
			     <0x3 0xf1 0x2 IRQ_TYPE_NONE>,
			     <0x3 0xf1 0x3 IRQ_TYPE_NONE>,
			     <0x3 0xf1 0x4 IRQ_TYPE_NONE>,
			     <0x3 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 = <&pm660_s4>;
		qcom,cdc-vdda-cp-voltage = <1900000 2050000>;
		qcom,cdc-vdda-cp-current = <50000>;

		cdc-vdd-pa-supply = <&pm660_s4>;
		qcom,cdc-vdd-pa-voltage = <2040000 2040000>;
		qcom,cdc-vdd-pa-current = <260000>;

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

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

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

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

		/*
		 * Not marking address @ as driver searches this child
		 * with name msm-dig-codec
		 */
		msm_digital_codec: msm-dig-codec {
			compatible = "qcom,msm-digital-codec";
			reg = <0x62ec0000 0x0>;
		};
	};
};
