Commit b7b73428 authored by Casey Connolly's avatar Casey Connolly Committed by Bjorn Andersson
Browse files

arm64: dts: qcom: sdm845-oneplus-*: add audio devices

Populate the audio devices found on the OnePlus 6 and 6T using the
sdm845-sndcard driver.

Both devices have the earpiece and headphone jack connected to the
WCD9341 codec. The OnePlus 6 uses the MAX98927 speaker codec which is
already supported upstream. The OnePlus 6T uses a currently unsupported
TFA9894 codec.

Two internal microphones are supported, as well as an external headset
mic. Each DAI link is expected to be used for a single device.

Alsa UCM2 configs for this setup can be found here, they are not yet
upstream and include support for call audio which is missing in this
patch

https://gitlab.com/sdm845-mainline/alsa-ucm-conf/-/tree/9ed12836b269764c4a853411d38ccb6abb70b383/ucm2/OnePlus



Co-developed-by: default avatarDylan Van Assche <me@dylanvanassche.be>
Signed-off-by: default avatarDylan Van Assche <me@dylanvanassche.be>
Signed-off-by: default avatarCaleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: default avatarBjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20230125231829.2621768-1-caleb.connolly@linaro.org
parent 47a17dfb
Loading
Loading
Loading
Loading
+197 −0
Original line number Diff line number Diff line
@@ -9,8 +9,11 @@

#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include <dt-bindings/sound/qcom,q6afe.h>
#include <dt-bindings/sound/qcom,q6asm.h>

#include "sdm845.dtsi"
#include "sdm845-wcd9340.dtsi"
#include "pm8998.dtsi"
#include "pmi8998.dtsi"

@@ -466,6 +469,44 @@ &pmi8998_rradc {
	status = "okay";
};

&q6afedai {
	qi2s@22 {
		reg = <22>;
		qcom,sd-lines = <1>;
	};

	qi2s@23 {
		reg = <23>;
		qcom,sd-lines = <0>;
	};
};

&q6asmdai {
	dai@0 {
		reg = <0>;
	};

	dai@1 {
		reg = <1>;
	};

	dai@2 {
		reg = <2>;
	};

	dai@3 {
		reg = <3>;
	};

	dai@4 {
		reg = <4>;
	};

	dai@5 {
		reg = <5>;
	};
};

&qupv3_id_1 {
	status = "okay";
};
@@ -494,6 +535,141 @@ &qup_uart9_tx {
	bias-disable;
};

&sound {
	compatible = "qcom,sdm845-sndcard";
	pinctrl-0 = <&quat_mi2s_active &quat_mi2s_sd0_active &quat_mi2s_sd1_active>;
	pinctrl-names = "default";
	status = "okay";

	mm1-dai-link {
		link-name = "MultiMedia1";
		cpu {
			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
		};
	};

	mm2-dai-link {
		link-name = "MultiMedia2";
		cpu {
			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
		};
	};

	mm3-dai-link {
		link-name = "MultiMedia3";
		cpu {
			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
		};
	};

	mm4-dai-link {
		link-name = "MultiMedia4";
		cpu {
			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA4>;
		};
	};

	mm5-dai-link {
		link-name = "MultiMedia5";
		cpu {
			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA5>;
		};
	};

	mm6-dai-link {
		link-name = "MultiMedia6";
		cpu {
			sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA6>;
		};
	};

	speaker_playback_dai: speaker-dai-link {
		link-name = "Speaker Playback";
		cpu {
			sound-dai = <&q6afedai QUATERNARY_MI2S_RX>;
		};

		platform {
			sound-dai = <&q6routing>;
		};
	};

	slim-dai-link {
		link-name = "SLIM Playback 1";
		cpu {
			sound-dai = <&q6afedai SLIMBUS_0_RX>;
		};

		platform {
			sound-dai = <&q6routing>;
		};

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

	slimcap-dai-link {
		link-name = "SLIM Capture 1";
		cpu {
			sound-dai = <&q6afedai SLIMBUS_0_TX>;
		};

		platform {
			sound-dai = <&q6routing>;
		};

		codec {
			sound-dai = <&wcd9340 1>;
		};
	};

	slim2-dai-link {
		link-name = "SLIM Playback 2";
		cpu {
			sound-dai = <&q6afedai SLIMBUS_1_RX>;
		};

		platform {
			sound-dai = <&q6routing>;
		};

		codec {
			sound-dai = <&wcd9340 2>; /* AIF2_PB */
		};
	};

	slimcap2-dai-link {
		link-name = "SLIM Capture 2";
		cpu {
			sound-dai = <&q6afedai SLIMBUS_1_TX>;
		};

		platform {
			sound-dai = <&q6routing>;
		};

		codec {
			sound-dai = <&wcd9340 3>; /* AIF2_CAP */
		};
	};

	slimcap3-dai-link {
		link-name = "SLIM Capture 3";
		cpu {
			sound-dai = <&q6afedai SLIMBUS_2_TX>;
		};

		platform {
			sound-dai = <&q6routing>;
		};

		codec {
			sound-dai = <&wcd9340 5>; /* AIF3_CAP */
		};
	};
};

&uart6 {
	status = "okay";

@@ -613,6 +789,16 @@ panel_esd_pin: panel-esd-state {
		bias-pull-down;
		input-enable;
	};

	speaker_default: speaker-default-state {
		mux {
			pins = "gpio69";
			function = "gpio";
			drive-strength = <16>;
			bias-pull-up;
			output-high;
		};
	};
};

&venus {
@@ -620,6 +806,17 @@ &venus {
	firmware-name = "qcom/sdm845/oneplus6/venus.mbn";
};

&wcd9340 {
	pinctrl-0 = <&wcd_intr_default>;
	pinctrl-names = "default";
	reset-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>;
	vdd-buck-supply = <&vreg_s4a_1p8>;
	vdd-buck-sido-supply = <&vreg_s4a_1p8>;
	vdd-tx-supply = <&vreg_s4a_1p8>;
	vdd-rx-supply = <&vreg_s4a_1p8>;
	vdd-io-supply = <&vreg_s4a_1p8>;
};

&wifi {
	status = "okay";
	vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
+40 −0
Original line number Diff line number Diff line
@@ -32,3 +32,43 @@ &display_panel {
&bq27441_fg {
	monitored-battery = <&battery>;
};

&i2c4 {
	status = "okay";

	max98927_codec: max98927@3a {
		compatible = "maxim,max98927";
		reg = <0x3a>;
		#sound-dai-cells = <1>;

		pinctrl-0 = <&speaker_default>;
		pinctrl-names = "default";

		reset-gpios = <&tlmm 69 GPIO_ACTIVE_LOW>;

		vmon-slot-no = <1>;
		imon-slot-no = <0>;
	};
};

&sound {
	model = "OnePlus 6";
	audio-routing =	"RX_BIAS", "MCLK",
			"AMIC2", "MIC BIAS2",
			"AMIC3", "MIC BIAS4",
			"AMIC4", "MIC BIAS1",
			"AMIC5", "MIC BIAS4";
};

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

&wcd9340 {
	qcom,micbias1-microvolt = <1800000>;
	qcom,micbias2-microvolt = <2700000>;
	qcom,micbias3-microvolt = <1800000>;
	qcom,micbias4-microvolt = <1800000>;
};
+29 −0
Original line number Diff line number Diff line
@@ -29,10 +29,39 @@ &display_panel {
	compatible = "samsung,s6e3fc2x01";
};

&i2c4 {
	/* nxp,tfa9894 @ 0x34 */
};

&bq27441_fg {
	monitored-battery = <&battery>;
};

&sound {
	model = "OnePlus 6T";
	audio-routing = "RX_BIAS", "MCLK",
			"AMIC1", "MIC BIAS3",
			"AMIC2", "MIC BIAS2",
			"AMIC3", "MIC BIAS4",
			"AMIC4", "MIC BIAS1",
			"AMIC5", "MIC BIAS3";

};

/*
 * The TFA9894 codec is currently unsupported.
 * We need to delete the node to allow the soundcard
 * to probe for headphones/earpiece.
 */
/delete-node/ &speaker_playback_dai;

&rmi4_f12 {
	touchscreen-y-mm = <148>;
};

&wcd9340 {
	qcom,micbias1-microvolt = <2700000>;
	qcom,micbias2-microvolt = <2700000>;
	qcom,micbias3-microvolt = <2700000>;
	qcom,micbias4-microvolt = <2700000>;
};