Re: [PATCH] arm64: dts: qcom: sdm845-oneplus-*: add audio devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 18/01/2023 10:20, Caleb Connolly wrote:
> 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: Dylan Van Assche <me@xxxxxxxxxxxxxxxxx>
> Signed-off-by: Dylan Van Assche <me@xxxxxxxxxxxxxxxxx>
> Signed-off-by: Caleb Connolly <caleb.connolly@xxxxxxxxxx>
> ---
>  .../boot/dts/qcom/sdm845-oneplus-common.dtsi  | 208 ++++++++++++++++++
>  .../dts/qcom/sdm845-oneplus-enchilada.dts     |  40 ++++
>  .../boot/dts/qcom/sdm845-oneplus-fajita.dts   |  29 +++
>  3 files changed, 277 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
> index 42cf4dd5ea28..76017fad4443 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
> @@ -9,6 +9,8 @@
>  
>  #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 "pm8998.dtsi"
> @@ -466,6 +468,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";
>  };
> @@ -505,6 +545,140 @@ pinconf-rx {
>  	};
>  };
>  
> +&sound {
> +	compatible = "qcom,sdm845-sndcard";
> +	pinctrl-0 = <&quat_mi2s_active &quat_mi2s_sd0_active &quat_mi2s_sd1_active>;
> +	pinctrl-names = "default";
> +
> +	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: speaker-dai-link {
> +		link-name = "Speaker Playback";
> +		cpu {
> +			sound-dai = <&q6afedai QUATERNARY_MI2S_RX>;
> +		};
> +
> +		platform {
> +			sound-dai = <&q6routing>;
> +		};
> +	};
> +
> +	slim1-dai-link {
> +		link-name = "SLIM Playback 1";
> +		cpu {
> +			sound-dai = <&q6afedai SLIMBUS_0_RX>;
> +		};
> +
> +		platform {
> +			sound-dai = <&q6routing>;
> +		};
> +
> +		codec {
> +			sound-dai = <&wcd9340 0>; /* AIF1_PB */
> +		};
> +	};
> +
> +	slimcap1-dai-link {
> +		link-name = "SLIM Capture 1";
> +		cpu {
> +			sound-dai = <&q6afedai SLIMBUS_0_TX>;
> +		};
> +
> +		platform {
> +			sound-dai = <&q6routing>;
> +		};
> +
> +		codec {
> +			sound-dai = <&wcd9340 1>; /* AIF1_CAP */
> +		};
> +	};
> +
> +	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";
>  
> @@ -634,6 +808,27 @@ mux {
>  			input-enable;
>  		};
>  	};
> +
> +	speaker_default: speaker-default-state {
> +		mux {

Drop and test dtbs_check with pinctrl bindings.

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

Drop

> +			pins = "gpio54";
> +			function = "gpio";
> +
> +			input-enable;
> +			bias-pull-down;
> +			drive-strength = <2>;
> +		};
> +	};
>  };
>  
>  &venus {
> @@ -641,6 +836,19 @@ &venus {
>  	firmware-name = "qcom/sdm845/oneplus6/venus.mbn";
>  };
>  
> +&wcd9340 {

I will send today v2 of
https://lore.kernel.org/all/20230113162245.117324-2-krzysztof.kozlowski@xxxxxxxxxx/
which will conflict here. If my patch gets first, please rebase on top
of it.

> +	pinctrl-0 = <&wcd_default>;
> +	pinctrl-names = "default";
> +	clock-names = "extclk";
> +	clocks = <&rpmhcc RPMH_LN_BB_CLK2>;
> +	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>;
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-oneplus-enchilada.dts b/arch/arm64/boot/dts/qcom/sdm845-oneplus-enchilada.dts
> index bf2cf92e8976..aae1a3a27144 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-oneplus-enchilada.dts
> +++ b/arch/arm64/boot/dts/qcom/sdm845-oneplus-enchilada.dts
> @@ -32,3 +32,43 @@ &display_panel {
>  &bq27441_fg {
>  	monitored-battery = <&battery>;
>  };
> +
> +&i2c4 {
> +	status = "okay";
> +
> +	max98927_codec: max98927@3a {

audio-codec
https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation

> +		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-dai-link {
> +		codec {
> +			sound-dai = <&max98927_codec 0>;
> +		};
> +	};
> +};
> +
> +&wcd9340 {
> +	qcom,micbias1-microvolt = <1800000>;
> +	qcom,micbias2-microvolt = <2700000>;
> +	qcom,micbias3-microvolt = <1800000>;
> +	qcom,micbias4-microvolt = <1800000>;
> +};
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-oneplus-fajita.dts b/arch/arm64/boot/dts/qcom/sdm845-oneplus-fajita.dts
> index 1b6b5bf368df..4b1a5d3c3713 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-oneplus-fajita.dts
> +++ b/arch/arm64/boot/dts/qcom/sdm845-oneplus-fajita.dts
> @@ -29,10 +29,39 @@ &display_panel {
>  	compatible = "samsung,s6e3fc2x01";
>  };
>  
> +&i2c4 {
> +	/* nxp,tfa9894 @ 0x34 */

I don't think this is related to this patch.

> +};
> +
>  &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;
> +
>  &rmi4_f12 {
>  	touchscreen-y-mm = <148>;
>  };
> +
> +&wcd9340 {
> +	qcom,micbias1-microvolt = <2700000>;
> +	qcom,micbias2-microvolt = <2700000>;
> +	qcom,micbias3-microvolt = <2700000>;
> +	qcom,micbias4-microvolt = <2700000>;
> +};

Best regards,
Krzysztof




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux