From: Frank Oltmanns <frank@oltmanns.dev>
To: Jernej Skrabec <jernej.skrabec@gmail.com>,
Maxime Ripard <mripard@kernel.org>,
Diego Roversi <diegor@tiscali.it>
Cc: "Michael Turquette" <mturquette@baylibre.com>,
"Stephen Boyd" <sboyd@kernel.org>, "Chen-Yu Tsai" <wens@csie.org>,
"Samuel Holland" <samuel@sholland.org>,
"Guido Günther" <agx@sigxcpu.org>,
"Purism Kernel Team" <kernel@puri.sm>,
"Ondrej Jirman" <megi@xff.cz>,
"Neil Armstrong" <neil.armstrong@linaro.org>,
"Jessica Zhang" <quic_jesszhan@quicinc.com>,
"Sam Ravnborg" <sam@ravnborg.org>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"David Airlie" <airlied@gmail.com>,
"Daniel Vetter" <daniel@ffwll.ch>,
"Rob Herring" <robh+dt@kernel.org>,
"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
"Conor Dooley" <conor+dt@kernel.org>,
linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org,
dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v2 3/6] clk: sunxi-ng: nkm: Support minimum and maximum rate
Date: Wed, 21 Feb 2024 11:38:39 +0100 [thread overview]
Message-ID: <8734tmhzkg.fsf@oltmanns.dev> (raw)
In-Reply-To: <20240205-pinephone-pll-fixes-v2-3-96a46a2d8c9b@oltmanns.dev>
Hi Jernej,
hi Maxime,
On 2024-02-05 at 16:22:26 +0100, Frank Oltmanns <frank@oltmanns.dev> wrote:
> According to the Allwinner User Manual, the Allwinner A64 requires
> PLL-MIPI to run at 500MHz-1.4GHz. Add support for that to ccu_nkm.
I should point out that limiting PLL-MIPI also fixes a regression
that was introduced in 6.5, specifically
ca1170b69968233b34d26432245eddf7d265186b "clk: sunxi-ng: a64: force
select PLL_MIPI in TCON0 mux". This has been bisected and reported by
Diego [1].
I don't know the procedure (yet), but probably the fix (if and when
accepted) should be backported at least to 6.6 (first broken LTS), 6.7
(stable), and 6.8 (next stable).
My suggestion:
- In V3 of this series, I will reorder the patches, so that what is now
PATCH 3 and 4 becomes 1 and 2 respectively, so that they can be
applied to 6.6 more easily.
- Maxime, IIUC you requested some refactoring for handling the rate
limits [2]. I propose, we use my current proposal as-is, and I will
do a follow-up series for the refactoring.
Please let me know how you would like me to proceed.
Thanks,
Frank
[1]: https://groups.google.com/g/linux-sunxi/c/Rh-Uqqa66bw
[2]: https://lore.kernel.org/all/exb2lvjcozak5fayrgyenrd3ntii4jfxgvqork4klyz5pky2aq@dj2zyw5su6pv/
>
> Signed-off-by: Frank Oltmanns <frank@oltmanns.dev>
> ---
> drivers/clk/sunxi-ng/ccu_nkm.c | 13 +++++++++++++
> drivers/clk/sunxi-ng/ccu_nkm.h | 2 ++
> 2 files changed, 15 insertions(+)
>
> diff --git a/drivers/clk/sunxi-ng/ccu_nkm.c b/drivers/clk/sunxi-ng/ccu_nkm.c
> index 1168d894d636..7d135908d6e0 100644
> --- a/drivers/clk/sunxi-ng/ccu_nkm.c
> +++ b/drivers/clk/sunxi-ng/ccu_nkm.c
> @@ -181,6 +181,12 @@ static unsigned long ccu_nkm_round_rate(struct ccu_mux_internal *mux,
> if (nkm->common.features & CCU_FEATURE_FIXED_POSTDIV)
> rate *= nkm->fixed_post_div;
>
> + if (nkm->min_rate && rate < nkm->min_rate)
> + rate = nkm->min_rate;
> +
> + if (nkm->max_rate && rate > nkm->max_rate)
> + rate = nkm->max_rate;
> +
> if (!clk_hw_can_set_rate_parent(&nkm->common.hw))
> rate = ccu_nkm_find_best(*parent_rate, rate, &_nkm, &nkm->common);
> else
> @@ -220,6 +226,13 @@ static int ccu_nkm_set_rate(struct clk_hw *hw, unsigned long rate,
> _nkm.min_m = 1;
> _nkm.max_m = nkm->m.max ?: 1 << nkm->m.width;
>
> +
> + if (nkm->min_rate && rate < nkm->min_rate)
> + rate = nkm->min_rate;
> +
> + if (nkm->max_rate && rate > nkm->max_rate)
> + rate = nkm->max_rate;
> +
> ccu_nkm_find_best(parent_rate, rate, &_nkm, &nkm->common);
>
> spin_lock_irqsave(nkm->common.lock, flags);
> diff --git a/drivers/clk/sunxi-ng/ccu_nkm.h b/drivers/clk/sunxi-ng/ccu_nkm.h
> index c409212ee40e..358a9df6b6a0 100644
> --- a/drivers/clk/sunxi-ng/ccu_nkm.h
> +++ b/drivers/clk/sunxi-ng/ccu_nkm.h
> @@ -27,6 +27,8 @@ struct ccu_nkm {
> struct ccu_mux_internal mux;
>
> unsigned int fixed_post_div;
> + unsigned long min_rate;
> + unsigned long max_rate;
> unsigned long max_m_n_ratio;
> unsigned long min_parent_m_ratio;
WARNING: multiple messages have this Message-ID (diff)
From: Frank Oltmanns <frank@oltmanns.dev>
To: Jernej Skrabec <jernej.skrabec@gmail.com>,
Maxime Ripard <mripard@kernel.org>,
Diego Roversi <diegor@tiscali.it>
Cc: "Michael Turquette" <mturquette@baylibre.com>,
"Stephen Boyd" <sboyd@kernel.org>, "Chen-Yu Tsai" <wens@csie.org>,
"Samuel Holland" <samuel@sholland.org>,
"Guido Günther" <agx@sigxcpu.org>,
"Purism Kernel Team" <kernel@puri.sm>,
"Ondrej Jirman" <megi@xff.cz>,
"Neil Armstrong" <neil.armstrong@linaro.org>,
"Jessica Zhang" <quic_jesszhan@quicinc.com>,
"Sam Ravnborg" <sam@ravnborg.org>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"David Airlie" <airlied@gmail.com>,
"Daniel Vetter" <daniel@ffwll.ch>,
"Rob Herring" <robh+dt@kernel.org>,
"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
"Conor Dooley" <conor+dt@kernel.org>,
linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org,
dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v2 3/6] clk: sunxi-ng: nkm: Support minimum and maximum rate
Date: Wed, 21 Feb 2024 11:38:39 +0100 [thread overview]
Message-ID: <8734tmhzkg.fsf@oltmanns.dev> (raw)
In-Reply-To: <20240205-pinephone-pll-fixes-v2-3-96a46a2d8c9b@oltmanns.dev>
Hi Jernej,
hi Maxime,
On 2024-02-05 at 16:22:26 +0100, Frank Oltmanns <frank@oltmanns.dev> wrote:
> According to the Allwinner User Manual, the Allwinner A64 requires
> PLL-MIPI to run at 500MHz-1.4GHz. Add support for that to ccu_nkm.
I should point out that limiting PLL-MIPI also fixes a regression
that was introduced in 6.5, specifically
ca1170b69968233b34d26432245eddf7d265186b "clk: sunxi-ng: a64: force
select PLL_MIPI in TCON0 mux". This has been bisected and reported by
Diego [1].
I don't know the procedure (yet), but probably the fix (if and when
accepted) should be backported at least to 6.6 (first broken LTS), 6.7
(stable), and 6.8 (next stable).
My suggestion:
- In V3 of this series, I will reorder the patches, so that what is now
PATCH 3 and 4 becomes 1 and 2 respectively, so that they can be
applied to 6.6 more easily.
- Maxime, IIUC you requested some refactoring for handling the rate
limits [2]. I propose, we use my current proposal as-is, and I will
do a follow-up series for the refactoring.
Please let me know how you would like me to proceed.
Thanks,
Frank
[1]: https://groups.google.com/g/linux-sunxi/c/Rh-Uqqa66bw
[2]: https://lore.kernel.org/all/exb2lvjcozak5fayrgyenrd3ntii4jfxgvqork4klyz5pky2aq@dj2zyw5su6pv/
>
> Signed-off-by: Frank Oltmanns <frank@oltmanns.dev>
> ---
> drivers/clk/sunxi-ng/ccu_nkm.c | 13 +++++++++++++
> drivers/clk/sunxi-ng/ccu_nkm.h | 2 ++
> 2 files changed, 15 insertions(+)
>
> diff --git a/drivers/clk/sunxi-ng/ccu_nkm.c b/drivers/clk/sunxi-ng/ccu_nkm.c
> index 1168d894d636..7d135908d6e0 100644
> --- a/drivers/clk/sunxi-ng/ccu_nkm.c
> +++ b/drivers/clk/sunxi-ng/ccu_nkm.c
> @@ -181,6 +181,12 @@ static unsigned long ccu_nkm_round_rate(struct ccu_mux_internal *mux,
> if (nkm->common.features & CCU_FEATURE_FIXED_POSTDIV)
> rate *= nkm->fixed_post_div;
>
> + if (nkm->min_rate && rate < nkm->min_rate)
> + rate = nkm->min_rate;
> +
> + if (nkm->max_rate && rate > nkm->max_rate)
> + rate = nkm->max_rate;
> +
> if (!clk_hw_can_set_rate_parent(&nkm->common.hw))
> rate = ccu_nkm_find_best(*parent_rate, rate, &_nkm, &nkm->common);
> else
> @@ -220,6 +226,13 @@ static int ccu_nkm_set_rate(struct clk_hw *hw, unsigned long rate,
> _nkm.min_m = 1;
> _nkm.max_m = nkm->m.max ?: 1 << nkm->m.width;
>
> +
> + if (nkm->min_rate && rate < nkm->min_rate)
> + rate = nkm->min_rate;
> +
> + if (nkm->max_rate && rate > nkm->max_rate)
> + rate = nkm->max_rate;
> +
> ccu_nkm_find_best(parent_rate, rate, &_nkm, &nkm->common);
>
> spin_lock_irqsave(nkm->common.lock, flags);
> diff --git a/drivers/clk/sunxi-ng/ccu_nkm.h b/drivers/clk/sunxi-ng/ccu_nkm.h
> index c409212ee40e..358a9df6b6a0 100644
> --- a/drivers/clk/sunxi-ng/ccu_nkm.h
> +++ b/drivers/clk/sunxi-ng/ccu_nkm.h
> @@ -27,6 +27,8 @@ struct ccu_nkm {
> struct ccu_mux_internal mux;
>
> unsigned int fixed_post_div;
> + unsigned long min_rate;
> + unsigned long max_rate;
> unsigned long max_m_n_ratio;
> unsigned long min_parent_m_ratio;
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2024-02-21 10:39 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-05 15:22 [PATCH v2 0/6] Pinephone video out fixes (flipping between two frames) Frank Oltmanns
2024-02-05 15:22 ` Frank Oltmanns
2024-02-05 15:22 ` [PATCH v2 1/6] clk: sunxi-ng: nkm: Support constraints on m/n ratio and parent rate Frank Oltmanns
2024-02-05 15:22 ` Frank Oltmanns
2024-02-05 17:45 ` Jernej Škrabec
2024-02-05 17:45 ` Jernej Škrabec
2024-02-05 17:50 ` Frank Oltmanns
2024-02-05 17:50 ` Frank Oltmanns
2024-02-06 17:44 ` Jernej Škrabec
2024-02-06 17:44 ` Jernej Škrabec
2024-02-05 15:22 ` [PATCH v2 2/6] clk: sunxi-ng: a64: Add constraints on PLL-MIPI's n/m " Frank Oltmanns
2024-02-05 15:22 ` Frank Oltmanns
2024-02-06 17:48 ` Jernej Škrabec
2024-02-06 17:48 ` Jernej Škrabec
2024-02-05 15:22 ` [PATCH v2 3/6] clk: sunxi-ng: nkm: Support minimum and maximum rate Frank Oltmanns
2024-02-05 15:22 ` Frank Oltmanns
2024-02-05 17:56 ` Jernej Škrabec
2024-02-05 17:56 ` Jernej Škrabec
2024-02-05 20:34 ` Frank Oltmanns
2024-02-05 20:34 ` Frank Oltmanns
2024-02-06 17:51 ` Jernej Škrabec
2024-02-06 17:51 ` Jernej Škrabec
2024-02-08 12:16 ` Maxime Ripard
2024-02-08 12:16 ` Maxime Ripard
2024-02-18 8:29 ` Frank Oltmanns
2024-02-18 8:29 ` Frank Oltmanns
2024-02-22 10:26 ` Maxime Ripard
2024-02-22 10:26 ` Maxime Ripard
2024-02-21 10:38 ` Frank Oltmanns [this message]
2024-02-21 10:38 ` Frank Oltmanns
2024-02-22 10:28 ` Maxime Ripard
2024-02-22 10:28 ` Maxime Ripard
2024-02-05 15:22 ` [PATCH v2 4/6] clk: sunxi-ng: a64: Set minimum and maximum rate for PLL-MIPI Frank Oltmanns
2024-02-05 15:22 ` Frank Oltmanns
2024-02-05 17:57 ` Jernej Škrabec
2024-02-05 17:57 ` Jernej Škrabec
2024-02-05 15:22 ` [PATCH v2 5/6] drm/panel: st7703: Drive XBD599 panel at higher clock rate Frank Oltmanns
2024-02-05 15:22 ` Frank Oltmanns
2024-02-05 17:59 ` Jernej Škrabec
2024-02-05 17:59 ` Jernej Škrabec
2024-02-08 19:05 ` Maxime Ripard
2024-02-08 19:05 ` Maxime Ripard
2024-02-11 15:42 ` Frank Oltmanns
2024-02-11 15:42 ` Frank Oltmanns
2024-02-12 13:29 ` Frank Oltmanns
2024-02-12 13:29 ` Frank Oltmanns
2024-02-22 10:29 ` Maxime Ripard
2024-02-22 10:29 ` Maxime Ripard
2024-02-25 16:46 ` Frank Oltmanns
2024-02-25 16:46 ` Frank Oltmanns
2024-02-26 4:56 ` Icenowy Zheng
2024-02-26 4:56 ` Icenowy Zheng
2024-02-05 15:22 ` [PATCH v2 6/6] arm64: dts: allwinner: a64: Fix minimum GPU OPP rate Frank Oltmanns
2024-02-05 15:22 ` Frank Oltmanns
2024-02-05 15:54 ` [PATCH v2 0/6] Pinephone video out fixes (flipping between two frames) Ondřej Jirman
2024-02-05 15:54 ` Ondřej Jirman
2024-02-05 16:02 ` Ondřej Jirman
2024-02-05 16:02 ` Ondřej Jirman
2024-02-11 15:09 ` Frank Oltmanns
2024-02-11 15:09 ` Frank Oltmanns
2024-02-11 19:25 ` Ondřej Jirman
2024-02-11 19:25 ` Ondřej Jirman
2024-02-19 9:41 ` Frank Oltmanns
2024-02-19 9:41 ` Frank Oltmanns
2024-02-26 7:13 ` Frank Oltmanns
2024-02-26 7:13 ` Frank Oltmanns
2024-02-26 17:29 ` Jernej Škrabec
2024-02-26 17:29 ` Jernej Škrabec
2024-02-26 20:07 ` Erico Nunes
2024-02-26 20:07 ` Erico Nunes
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=8734tmhzkg.fsf@oltmanns.dev \
--to=frank@oltmanns.dev \
--cc=agx@sigxcpu.org \
--cc=airlied@gmail.com \
--cc=conor+dt@kernel.org \
--cc=daniel@ffwll.ch \
--cc=devicetree@vger.kernel.org \
--cc=diegor@tiscali.it \
--cc=dri-devel@lists.freedesktop.org \
--cc=jernej.skrabec@gmail.com \
--cc=kernel@puri.sm \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sunxi@lists.linux.dev \
--cc=maarten.lankhorst@linux.intel.com \
--cc=megi@xff.cz \
--cc=mripard@kernel.org \
--cc=mturquette@baylibre.com \
--cc=neil.armstrong@linaro.org \
--cc=quic_jesszhan@quicinc.com \
--cc=robh+dt@kernel.org \
--cc=sam@ravnborg.org \
--cc=samuel@sholland.org \
--cc=sboyd@kernel.org \
--cc=tzimmermann@suse.de \
--cc=wens@csie.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.