[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAMuHMdV9n3ypBG1HffvHxYke5Ym068ZK1s2QryE-rbVgFS9dzw@mail.gmail.com>
Date: Mon, 5 Jun 2023 15:15:16 +0200
From: Geert Uytterhoeven <geert@...ux-m68k.org>
To: Geert Uytterhoeven <geert+renesas@...der.be>
Cc: Michael Turquette <mturquette@...libre.com>,
Stephen Boyd <sboyd@...nel.org>,
Yoshihiro Shimoda <yoshihiro.shimoda.uh@...esas.com>,
Magnus Damm <magnus.damm@...il.com>,
Joerg Roedel <joro@...tes.org>,
Robin Murphy <robin.murphy@....com>,
Tomasz Figa <tomasz.figa@...il.com>,
Sylwester Nawrocki <s.nawrocki@...sung.com>,
Will Deacon <will@...nel.org>, Arnd Bergmann <arnd@...db.de>,
Wolfram Sang <wsa+renesas@...g-engineering.com>,
Dejin Zheng <zhengdejin5@...il.com>,
Kai-Heng Feng <kai.heng.feng@...onical.com>,
Nicholas Piggin <npiggin@...il.com>,
Heiko Carstens <hca@...ux.ibm.com>,
Peter Zijlstra <peterz@...radead.org>,
Russell King <linux@...linux.org.uk>,
John Stultz <jstultz@...gle.com>,
Thomas Gleixner <tglx@...utronix.de>,
Tony Lindgren <tony@...mide.com>,
Krzysztof Kozlowski <krzk@...nel.org>,
Tero Kristo <tero.kristo@...ux.intel.com>,
Ulf Hansson <ulf.hansson@...aro.org>,
"Rafael J . Wysocki" <rafael.j.wysocki@...el.com>,
Vincent Guittot <vincent.guittot@...aro.org>,
linux-clk@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-renesas-soc@...r.kernel.org, linux-pm@...r.kernel.org,
iommu@...ts.linux.dev, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 6/7] soc: renesas: rmobile-sysc: Convert to readl_poll_timeout_atomic()
On Fri, Jun 2, 2023 at 10:51 AM Geert Uytterhoeven
<geert+renesas@...der.be> wrote:
> Use readl_poll_timeout_atomic() instead of open-coding the same
> operation.
>
> 1. rmobile_pd_power_down(): as typically less than 20 retries are
> needed, PSTR_RETRIES (100) µs is a suitable timeout value.
>
> 2. __rmobile_pd_power_up(): the old method of first polling some
> cycles with a 1 µs delay, followed by more polling cycles without
> any delay didn't make much sense, as the latter was insignificant
> compared to the former. Furthermore, typically no retries are
> needed. Hence just retain the polling with delay.
>
> Signed-off-by: Geert Uytterhoeven <geert+renesas@...der.be>
> diff --git a/drivers/soc/renesas/rmobile-sysc.c b/drivers/soc/renesas/rmobile-sysc.c
> index 728ebac98e14a5cc..5d621c35fba1116a 100644
> @@ -74,25 +71,17 @@ static int rmobile_pd_power_down(struct generic_pm_domain *genpd)
>
> static int __rmobile_pd_power_up(struct rmobile_pm_domain *rmobile_pd)
> {
> - unsigned int mask = BIT(rmobile_pd->bit_shift);
> - unsigned int retry_count;
> - int ret = 0;
> + unsigned int val, mask = BIT(rmobile_pd->bit_shift);
> + int ret;
Oops, "ret" should still be initialized to zero.
>
> if (readl(rmobile_pd->base + PSTR) & mask)
> return ret;
>
> writel(mask, rmobile_pd->base + SWUCR);
>
> - for (retry_count = 2 * PSTR_RETRIES; retry_count; retry_count--) {
> - if (!(readl(rmobile_pd->base + SWUCR) & mask))
> - break;
> - if (retry_count > PSTR_RETRIES)
> - udelay(PSTR_DELAY_US);
> - else
> - cpu_relax();
> - }
> - if (!retry_count)
> - ret = -EIO;
> + ret = readl_poll_timeout_atomic(rmobile_pd->base + SWUCR, val,
> + (val & mask), PSTR_DELAY_US,
> + PSTR_RETRIES * PSTR_DELAY_US);
>
> pr_debug("%s: Power on, 0x%08x -> PSTR = 0x%08x\n",
> rmobile_pd->genpd.name, mask,
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@...ux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Powered by blists - more mailing lists