devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
To: Caleb Connolly <caleb.connolly@linaro.org>,
	Andy Gross <agross@kernel.org>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Rob Herring <robh+dt@kernel.org>
Cc: phone-devel@vger.kernel.org,
	Dylan Van Assche <me@dylanvanassche.be>,
	devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org
Subject: Re: [PATCH] arm64: dts: qcom: sdm845-oneplus-*: add audio devices
Date: Wed, 18 Jan 2023 10:37:19 +0100	[thread overview]
Message-ID: <a516cca3-acf6-61cd-20d8-9961c6bf3e52@linaro.org> (raw)
In-Reply-To: <20230118092040.1444129-1-caleb.connolly@linaro.org>

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@dylanvanassche.be>
> Signed-off-by: Dylan Van Assche <me@dylanvanassche.be>
> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
> ---
>  .../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@linaro.org/
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


      reply	other threads:[~2023-01-18 10:31 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-18  9:20 [PATCH] arm64: dts: qcom: sdm845-oneplus-*: add audio devices Caleb Connolly
2023-01-18  9:37 ` Krzysztof Kozlowski [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a516cca3-acf6-61cd-20d8-9961c6bf3e52@linaro.org \
    --to=krzysztof.kozlowski@linaro.org \
    --cc=agross@kernel.org \
    --cc=andersson@kernel.org \
    --cc=caleb.connolly@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=konrad.dybcio@linaro.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=me@dylanvanassche.be \
    --cc=phone-devel@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).