From: Rahul Pon <theflyingrahul@gmail.com>
To: Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>
Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH] soc: qcom: geni-se: don't fail ACPI probe on a missing SE clock
Date: Wed, 30 Sep 2026 16:46:27 +0530 [thread overview]
Message-ID: <20260930111627.1121-1-theflyingrahul@gmail.com> (raw)
geni_se_resources_init() tolerates a missing "se" clock for devices with an
ACPI companion, whose firmware manages the serial-engine clocks, but then
calls devm_pm_opp_set_clkname() for that same clock unconditionally. It
fails, so ACPI GENI controllers such as the I2C IDs QCOM0220 and QCOM0411
no longer probe. Before the OPP call, the error pointer left in se->clk
would also have reached clk_get_rate().
Treat an absent ACPI SE clock as firmware-owned: store NULL, which the
clock API accepts as a no-op (clk_get_rate() returns 0, so the I2C driver
selects its 19.2 MHz timing table), and skip the OPP clock name. DT
behaviour is unchanged.
Found by code review while bringing up an ACPI-booted Snapdragon X2
laptop; compile-tested with arm64 defconfig plus ACPI and W=1.
Fixes: 5b8a39dcf909 ("soc: qcom: geni-se: Introduce helper API for resource initialization")
Assisted-by: LLM
Signed-off-by: Rahul Pon <theflyingrahul@gmail.com>
---
drivers/soc/qcom/qcom-geni-se.c | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-se.c
index 873bfbd6b2..5d4b26e95e 100644
--- a/drivers/soc/qcom/qcom-geni-se.c
+++ b/drivers/soc/qcom/qcom-geni-se.c
@@ -1203,13 +1203,23 @@ int geni_se_resources_init(struct geni_se *se)
"Failed to get optional core clk\n");
se->clk = devm_clk_get(se->dev, "se");
- if (IS_ERR(se->clk) && !has_acpi_companion(se->dev))
- return dev_err_probe(se->dev, PTR_ERR(se->clk),
- "Failed to get SE clk\n");
+ if (IS_ERR(se->clk)) {
+ if (!has_acpi_companion(se->dev))
+ return dev_err_probe(se->dev, PTR_ERR(se->clk),
+ "Failed to get SE clk\n");
+ /*
+ * ACPI firmware owns the SE clock and its rate. The clock API
+ * treats NULL as a no-op, whereas an error pointer must not
+ * reach clk_get_rate() or the OPP core.
+ */
+ se->clk = NULL;
+ }
- ret = devm_pm_opp_set_clkname(se->dev, "se");
- if (ret)
- return ret;
+ if (se->clk) {
+ ret = devm_pm_opp_set_clkname(se->dev, "se");
+ if (ret)
+ return ret;
+ }
ret = devm_pm_opp_of_add_table(se->dev);
if (ret && ret != -ENODEV)
base-commit: 551c722f40809618230001baccf219193e22fc5a
--
2.53.0
reply other threads:[~2026-09-30 11:16 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20260930111627.1121-1-theflyingrahul@gmail.com \
--to=theflyingrahul@gmail.com \
--cc=andersson@kernel.org \
--cc=konradybcio@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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 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®