// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
 *
 * Common definitions for SC7280-based boards with AudioReach.
 */

#include <dt-bindings/clock/qcom,lpass-sc7280.h>
#include <dt-bindings/soc/qcom,gpr.h>
#include <dt-bindings/sound/qcom,q6afe.h>
#include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h>

&lpass_rx_macro {
	/delete-property/ power-domains;
	/delete-property/ power-domain-names;
	clocks = <&q6prmcc LPASS_CLK_ID_TX_CORE_MCLK LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&q6prmcc LPASS_CLK_ID_TX_CORE_NPL_MCLK  LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&q6prmcc LPASS_HW_MACRO_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&q6prmcc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&lpass_va_macro>;
	clock-names = "mclk",
		      "npl",
		      "macro",
		      "dcodec",
		      "fsgen";
};

&lpass_tlmm {
	clocks = <&q6prmcc LPASS_HW_MACRO_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&q6prmcc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
	clock-names = "core",
		      "audio";
};

&lpass_tx_macro {
	/delete-property/ power-domains;
	/delete-property/ power-domain-names;
	clocks = <&q6prmcc LPASS_CLK_ID_TX_CORE_MCLK LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&q6prmcc LPASS_CLK_ID_TX_CORE_NPL_MCLK  LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&q6prmcc LPASS_HW_MACRO_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&q6prmcc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&lpass_va_macro>;
	clock-names = "mclk",
		      "npl",
		      "macro",
		      "dcodec",
		      "fsgen";
};

&lpass_va_macro {
	/delete-property/ power-domains;
	/delete-property/ power-domain-names;
	clocks = <&q6prmcc LPASS_CLK_ID_VA_CORE_MCLK LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&q6prmcc LPASS_HW_MACRO_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&q6prmcc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
	clock-names = "mclk",
		      "macro",
		      "dcodec";

	pinctrl-0 = <&lpass_dmic01_clk>, <&lpass_dmic01_data>,
		    <&lpass_dmic23_clk>, <&lpass_dmic23_data>;
	pinctrl-names = "default";

	qcom,dmic-sample-rate = <4800000>;
};

&lpass_wsa_macro {
	clocks = <&q6prmcc LPASS_CLK_ID_TX_CORE_MCLK LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&q6prmcc LPASS_CLK_ID_TX_CORE_NPL_MCLK LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&q6prmcc LPASS_HW_MACRO_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&q6prmcc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
		 <&lpass_va_macro>;
	clock-names = "mclk",
		      "npl",
		      "macro",
		      "dcodec",
		      "fsgen";
};

&remoteproc_adsp_glink {
	/delete-node/ apr;

	gpr {
		compatible = "qcom,gpr";
		qcom,glink-channels = "adsp_apps";
		qcom,domain = <GPR_DOMAIN_ID_ADSP>;
		qcom,intents = <512 20>;
		#address-cells = <1>;
		#size-cells = <0>;

		q6apm: service@1 {
			compatible = "qcom,q6apm";
			reg = <GPR_APM_MODULE_IID>;
			#sound-dai-cells = <0>;
			qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

			q6apmdai: dais {
				compatible = "qcom,q6apm-dais";
				iommus = <&apps_smmu 0x1801 0x0>;
			};

			q6apmbedai: bedais {
				compatible = "qcom,q6apm-lpass-dais";
				#sound-dai-cells = <1>;
			};
		};

		q6prm: service@2 {
			compatible = "qcom,q6prm";
			reg = <GPR_PRM_MODULE_IID>;
			qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

			q6prmcc: clock-controller {
				compatible = "qcom,q6prm-lpass-clocks";
				#clock-cells = <2>;
			};
		};
	};
};
