All of lore.kernel.org
 help / color / mirror / Atom feed
From: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com>
To: Reza Kurniawan <imkyufie@gmail.com>, u-boot@lists.u-boot-project.org
Cc: Casey Connolly <casey.connolly@linaro.org>,
	Lukasz Majewski <lukma@denx.de>,
	Neil Armstrong <neil.armstrong@linaro.org>,
	Sumit Garg <sumit.garg@kernel.org>, Tom Rini <trini@konsulko.com>,
	u-boot-qcom@groups.io
Subject: Re: [PATCH 3/4] clk: qcom: Add an option to poll for GDSCR GDSC_POWER_ON bit
Date: Fri, 11 Sep 2026 11:48:59 +0530	[thread overview]
Message-ID: <b127d4ec-a8ce-4dd5-8382-12e8b1c75b8c@oss.qualcomm.com> (raw)
In-Reply-To: <20260910095339.110427-4-imkyufie@gmail.com>

Hi Reza,

On 9/10/2026 3:11 PM, Reza Kurniawan wrote:
> Some SoCs such as MSM8917 poll its GDSC power domains by reading GDSCR
> directly, as opposed to GDSCR + CFG_GDSCR_OFFSET.
> Add a poll_gdscr flag to struct qcom_power_map to facilitate those SoCs.
>
> Signed-off-by: Reza Kurniawan <imkyufie@gmail.com>
Reviewed-by: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com>
> ---
>
>   drivers/clk/qcom/clock-qcom.c | 24 +++++++++++++-----------
>   drivers/clk/qcom/clock-qcom.h |  1 +
>   2 files changed, 14 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/clk/qcom/clock-qcom.c b/drivers/clk/qcom/clock-qcom.c
> index 6b46d9db7..754ff4ff4 100644
> --- a/drivers/clk/qcom/clock-qcom.c
> +++ b/drivers/clk/qcom/clock-qcom.c
> @@ -505,9 +505,9 @@ U_BOOT_DRIVER(qcom_reset) = {
>   static int qcom_power_set(struct power_domain *pwr, bool on)
>   {
>   	struct msm_clk_data *data = (struct msm_clk_data *)dev_get_driver_data(pwr->dev);
> -	void __iomem *base = dev_get_priv(pwr->dev);
> +	void __iomem *base = dev_get_priv(pwr->dev), *poll_addr;
>   	const struct qcom_power_map *map;
> -	u32 value;
> +	u32 value, mask;
>   	int ret;
>   
>   	if (pwr->id >= data->num_power_domains)
> @@ -527,19 +527,21 @@ static int qcom_power_set(struct power_domain *pwr, bool on)
>   
>   	writel(value, base + map->reg);
>   
> -	if (on)
> -		ret = readl_poll_timeout(base + map->reg + CFG_GDSCR_OFFSET,
> +	poll_addr = base + map->reg;
> +	if (map->poll_gdscr) {
> +		/* Some SOCs such as MSM8917 poll at GDSCR */
> +		ret = readl_poll_timeout(poll_addr,
>   					 value,
> -					 (value & GDSC_POWER_UP_COMPLETE) ||
> -					 (value & GDSC_PWR_ON_MASK),
> +					 (!!(value & GDSC_PWR_ON_MASK) == on),
>   					 GDSC_STATUS_POLL_TIMEOUT_US);
> -
> -	else
> -		ret = readl_poll_timeout(base + map->reg + CFG_GDSCR_OFFSET,
> +	} else {
> +		mask = on ? GDSC_POWER_UP_COMPLETE : GDSC_POWER_DOWN_COMPLETE;
> +		ret = readl_poll_timeout(poll_addr + CFG_GDSCR_OFFSET,
>   					 value,
> -					 (value & GDSC_POWER_DOWN_COMPLETE) ||
> -					 !(value & GDSC_PWR_ON_MASK),
> +					 (value & mask) ||
> +					 !!(value & GDSC_PWR_ON_MASK) == on,
>   					 GDSC_STATUS_POLL_TIMEOUT_US);
> +	}
>   
>   	if (ret == -ETIMEDOUT)
>   		printf("WARNING: GDSC %lu is stuck during power on/off\n",
> diff --git a/drivers/clk/qcom/clock-qcom.h b/drivers/clk/qcom/clock-qcom.h
> index 3a4550d85..0b514cc1f 100644
> --- a/drivers/clk/qcom/clock-qcom.h
> +++ b/drivers/clk/qcom/clock-qcom.h
> @@ -76,6 +76,7 @@ struct qcom_reset_map {
>   
>   struct qcom_power_map {
>   	unsigned int reg;
> +	bool poll_gdscr;
>   };
>   
>   struct clk;

  reply	other threads:[~2026-09-11  6:19 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-10  9:41 [PATCH 0/4] Add preliminary support for MSM8917 Reza Kurniawan
2026-09-10  9:41 ` [PATCH 1/4] mach-snapdragon: Carve out reserved memory at init " Reza Kurniawan
2026-09-11  5:48   ` Balaji Selvanathan
2026-09-10  9:41 ` [PATCH 2/4] pinctrl: qcom: Add pinctrl driver " Reza Kurniawan
2026-09-11  6:05   ` Balaji Selvanathan
2026-09-10  9:41 ` [PATCH 3/4] clk: qcom: Add an option to poll for GDSCR GDSC_POWER_ON bit Reza Kurniawan
2026-09-11  6:18   ` Balaji Selvanathan [this message]
2026-09-10  9:41 ` [PATCH 4/4] clk: qcom: Add Global Clock Controller (GCC) driver for MSM8917 Reza Kurniawan
2026-09-11  6:29   ` Balaji Selvanathan

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=b127d4ec-a8ce-4dd5-8382-12e8b1c75b8c@oss.qualcomm.com \
    --to=balaji.selvanathan@oss.qualcomm.com \
    --cc=casey.connolly@linaro.org \
    --cc=imkyufie@gmail.com \
    --cc=lukma@denx.de \
    --cc=neil.armstrong@linaro.org \
    --cc=sumit.garg@kernel.org \
    --cc=trini@konsulko.com \
    --cc=u-boot-qcom@groups.io \
    --cc=u-boot@lists.u-boot-project.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 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.