mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-05 20:30:41 +00:00
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
9ed12836b2/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>
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20230125231829.2621768-1-caleb.connolly@linaro.org
This commit is contained in:
parent
47a17dfb65
commit
b7b7342868
@ -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>;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user