mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/5] Enable soundcard on Motorola Edge 30
@ 2026-10-16  7:31 Val Packett
  2026-10-16  7:31 ` [PATCH 1/5] ASoC: qcom: qdsp6: q6routing: add Senary MI2S ports Val Packett
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Val Packett @ 2026-10-16  7:31 UTC (permalink / raw)
  Cc: Val Packett, Mark Brown, Bjorn Andersson, Konrad Dybcio,
	Rob Herring, Krzysztof Kozlowski, Luca Weiss,
	Srinivas Kandagatla, Conor Dooley, ~postmarketos/upstreaming,
	phone-devel, linux-arm-msm, devicetree, linux-kernel

This series enables sound support on motorola-dubai, at least the
speakers.. The WCD that handles microphones and analog USB-C sound
is left out because it would first need:
https://lore.kernel.org/all/20260522-kodiak-elite-macros-v1-1-487661ac1270@fairphone.com/

The senary MI2S patches were previously part of:
https://lore.kernel.org/all/20260506204142.659778-1-val@packett.cool/

and that series mixed up too many things and got bogged down due to
the TDM stuff that's not relevant to this device..

Thanks,
~val

---


Val Packett (5):
  ASoC: qcom: qdsp6: q6routing: add Senary MI2S ports
  ASoC: qcom: sm8250: add Senary MI2S RX support
  ASoC: dt-bindings: qcom,sm8250: Add Motorola Edge 30 sound card
  ASoC: qcom: sm8250: Add motorola-dubai soundcard compatible
  arm64: dts: qcom: motorola-dubai: Add sound card with aw88261 speakers

 .../bindings/sound/qcom,sm8250.yaml           |   1 +
 .../qcom/sm7325-motorola-dubai-common.dtsi    | 119 ++++++++++++++++++
 sound/soc/qcom/qdsp6/q6routing.c              |  11 ++
 sound/soc/qcom/sm8250.c                       |   9 ++
 4 files changed, 140 insertions(+)

-- 
2.55.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/5] ASoC: qcom: qdsp6: q6routing: add Senary MI2S ports
  2026-10-16  7:31 [PATCH 0/5] Enable soundcard on Motorola Edge 30 Val Packett
@ 2026-10-16  7:31 ` Val Packett
  2026-10-16  7:31 ` [PATCH 2/5] ASoC: qcom: sm8250: add Senary MI2S RX support Val Packett
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Val Packett @ 2026-10-16  7:31 UTC (permalink / raw)
  To: Srinivas Kandagatla, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai
  Cc: Val Packett, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Luca Weiss, Srinivas Kandagatla,
	Conor Dooley, ~postmarketos/upstreaming, phone-devel,
	linux-arm-msm, devicetree, linux-kernel, linux-sound

This commit adds support for senary MI2S mixers.

Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Signed-off-by: Val Packett <val@packett.cool>
---
 sound/soc/qcom/qdsp6/q6routing.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/sound/soc/qcom/qdsp6/q6routing.c b/sound/soc/qcom/qdsp6/q6routing.c
index d076c99f197f..ea511200c8d7 100644
--- a/sound/soc/qcom/qdsp6/q6routing.c
+++ b/sound/soc/qcom/qdsp6/q6routing.c
@@ -68,6 +68,7 @@
 	{ mix_name, "SEC_MI2S_TX", "SEC_MI2S_TX" },	\
 	{ mix_name, "QUAT_MI2S_TX", "QUAT_MI2S_TX" },	\
 	{ mix_name, "QUIN_MI2S_TX", "QUIN_MI2S_TX" },	\
+	{ mix_name, "SEN_MI2S_TX", "SEN_MI2S_TX" },	\
 	{ mix_name, "TERT_MI2S_TX", "TERT_MI2S_TX" },		\
 	{ mix_name, "SLIMBUS_0_TX", "SLIMBUS_0_TX" },		\
 	{ mix_name, "SLIMBUS_1_TX", "SLIMBUS_1_TX" },		\
@@ -152,6 +153,9 @@
 	SOC_SINGLE_EXT("QUIN_MI2S_TX", QUINARY_MI2S_TX,			\
 		id, 1, 0, msm_routing_get_audio_mixer,			\
 		msm_routing_put_audio_mixer),				\
+	SOC_SINGLE_EXT("SEN_MI2S_TX", SENARY_MI2S_TX,			\
+		id, 1, 0, msm_routing_get_audio_mixer,			\
+		msm_routing_put_audio_mixer),				\
 	SOC_SINGLE_EXT("SLIMBUS_0_TX", SLIMBUS_0_TX,			\
 		id, 1, 0, msm_routing_get_audio_mixer,			\
 		msm_routing_put_audio_mixer),				\
@@ -563,6 +567,9 @@ static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
 static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
 	Q6ROUTING_RX_MIXERS(QUINARY_MI2S_RX) };
 
+static const struct snd_kcontrol_new senary_mi2s_rx_mixer_controls[] = {
+	Q6ROUTING_RX_MIXERS(SENARY_MI2S_RX) };
+
 static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
 	Q6ROUTING_RX_MIXERS(TERTIARY_MI2S_RX) };
 
@@ -825,6 +832,9 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
 	SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
 			   quinary_mi2s_rx_mixer_controls,
 			   ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
+	SND_SOC_DAPM_MIXER("SEN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
+			   senary_mi2s_rx_mixer_controls,
+			   ARRAY_SIZE(senary_mi2s_rx_mixer_controls)),
 	SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
 			   tertiary_mi2s_rx_mixer_controls,
 			   ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
@@ -1038,6 +1048,7 @@ static const struct snd_soc_dapm_route intercon[] = {
 	Q6ROUTING_RX_DAPM_ROUTE("SLIMBUS_6_RX Audio Mixer", "SLIMBUS_6_RX"),
 	Q6ROUTING_RX_DAPM_ROUTE("QUAT_MI2S_RX Audio Mixer", "QUAT_MI2S_RX"),
 	Q6ROUTING_RX_DAPM_ROUTE("QUIN_MI2S_RX Audio Mixer", "QUIN_MI2S_RX"),
+	Q6ROUTING_RX_DAPM_ROUTE("SEN_MI2S_RX Audio Mixer", "SEN_MI2S_RX"),
 	Q6ROUTING_RX_DAPM_ROUTE("TERT_MI2S_RX Audio Mixer", "TERT_MI2S_RX"),
 	Q6ROUTING_RX_DAPM_ROUTE("SEC_MI2S_RX Audio Mixer", "SEC_MI2S_RX"),
 	Q6ROUTING_RX_DAPM_ROUTE("PRI_MI2S_RX Audio Mixer", "PRI_MI2S_RX"),
-- 
2.55.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 2/5] ASoC: qcom: sm8250: add Senary MI2S RX support
  2026-10-16  7:31 [PATCH 0/5] Enable soundcard on Motorola Edge 30 Val Packett
  2026-10-16  7:31 ` [PATCH 1/5] ASoC: qcom: qdsp6: q6routing: add Senary MI2S ports Val Packett
@ 2026-10-16  7:31 ` Val Packett
  2026-10-16  7:31 ` [PATCH 3/5] ASoC: dt-bindings: qcom,sm8250: Add Motorola Edge 30 sound card Val Packett
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Val Packett @ 2026-10-16  7:31 UTC (permalink / raw)
  To: Srinivas Kandagatla, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai
  Cc: Val Packett, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Luca Weiss, Srinivas Kandagatla,
	Conor Dooley, ~postmarketos/upstreaming, phone-devel,
	linux-arm-msm, devicetree, linux-kernel, linux-sound

Add support for the SENARY_MI2S_RX DAI which is used on some devices to
send audio data to speaker amplifiers.

Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Signed-off-by: Val Packett <val@packett.cool>
---
 sound/soc/qcom/sm8250.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/sound/soc/qcom/sm8250.c b/sound/soc/qcom/sm8250.c
index 76dc3a3f4a31..2d49b04cb1f6 100644
--- a/sound/soc/qcom/sm8250.c
+++ b/sound/soc/qcom/sm8250.c
@@ -112,6 +112,14 @@ static int sm8250_snd_startup(struct snd_pcm_substream *substream)
 		snd_soc_dai_set_fmt(cpu_dai, fmt);
 		snd_soc_dai_set_fmt(codec_dai, codec_dai_fmt);
 		break;
+	case SENARY_MI2S_RX:
+		codec_dai_fmt |= SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_I2S;
+		snd_soc_dai_set_sysclk(cpu_dai,
+			Q6AFE_LPASS_CLK_ID_SEN_MI2S_IBIT,
+			MI2S_BCLK_RATE, SNDRV_PCM_STREAM_PLAYBACK);
+		snd_soc_dai_set_fmt(cpu_dai, fmt);
+		snd_soc_dai_set_fmt(codec_dai, codec_dai_fmt);
+		break;
 	case LPI_MI2S_RX_0:
 		codec_dai_fmt |= SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_I2S;
 		snd_soc_dai_set_sysclk(cpu_dai,
-- 
2.55.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 3/5] ASoC: dt-bindings: qcom,sm8250: Add Motorola Edge 30 sound card
  2026-10-16  7:31 [PATCH 0/5] Enable soundcard on Motorola Edge 30 Val Packett
  2026-10-16  7:31 ` [PATCH 1/5] ASoC: qcom: qdsp6: q6routing: add Senary MI2S ports Val Packett
  2026-10-16  7:31 ` [PATCH 2/5] ASoC: qcom: sm8250: add Senary MI2S RX support Val Packett
@ 2026-10-16  7:31 ` Val Packett
  2026-10-16  7:31 ` [PATCH 4/5] ASoC: qcom: sm8250: Add motorola-dubai soundcard compatible Val Packett
  2026-10-16  7:31 ` [PATCH 5/5] arm64: dts: qcom: motorola-dubai: Add sound card with aw88261 speakers Val Packett
  4 siblings, 0 replies; 6+ messages in thread
From: Val Packett @ 2026-10-16  7:31 UTC (permalink / raw)
  To: Srinivas Kandagatla, Liam Girdwood, Mark Brown, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley
  Cc: Val Packett, Bjorn Andersson, Konrad Dybcio, Luca Weiss,
	Srinivas Kandagatla, ~postmarketos/upstreaming, phone-devel,
	linux-arm-msm, devicetree, linux-kernel, linux-sound

Document the bindings for the sound card on motorola-dubai which uses the
Elite DSP architecture.

Signed-off-by: Val Packett <val@packett.cool>
---
 Documentation/devicetree/bindings/sound/qcom,sm8250.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml b/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml
index fc7bccdace0f..c76c9c670bc1 100644
--- a/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml
+++ b/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml
@@ -36,6 +36,7 @@ properties:
           - ayaneo,pocket-s2-sndcard
           - fairphone,fp4-sndcard
           - fairphone,fp5-sndcard
+          - motorola,dubai-sndcard
           - qcom,apq8096-sndcard
           - qcom,glymur-sndcard
           - qcom,qcm6490-idp-sndcard
-- 
2.55.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 4/5] ASoC: qcom: sm8250: Add motorola-dubai soundcard compatible
  2026-10-16  7:31 [PATCH 0/5] Enable soundcard on Motorola Edge 30 Val Packett
                   ` (2 preceding siblings ...)
  2026-10-16  7:31 ` [PATCH 3/5] ASoC: dt-bindings: qcom,sm8250: Add Motorola Edge 30 sound card Val Packett
@ 2026-10-16  7:31 ` Val Packett
  2026-10-16  7:31 ` [PATCH 5/5] arm64: dts: qcom: motorola-dubai: Add sound card with aw88261 speakers Val Packett
  4 siblings, 0 replies; 6+ messages in thread
From: Val Packett @ 2026-10-16  7:31 UTC (permalink / raw)
  To: Srinivas Kandagatla, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai
  Cc: Val Packett, Bjorn Andersson, Konrad Dybcio, Rob Herring,
	Krzysztof Kozlowski, Luca Weiss, Srinivas Kandagatla,
	Conor Dooley, ~postmarketos/upstreaming, phone-devel,
	linux-arm-msm, devicetree, linux-kernel, linux-sound

Add a compatible for the SM7325-based Motorola Edge 30 which can use this
machine driver.

Signed-off-by: Val Packett <val@packett.cool>
---
 sound/soc/qcom/sm8250.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sound/soc/qcom/sm8250.c b/sound/soc/qcom/sm8250.c
index 2d49b04cb1f6..5866f1f34b3d 100644
--- a/sound/soc/qcom/sm8250.c
+++ b/sound/soc/qcom/sm8250.c
@@ -215,6 +215,7 @@ static int sm8250_platform_probe(struct platform_device *pdev)
 static const struct of_device_id snd_sm8250_dt_match[] = {
 	{ .compatible = "fairphone,fp4-sndcard", .data = "sm7225" },
 	{ .compatible = "fairphone,fp5-sndcard", .data = "qcm6490" },
+	{ .compatible = "motorola,dubai-sndcard", .data = "sm7325" },
 	{ .compatible = "qcom,qrb2210-sndcard", .data = "qcm2290" },
 	{ .compatible = "qcom,qrb4210-rb2-sndcard", .data = "sm4250" },
 	{ .compatible = "qcom,qrb5165-rb5-sndcard", .data = "sm8250" },
-- 
2.55.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 5/5] arm64: dts: qcom: motorola-dubai: Add sound card with aw88261 speakers
  2026-10-16  7:31 [PATCH 0/5] Enable soundcard on Motorola Edge 30 Val Packett
                   ` (3 preceding siblings ...)
  2026-10-16  7:31 ` [PATCH 4/5] ASoC: qcom: sm8250: Add motorola-dubai soundcard compatible Val Packett
@ 2026-10-16  7:31 ` Val Packett
  4 siblings, 0 replies; 6+ messages in thread
From: Val Packett @ 2026-10-16  7:31 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley
  Cc: Val Packett, Mark Brown, Luca Weiss, Srinivas Kandagatla,
	~postmarketos/upstreaming, phone-devel, linux-arm-msm,
	devicetree, linux-kernel

Enable the sndcard node with three MultiMedia frontends, a USB offload
RX link, and two Awinic AW88261 speaker amps on senary MI2S.

While here, use the correct compatible for audiocc for this phone,
and remove references to power-domains from a 'reserved' node.

Signed-off-by: Val Packett <val@packett.cool>
---
 .../qcom/sm7325-motorola-dubai-common.dtsi    | 119 ++++++++++++++++++
 1 file changed, 119 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm7325-motorola-dubai-common.dtsi b/arch/arm64/boot/dts/qcom/sm7325-motorola-dubai-common.dtsi
index 3860ab8508a0..1e1c195de1af 100644
--- a/arch/arm64/boot/dts/qcom/sm7325-motorola-dubai-common.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm7325-motorola-dubai-common.dtsi
@@ -16,6 +16,8 @@
 #include <dt-bindings/leds/common.h>
 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include <dt-bindings/sound/qcom,q6afe.h>
+#include <dt-bindings/sound/qcom,q6asm.h>
 
 #include "sm7325.dtsi"
 #include "pm7325.dtsi"
@@ -699,6 +701,40 @@ &gpu_zap_shader {
 	firmware-name = "qcom/sm7325/motorola/dubai/a660_zap.mbn";
 };
 
+&i2c1 {
+	clock-frequency = <100000>;
+
+	status = "okay";
+
+	/* Bottom speaker */
+	aw88261_r: audio-codec@34 {
+		compatible = "awinic,aw88261";
+		reg = <0x34>;
+
+		dvdd-supply = <&vreg_l18b_1p8>;
+		sound-name-prefix = "Amplifier R";
+		firmware-name = "qcom/sm7325/motorola/dubai/aw88261_acf.bin";
+
+		awinic,audio-channel = <0>;
+
+		#sound-dai-cells = <0>;
+	};
+
+	/* Top speaker / ear speaker */
+	aw88261_l: audio-codec@35 {
+		compatible = "awinic,aw88261";
+		reg = <0x35>;
+
+		dvdd-supply = <&vreg_l18b_1p8>;
+		sound-name-prefix = "Amplifier L";
+		firmware-name = "qcom/sm7325/motorola/dubai/aw88261_acf.bin";
+
+		awinic,audio-channel = <1>;
+
+		#sound-dai-cells = <0>;
+	};
+};
+
 &i2c4 {
 	clock-frequency = <100000>;
 
@@ -732,6 +768,11 @@ &ipa {
 	status = "okay";
 };
 
+&lpass_audiocc {
+	compatible = "qcom,qcm6490-lpassaudiocc";
+	/delete-property/ power-domains;
+};
+
 &pm7250b_adc {
 	channel@4e {
 		reg = <ADC5_AMUX_THM2_100K_PU>;
@@ -972,10 +1013,22 @@ &pon_resin {
 	status = "okay";
 };
 
+&q6afedai {
+	dai@147 {
+		reg = <SENARY_MI2S_RX>;
+		qcom,sd-lines = <0>;
+	};
+};
+
 &qfprom {
 	vcc-supply = <&vdd_qfprom>;
 };
 
+&qup_i2c1_data_clk {
+	drive-strength = <2>;
+	bias-pull-up;
+};
+
 &qup_spi13_cs {
 	drive-strength = <6>;
 	bias-pull-down;
@@ -1066,6 +1119,72 @@ &rmtfs_mem {
 		    <QCOM_SCM_VMID_NAV>;
 };
 
+&sound {
+	compatible = "motorola,dubai-sndcard";
+	model = "Motorola-dubai";
+
+	pinctrl-0 = <&lpass_i2s2_active>;
+	pinctrl-1 = <&lpass_i2s2_sleep>;
+	pinctrl-names = "default",
+			"sleep";
+
+	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>;
+		};
+	};
+
+	i2s-dai-link {
+		link-name = "Senary MI2S Playback";
+
+		codec {
+			sound-dai = <&aw88261_l>, <&aw88261_r>;
+		};
+
+		cpu {
+			sound-dai = <&q6afedai SENARY_MI2S_RX>;
+		};
+
+		platform {
+			sound-dai = <&q6routing>;
+		};
+	};
+
+	usb-dai-link {
+		link-name = "USB Playback";
+
+		codec {
+			sound-dai = <&q6usbdai USB_RX>;
+		};
+
+		cpu {
+			sound-dai = <&q6afedai USB_RX>;
+		};
+
+		platform {
+			sound-dai = <&q6routing>;
+		};
+	};
+};
+
 &spi13 {
 	status = "okay";
 
-- 
2.55.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-10-16  7:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-16  7:31 [PATCH 0/5] Enable soundcard on Motorola Edge 30 Val Packett
2026-10-16  7:31 ` [PATCH 1/5] ASoC: qcom: qdsp6: q6routing: add Senary MI2S ports Val Packett
2026-10-16  7:31 ` [PATCH 2/5] ASoC: qcom: sm8250: add Senary MI2S RX support Val Packett
2026-10-16  7:31 ` [PATCH 3/5] ASoC: dt-bindings: qcom,sm8250: Add Motorola Edge 30 sound card Val Packett
2026-10-16  7:31 ` [PATCH 4/5] ASoC: qcom: sm8250: Add motorola-dubai soundcard compatible Val Packett
2026-10-16  7:31 ` [PATCH 5/5] arm64: dts: qcom: motorola-dubai: Add sound card with aw88261 speakers Val Packett

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®