From: sashiko-bot@kernel.org
To: "Neil Armstrong" <neil.armstrong@linaro.org>
Cc: linux-sound@vger.kernel.org, devicetree@vger.kernel.org,
linux-clk@vger.kernel.org, linux-gpio@vger.kernel.org,
robh@kernel.org, conor+dt@kernel.org
Subject: Re: [PATCH RFC 17/23] ASoC: qcom: add SM8650 LPASS CPU driver
Date: Fri, 13 Nov 2026 19:22:38 +0000 [thread overview]
Message-ID: <sashiko-outbox-213544@kernel.org> (raw)
In-Reply-To: <20261113-topic-sm8650-el2-v1-17-5183f6aab9fc@linaro.org>
Thank you for your contribution! Sashiko AI review found 2 potential
issues to consider:
- [High] ASoC: qcom: wrong lpm_type for lpass-rxtx-lpaif in
sm8650_lpaif_mi2s_desc[]
- [Medium] ASoC: qcom: missing set_bit() for RX channels in
sm8650_lpass_alloc_dma_channel()
--
commit ee9ae911e7b58d190ad971326ccfe23116c1a06b
Author: Neil Armstrong <neil.armstrong@linaro.org>
ASoC: qcom: add SM8650 LPASS CPU driver
This commit adds the SM8650 LPASS CPU DAI driver variant supporting MI2S,
DisplayPort, and codec DMA audio interfaces when driven directly by the
application processor.
> diff --git a/sound/soc/qcom/lpass-sm8650.c b/sound/soc/qcom/lpass-sm8650.c
> new file mode 100644
> index 0000000000000..42050f56a4847
> --- /dev/null
> +++ b/sound/soc/qcom/lpass-sm8650.c
> @@ -0,0 +1,651 @@
[ ... ]
> +static int sm8650_lpass_alloc_dma_channel(struct lpass_data *drvdata,
> + int direction, unsigned int dai_id)
> +{
[ ... ]
> + case LPASS_CDC_DMA_RX0 ... LPASS_CDC_DMA_RX9:
> + chan = find_first_zero_bit(&drvdata->rxtx_dma_ch_bit_map,
> + v->rxtx_rdma_channels);
> + if (chan >= v->rxtx_rdma_channels)
> + return -EBUSY;
> + break;
> + case LPASS_CDC_DMA_TX0 ... LPASS_CDC_DMA_TX8:
> + chan = find_next_zero_bit(&drvdata->rxtx_dma_ch_bit_map,
> + v->rxtx_wrdma_channel_start +
> + v->rxtx_wrdma_channels,
> + v->rxtx_wrdma_channel_start);
> + if (chan >= v->rxtx_wrdma_channel_start + v->rxtx_wrdma_channels)
> + return -EBUSY;
> + set_bit(chan, &drvdata->rxtx_dma_ch_bit_map);
> + break;
> + case LPASS_CDC_DMA_VA_TX0 ... LPASS_CDC_DMA_VA_TX8:
> + chan = find_next_zero_bit(&drvdata->va_dma_ch_bit_map,
> + v->va_wrdma_channel_start +
> + v->va_wrdma_channels,
> + v->va_wrdma_channel_start);
> + if (chan >= v->va_wrdma_channel_start + v->va_wrdma_channels)
> + return -EBUSY;
> + set_bit(chan, &drvdata->va_dma_ch_bit_map);
> + break;
> + case LPASS_CDC_DMA_WSA_RX0 ... LPASS_CDC_DMA_WSA_RX9:
> + chan = find_first_zero_bit(&drvdata->wsa_dma_ch_bit_map,
> + v->wsa_rdma_channels);
> + if (chan >= v->wsa_rdma_channels)
> + return -EBUSY;
> + break;
[Severity: Medium]
Should the LPASS_CDC_DMA_RX0 ... LPASS_CDC_DMA_RX9 and
LPASS_CDC_DMA_WSA_RX0 ... LPASS_CDC_DMA_WSA_RX9 cases call set_bit() on
drvdata->rxtx_dma_ch_bit_map and drvdata->wsa_dma_ch_bit_map before
breaking?
Without set_bit(), channel 0 is never marked as allocated (even though
sm8650_lpass_free_dma_channel() clears the bit on close), so subsequent
allocations from those bitmaps will hand out channel 0 again and overwrite
drvdata->rxtx_substream[0] or drvdata->wsa_substream[0] in
lpass_platform_pcmops_open().
[ ... ]
> +/* MI2S mapping over LPAIF instances */
> +static const struct lpaif_mi2s_desc sm8650_lpaif_mi2s_desc[] = {
> + {
> + .reg_name = "lpass-lpaif",
> + .irq_name = "lpass-irq-lpaif",
> + .lpm_type = LPASS_LPM_NONE,
> + .port_desc = (const struct mi2s_port_desc[]) {
> + { .intf = 0, .id = MI2S_PRIMARY, },
> + { .intf = 1, .id = MI2S_SECONDARY, },
> + },
> + .port_desc_count = 2,
> + },
> + {
> + .reg_name = "lpass-rxtx-lpaif",
> + .irq_name = "lpass-irq-rxtxif",
> + .lpm_type = LPASS_VA_CDC_LPM,
> + .port_desc = (const struct mi2s_port_desc[]) {
> + { .intf = 0, .id = MI2S_QUATERNARY, },
> + },
> + .port_desc_count = 1,
> + },
[Severity: High]
Should the lpass-rxtx-lpaif descriptor use LPASS_RXTX_CDC_LPM instead of
LPASS_VA_CDC_LPM?
lpass-rxtx-lpaif is in the Audio CC / RXTX domain (clocked by
audio_cc_ext_if1_ibit), so setting LPASS_VA_CDC_LPM maps MI2S_QUATERNARY
DMA buffers from the 12 KiB VA LPM region (va_cdc_dma_lpm_buf) and enables
va_mem0 in lpass_cpu_daiops_startup() instead of using the 64 KiB RXTX LPM
region and audio_cc_codec_mem0..3. If MI2S_QUATERNARY is enabled
alongside LPASS_CDC_DMA_VA_TX0, lpass_platform_allocate_lpm() also fails
probe with -EINVAL because VA Codec DMA already consumes all 12 KiB of VA
LPM, and if MI2S_QUATERNARY is enabled alongside MI2S_QUINARY without VA
Codec DMA, va_cdc_dma_lpm_remain underflows and assigns an offset past the
end of the 12 KiB VA LPM buffer.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261113-topic-sm8650-el2-v1-0-5183f6aab9fc@linaro.org?part=17
next prev parent reply other threads:[~2026-11-13 19:22 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-13 18:38 [PATCH RFC 00/23] arm64: qcom: enable SM8650 audio without ADSP firmware Neil Armstrong
2026-11-13 18:38 ` [PATCH RFC 01/23] dt-bindings: clock: qcom: add SM8650 LPASS core & audio clock controllers Neil Armstrong
2026-11-13 18:57 ` sashiko-bot
2026-11-13 18:38 ` [PATCH RFC 02/23] clk: " Neil Armstrong
2026-11-13 19:14 ` sashiko-bot
2026-11-13 18:38 ` [PATCH RFC 03/23] dt-bindings: pinctrl: qcom,sm8650-lpass-lpi-pinctrl: document clocks and power domaines when ADSP is not used Neil Armstrong
2026-11-13 19:02 ` sashiko-bot
2026-11-13 18:38 ` [PATCH RFC 04/23] ASoC: dt-bindings: qcom,lpass: add Senary & Septenary MI2S ids Neil Armstrong
2026-11-13 18:38 ` [PATCH RFC 05/23] ASoC: dt-bindings: qcom,lpass: add WSA RX and TX channels ids Neil Armstrong
2026-11-13 18:38 ` [PATCH RFC 06/23] ASoC: dt-bindings: qcom,lpass-*-macro: document less clock when ADSP is not used Neil Armstrong
2026-11-13 18:38 ` [PATCH RFC 07/23] ASoC: dt-bindings: qcom,lpass-cpu: document the SM8650 LPASS Neil Armstrong
2026-11-13 18:57 ` sashiko-bot
2026-11-13 18:38 ` [PATCH RFC 08/23] ASoC: qcom: lpass-cpu: get the optional codec_mem3 clock Neil Armstrong
2026-11-13 18:38 ` [PATCH RFC 09/23] ASoC: qcom: lpass: add support for optional WSA interface Neil Armstrong
2026-11-13 19:11 ` sashiko-bot
2026-11-13 18:38 ` [PATCH RFC 10/23] ASoC: qcom: lpass-cdc-dma: add support for WSA codec DMA Neil Armstrong
2026-11-13 19:07 ` sashiko-bot
2026-11-13 18:38 ` [PATCH RFC 11/23] ASoC: qcom: lpass: prepare to handle multiple lpaifs for i2s Neil Armstrong
2026-11-13 18:38 ` [PATCH RFC 12/23] ASoC: qcom: lpass: add support for MI2S_SENARY & MI2S_SEPTENARY Neil Armstrong
2026-11-13 18:38 ` [PATCH RFC 13/23] ASoC: qcom: lpass: support mapping I2S ports to multiple LPAIFs Neil Armstrong
2026-11-13 19:04 ` sashiko-bot
2026-11-13 18:38 ` [PATCH RFC 14/23] ASoC: qcom: lpass: support LPM memory type for I2S LPAIFs Neil Armstrong
2026-11-13 18:38 ` [PATCH RFC 15/23] ASoC: qcom: lpass: allocate LPM buffer memory to DAIs Neil Armstrong
2026-11-13 19:12 ` sashiko-bot
2026-11-13 18:38 ` [PATCH RFC 16/23] ASoC: qcom: lpass: enable the right codec_mem clock when usin LPM memory Neil Armstrong
2026-11-13 19:06 ` sashiko-bot
2026-11-13 18:38 ` [PATCH RFC 17/23] ASoC: qcom: add SM8650 LPASS CPU driver Neil Armstrong
2026-11-13 19:22 ` sashiko-bot [this message]
2026-11-13 18:38 ` [PATCH RFC 18/23] ASoC: qcom: swd: allow LPASS_CDC_DMA_WSA_RX0 as soundwire dai Neil Armstrong
2026-11-13 18:38 ` [PATCH RFC 19/23] ASoC: qcom: sc8280xp: allow using the sc8280xp card with lpass-cpu Neil Armstrong
2026-11-13 19:12 ` sashiko-bot
2026-11-13 18:38 ` [PATCH RFC 20/23] arm64: dts: qcom: sm8650: move EL1 Gunyah nodes to sm8650-el1.dtsi Neil Armstrong
2026-11-13 19:08 ` Val Packett
2026-11-13 19:11 ` sashiko-bot
2026-11-13 18:38 ` [PATCH RFC 21/23] arm64: dts: qcom: add SM8650 LPASS CPU dtsi Neil Armstrong
2026-11-13 19:18 ` sashiko-bot
2026-11-13 18:38 ` [PATCH RFC 22/23] arm64: dts: qcom: sm8650-valve-deckard: enable audio Neil Armstrong
2026-11-13 19:23 ` sashiko-bot
2026-11-13 18:38 ` [PATCH RFC 23/23] arm64: defconfig: enable the SM8650 LPASS CPU driver Neil Armstrong
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=sashiko-outbox-213544@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.