// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 *
 * This file defines the common audio settings for the child boards
 * using rt5682 codec and having 3 dmics connected to sc7280.
 *
 * Copyright 2022 Google LLC.
 */

/ {
	/* BOARD-SPECIFIC TOP LEVEL NODES */
	sound: sound {
		compatible = "google,sc7280-herobrine";
		model = "sc7280-rt5682-max98360a-3mic";

		audio-routing = "VA DMIC0", "vdd-micb",
				"VA DMIC1", "vdd-micb",
				"VA DMIC2", "vdd-micb",
				"VA DMIC3", "vdd-micb",

				"Headphone Jack", "HPOL",
				"Headphone Jack", "HPOR";

		#address-cells = <1>;
		#size-cells = <0>;

		dai-link@0 {
			link-name = "MAX98360";
			reg = <0>;

			cpu {
				sound-dai = <&lpass_cpu MI2S_SECONDARY>;
			};

			codec {
				sound-dai = <&max98360a>;
			};
		};

		dai-link@1 {
			link-name = "DisplayPort";
			reg = <1>;

			cpu {
				sound-dai = <&lpass_cpu LPASS_DP_RX>;
			};

			codec {
				sound-dai = <&mdss_dp>;
			};
		};

		dai-link@2 {
			link-name = "ALC5682";
			reg = <2>;

			cpu {
				sound-dai = <&lpass_cpu MI2S_PRIMARY>;
			};

			codec {
				sound-dai = <&alc5682 0 /* aif1 */>;
			};
		};

		dai-link@4 {
			link-name = "DMIC";
			reg = <4>;

			cpu {
				sound-dai = <&lpass_cpu LPASS_CDC_DMA_VA_TX0>;
			};

			codec {
				sound-dai = <&lpass_va_macro 0>;
			};
		};
	};
};

hp_i2c: &i2c2 {
	clock-frequency = <400000>;
	status = "okay";

	alc5682: codec@1a {
		compatible = "realtek,rt5682s";
		reg = <0x1a>;
		pinctrl-names = "default";
		pinctrl-0 = <&hp_irq>;

		#sound-dai-cells = <1>;

		interrupt-parent = <&tlmm>;
		interrupts = <101 IRQ_TYPE_EDGE_BOTH>;

		AVDD-supply = <&pp1800_alc5682>;
		DBVDD-supply = <&pp1800_alc5682>;
		LDO1-IN-supply = <&pp1800_alc5682>;
		MICVDD-supply = <&pp3300_codec>;

		realtek,dmic1-data-pin = <1>;
		realtek,dmic1-clk-pin = <2>;
		realtek,jd-src = <1>;
		realtek,dmic-clk-rate-hz = <2048000>;
	};
};

&lpass_cpu {
	pinctrl-names = "default";
	pinctrl-0 = <&mi2s0_data0>, <&mi2s0_data1>, <&mi2s0_mclk>, <&mi2s0_sclk>, <&mi2s0_ws>,
			<&mi2s1_data0>, <&mi2s1_sclk>, <&mi2s1_ws>;

	#address-cells = <1>;
	#size-cells = <0>;

	status = "okay";

	dai-link@0 {
		reg = <MI2S_PRIMARY>;
		qcom,playback-sd-lines = <1>;
		qcom,capture-sd-lines = <0>;
	};

	dai-link@1 {
		reg = <MI2S_SECONDARY>;
		qcom,playback-sd-lines = <0>;
	};

	dai-link@5 {
		reg = <LPASS_DP_RX>;
	};

	dai-link@25 {
		reg = <LPASS_CDC_DMA_VA_TX0>;
	};
};

&lpass_va_macro {
	vdd-micb-supply = <&pp1800_l2c>;
	pinctrl-0 = <&lpass_dmic01_clk>, <&lpass_dmic01_data>, <&lpass_dmic23_clk>,
			<&lpass_dmic23_data>;

	status = "okay";
};

/* PINCTRL - ADDITIONS TO NODES IN PARENT DEVICE TREE FILES */

&lpass_dmic01_clk {
	drive-strength = <8>;
	bias-disable;
};

&lpass_dmic01_data {
	bias-pull-down;
};

&lpass_dmic23_clk {
	drive-strength = <8>;
	bias-disable;
};

&lpass_dmic23_data {
	bias-pull-down;
};

&mi2s0_data0 {
	drive-strength = <6>;
	bias-disable;
};

&mi2s0_data1 {
	drive-strength = <6>;
	bias-disable;
};

&mi2s0_mclk {
	drive-strength = <6>;
	bias-disable;
};

&mi2s0_sclk {
	drive-strength = <6>;
	bias-disable;
};

&mi2s0_ws {
	drive-strength = <6>;
	bias-disable;
};
