All of lore.kernel.org
 help / color / mirror / Atom feed
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 21/23] arm64: dts: qcom: add SM8650 LPASS CPU dtsi
Date: Fri, 13 Nov 2026 19:18:57 +0000	[thread overview]
Message-ID: <sashiko-outbox-213539@kernel.org> (raw)
In-Reply-To: <20261113-topic-sm8650-el2-v1-21-5183f6aab9fc@linaro.org>

Thank you for your contribution! Sashiko AI review found 4 potential
issues to consider:
- [Medium] arm64: dts: qcom: unsupported power-domains on WSA macros in
  sm8650-lpass-cpu
- [Medium] arm64: dts: qcom: unattached multiple power-domains on
  lpass_tlmm
- [Medium] arm64: dts: qcom: lpass_core clock count mismatches
  lpasscorecc-sm8650 driver
- [Low] arm64: dts: qcom: node and property ordering in
  sm8650-lpass-cpu.dtsi
--

commit 1f3d7332ea1210e666215d104062d22d42ebae2c
Author: Neil Armstrong <neil.armstrong@linaro.org>

arm64: dts: qcom: add SM8650 LPASS CPU dtsi

This commit adds sm8650-lpass-cpu.dtsi with the LPASS clock controllers,
lpass-cpu node, LPASS macro clocks, and I2S2 pinctrl state for SM8650
boards booting at EL2 without ADSP audio firmware.

> diff --git a/arch/arm64/boot/dts/qcom/sm8650-lpass-cpu.dtsi b/arch/arm64/boot/dts/qcom/sm8650-lpass-cpu.dtsi
> new file mode 100644
> index 0000000000000..43d0d8daa4fe2
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sm8650-lpass-cpu.dtsi

[ ... ]

> +&lpass_tlmm {
> +	clocks = <&lpass_core LPASS_CORE_CC_CORE_CLK>;
> +	clock-names = "core";
> +
> +	power-domains = <&lpass_hm LPASS_CORE_HM_GDSC>,
> +			<&lpass_aon LPASS_AON_CC_LPASS_AUDIO_HM_GDSC>;
> +	power-domain-names = "core",
> +			     "audio";
> +
> +	status = "okay";
> +};

[Severity: Medium]
Does specifying two entries in power-domains leave both GDSCs unattached on
lpass_tlmm?

genpd_dev_pm_attach() returns early without attaching any domain when a node
lists more than one power domain, and lpi_pinctrl_probe() only sets up PM
clocks without calling devm_pm_domain_attach_list() or
dev_pm_domain_attach_by_name().  As a result, runtime PM resume of
lpass_tlmm will not power on LPASS_AON_CC_LPASS_AUDIO_HM_GDSC before
accessing LPI TLMM registers.

[ ... ]

> +&lpass_wsa2macro {
> +	clocks = <&lpass_audiocc LPASS_AUDIO_CC_WSA2_MCLK_CLK>,
> +		 <&lpass_audiocc LPASS_AUDIO_CC_TX_MCLK_WSA2_CLK>,
> +		 <&lpass_vamacro>;
> +	clock-names = "mclk",
> +		      "macro",
> +		      "fsgen";
> +
> +	power-domains = <&lpass_hm LPASS_CORE_HM_GDSC>,
> +			<&lpass_aon LPASS_AON_CC_LPASS_AUDIO_HM_GDSC>;
> +	power-domain-names = "macro",
> +			     "dcodec";
> +};
> +
> +&lpass_wsamacro {
> +	clocks = <&lpass_audiocc LPASS_AUDIO_CC_WSA_MCLK_CLK>,
> +		 <&lpass_audiocc LPASS_AUDIO_CC_TX_MCLK_WSA_CLK>,
> +		 <&lpass_vamacro>;
> +	clock-names = "mclk",
> +		      "macro",
> +		      "fsgen";
> +
> +	power-domains = <&lpass_hm LPASS_CORE_HM_GDSC>,
> +			<&lpass_aon LPASS_AON_CC_LPASS_AUDIO_HM_GDSC>;
> +	power-domain-names = "macro",
> +			     "dcodec";
> +};

[Severity: Medium]
Are power-domains and power-domain-names supported on lpass_wsa2macro and
lpass_wsamacro?

Documentation/devicetree/bindings/sound/qcom,lpass-wsa-macro.yaml does not
define power-domains or power-domain-names and sets unevaluatedProperties:
false, so dtbs_check fails when sm8650-lpass-cpu.dtsi is included.  In
addition, unlike the rx, tx, and va macro drivers, wsa_macro_probe() never
calls lpass_macro_pds_init(), while genpd_dev_pm_attach() skips automatic
attachment when more than one domain is listed, leaving both GDSCs
unattached during register access.

> +
> +&soc {
> +	lpass_audiocc: clock-controller@6bc0000 {
> +		reg = <0 0x06bc0000 0 0x38000>;
> +		compatible = "qcom,sm8650-lpassaudiocc";
> +
> +		clocks = <&bi_tcxo_div2>,
> +			 <&lpass_aon LPASS_AON_CC_MAIN_RCG_CLK_SRC>;
> +		clock-names = "bi_tcxo",
> +			      "iface";
> +
> +		power-domains = <&lpass_aon LPASS_AON_CC_LPASS_AUDIO_HM_GDSC>;
> +
> +		#clock-cells = <1>;
> +	};
> +
> +	lpass_aon: clock-controller@6e00000 {
> +		reg = <0 0x06e00000 0 0x30000>;
> +		compatible = "qcom,sm8650-lpassaoncc";
> +
> +		clocks = <&bi_tcxo_div2>,
> +			 <&lpass_core LPASS_CORE_CC_CORE_CLK>;
> +		clock-names = "bi_tcxo",
> +			      "iface";
> +
> +		#clock-cells = <1>;
> +		#power-domain-cells = <1>;
> +	};
> +
> +	lpass_core: clock-controller@7b00000 {
> +		compatible = "qcom,sm8650-lpasscorecc";
> +		reg = <0 0x07b00000 0 0x58000>;
> +
> +		clocks = <&bi_tcxo_div2>;
> +		clock-names = "bi_tcxo";
> +
> +		power-domains = <&lpass_hm LPASS_CORE_HM_GDSC>;
> +
> +		#clock-cells = <1>;
> +	};

[Severity: Medium]
Does providing only a single clock at index 0 on lpass_core leave the
P_BI_TCXO parent of lpass_core_cc_core_clk_src unresolved?

In drivers/clk/qcom/lpasscorecc-sm8650.c, lpass_core_cc_parent_data_ao_2
looks up DT clock index 1 for P_BI_TCXO:

drivers/clk/qcom/lpasscorecc-sm8650.c:
static const struct clk_parent_data lpass_core_cc_parent_data_ao_2[] = {
	{ .index = 1 },
	{ .hw = &lpass_core_cc_dig_pll.clkr.hw },
	{ .hw = &lpass_core_cc_dig_pll_out_main_div_clk_src.clkr.hw },
};

Because lpass_core only provides index 0, of_parse_clkspec() fails with
-ENOENT for index 1, leaving lpass_core_cc_core_clk_src and its child
branch clocks (such as LPASS_CORE_CC_CORE_CLK and
LPASS_CORE_CC_SYSNOC_MPORT_CORE_CLK) without their safe XO parent when
clk_rcg2_shared_init() parks the RCG.

> +
> +	lpass_hm: clock-controller@7e00000 {
> +		compatible = "qcom,sm8650-lpasshm";
> +		reg = <0 0x07e00000 0 0xa000>;
> +
> +		clocks = <&bi_tcxo_div2>;
> +		clock-names = "bi_tcxo";
> +
> +		power-domains = <&rpmhpd RPMHPD_LCX>;
> +
> +		required-opps = <&rpmhpd_opp_nom>;
> +
> +		#clock-cells = <1>;
> +		#power-domain-cells = <1>;
> +	};
> +
> +	lpass_cpu: audio@7b87000 {
> +		compatible = "qcom,sm8650-lpass-cpu";

[Severity: Low]
This isn't a bug, but audio@7b87000 is placed after
clock-controller@7e00000 instead of in unit-address order, and compatible
is placed after reg in clock-controller@6bc0000 and
clock-controller@6e00000 above.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261113-topic-sm8650-el2-v1-0-5183f6aab9fc@linaro.org?part=21

  reply	other threads:[~2026-11-13 19:18 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
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 [this message]
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-213539@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.