* [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; 9+ 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 related [flat|nested] 9+ 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:47 ` sashiko-bot
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, 1 reply; 9+ 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 related [flat|nested] 9+ messages in thread* Re: [PATCH 2/5] ASoC: qcom: sm8250: add Senary MI2S RX support
2026-10-16 7:31 ` [PATCH 2/5] ASoC: qcom: sm8250: add Senary MI2S RX support Val Packett
@ 2026-10-16 7:47 ` sashiko-bot
0 siblings, 0 replies; 9+ messages in thread
From: sashiko-bot @ 2026-10-16 7:47 UTC (permalink / raw)
To: Val Packett; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] sound: missing audio format configuration for secondary codec DAIs
- [Medium] sound: unhandled return values from DAI hardware configuration functions
--
commit a955f60b4e954bf749d62fe6837b52a492472249
Author: Val Packett <val@packett.cool>
ASoC: qcom: sm8250: add Senary MI2S RX support
This patch adds support for the SENARY_MI2S_RX DAI to allow sending audio
data to speaker amplifiers on some devices.
> diff --git a/sound/soc/qcom/sm8250.c b/sound/soc/qcom/sm8250.c
> index 76dc3a3f4a312..2d49b04cb1f69 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);
[Severity: Medium]
Can these hardware configuration functions fail silently?
The newly added code calls snd_soc_dai_set_sysclk() and snd_soc_dai_set_fmt()
for both the CPU and codec DAIs, but it does not check or propagate their
return values.
If these operations return an error like -EINVAL or -ENOTSUPP, the
initialization sequence will silently continue, potentially leaving the
hardware in a misconfigured state and causing difficult-to-debug audio
failures later.
> + snd_soc_dai_set_fmt(cpu_dai, fmt);
> + snd_soc_dai_set_fmt(codec_dai, codec_dai_fmt);
[Severity: High]
Does this code miss configuring the audio format for secondary codec DAIs?
In sm8250_snd_startup(), codec_dai is retrieved earlier in the function
using:
struct snd_soc_dai *codec_dai = snd_soc_rtd_to_codec(rtd, 0);
This only fetches the first codec on the runtime link. Since the
SENARY_MI2S_RX link is intended for speaker amplifiers, there may be
multiple speaker codecs (such as left and right channels) on this link.
Because the driver applies the I2S format only to this single codec_dai, any
additional amplifiers will not receive the required format configuration.
Could this result in silent playback on one channel? Would it be better to
iterate over all codec DAIs using for_each_rtd_codec_dais() instead?
> + 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,
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261016073157.611956-1-val@packett.cool?part=2
^ permalink raw reply [flat|nested] 9+ 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; 9+ 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 related [flat|nested] 9+ 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; 9+ 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 related [flat|nested] 9+ 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
2026-10-16 8:00 ` sashiko-bot
4 siblings, 1 reply; 9+ 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 related [flat|nested] 9+ messages in thread* Re: [PATCH 5/5] arm64: dts: qcom: motorola-dubai: Add sound card with aw88261 speakers
2026-10-16 7:31 ` [PATCH 5/5] arm64: dts: qcom: motorola-dubai: Add sound card with aw88261 speakers Val Packett
@ 2026-10-16 8:00 ` sashiko-bot
2026-10-16 8:04 ` Val Packett
0 siblings, 1 reply; 9+ messages in thread
From: sashiko-bot @ 2026-10-16 8:00 UTC (permalink / raw)
To: Val Packett; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] dt-bindings: aw88261 audio channel assignment inverted
- [Low] commit-message: inaccurate description of power-domains removal
--
commit df15644ca6ae81e8d6c78e4e8358dd5c5c68d8f0
Author: Val Packett <val@packett.cool>
arm64: dts: qcom: motorola-dubai: Add sound card with aw88261 speakers
This commit enables the sndcard node with MultiMedia frontends, a USB offload
RX link, and two aw88261 speaker amplifiers. It also fixes the audiocc
compatible string and removes power-domains from a node.
> While here, use the correct compatible for audiocc for this phone,
> and remove references to power-domains from a 'reserved' node.
[Severity: Low]
Is this description accurate? The patch code removes the power-domains
property from lpass_audiocc, which is a clock controller, not a reserved
memory node.
> 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 3860ab8508a09..1e1c195de1af1 100644
> --- a/arch/arm64/boot/dts/qcom/sm7325-motorola-dubai-common.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm7325-motorola-dubai-common.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>;
[Severity: Medium]
Does this assign the right physical speaker to the left audio channel?
Channel 0 is typically the left channel, which contradicts the
"Amplifier R" and "Bottom speaker" designation. This might result
in inverted stereo audio playback.
> +
> + #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>;
[Severity: Medium]
Similarly, does this assign the left physical speaker to the right audio
channel? Assigning 1 (typically the right channel) to the top/left
speaker contradicts its physical placement and name.
> +
> + #sound-dai-cells = <0>;
> + };
> +};
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261016073157.611956-1-val@packett.cool?part=5
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH 5/5] arm64: dts: qcom: motorola-dubai: Add sound card with aw88261 speakers
2026-10-16 8:00 ` sashiko-bot
@ 2026-10-16 8:04 ` Val Packett
0 siblings, 0 replies; 9+ messages in thread
From: Val Packett @ 2026-10-16 8:04 UTC (permalink / raw)
To: sashiko-reviews; +Cc: devicetree, robh, conor+dt
On 10/16/26 5:00 AM, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
> - [Medium] dt-bindings: aw88261 audio channel assignment inverted
> - [Low] commit-message: inaccurate description of power-domains removal
> --
>
> commit df15644ca6ae81e8d6c78e4e8358dd5c5c68d8f0
> Author: Val Packett <val@packett.cool>
> arm64: dts: qcom: motorola-dubai: Add sound card with aw88261 speakers
>
> This commit enables the sndcard node with MultiMedia frontends, a USB offload
> RX link, and two aw88261 speaker amplifiers. It also fixes the audiocc
> compatible string and removes power-domains from a node.
>
>> While here, use the correct compatible for audiocc for this phone,
>> and remove references to power-domains from a 'reserved' node.
> [Severity: Low]
> Is this description accurate? The patch code removes the power-domains
> property from lpass_audiocc, which is a clock controller, not a reserved
> memory node.
>
>> 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 3860ab8508a09..1e1c195de1af1 100644
>> --- a/arch/arm64/boot/dts/qcom/sm7325-motorola-dubai-common.dtsi
>> +++ b/arch/arm64/boot/dts/qcom/sm7325-motorola-dubai-common.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>;
> [Severity: Medium]
> Does this assign the right physical speaker to the left audio channel?
> Channel 0 is typically the left channel, which contradicts the
> "Amplifier R" and "Bottom speaker" designation. This might result
> in inverted stereo audio playback.
(It actually was inverted before, and this is the correct tested
configuration, but I think awinic,audio-channel might just be
unnecessary now, yet to test that though)
^ permalink raw reply [flat|nested] 9+ messages in thread