Commit b7b73428 authored by Caleb Connolly's avatar Caleb Connolly Committed by Bjorn Andersson

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/OnePlusCo-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
......@@ -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>;
......
......@@ -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,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>;
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment