From: Frank Oltmanns <frank@oltmanns.dev>
To: "Jernej Škrabec" <jernej.skrabec@gmail.com>
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>,
"Maxime Ripard" <mripard@kernel.org>,
"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 1/6] clk: sunxi-ng: nkm: Support constraints on m/n ratio and parent rate
Date: Mon, 05 Feb 2024 18:50:27 +0100 [thread overview]
Message-ID: <87il32ztp8.fsf@oltmanns.dev> (raw)
In-Reply-To: <2717565.mvXUDI8C0e@jernej-laptop>
Hi Jernej,
On 2024-02-05 at 18:45:27 +0100, Jernej Škrabec <jernej.skrabec@gmail.com> wrote:
> Dne ponedeljek, 05. februar 2024 ob 16:22:24 CET je Frank Oltmanns napisal(a):
>> The Allwinner A64 manual lists the following constraints for the
>> PLL-MIPI clock:
>> - M/N <= 3
>> - (PLL_VIDEO0)/M >= 24MHz
>>
>> The PLL-MIPI clock is implemented as ccu_nkm. Therefore, add support for
>> these constraints.
>>
>> Signed-off-by: Frank Oltmanns <frank@oltmanns.dev>
>
> Haven't we discussed that this patch is unnecessary because same effect can
> be reached by limiting minimum frequency?
The patch for ccu_nm was unnecessary:
https://lore.kernel.org/all/87jzoug2jz.fsf@oltmanns.dev/
Unfortunately, we still need this one.
Best regards,
Frank
>
> Best regards,
> Jernej
>
>> ---
>> drivers/clk/sunxi-ng/ccu_nkm.c | 21 +++++++++++++++++++++
>> drivers/clk/sunxi-ng/ccu_nkm.h | 2 ++
>> 2 files changed, 23 insertions(+)
>>
>> diff --git a/drivers/clk/sunxi-ng/ccu_nkm.c b/drivers/clk/sunxi-ng/ccu_nkm.c
>> index 853f84398e2b..1168d894d636 100644
>> --- a/drivers/clk/sunxi-ng/ccu_nkm.c
>> +++ b/drivers/clk/sunxi-ng/ccu_nkm.c
>> @@ -16,6 +16,20 @@ struct _ccu_nkm {
>> unsigned long m, min_m, max_m;
>> };
>>
>> +static bool ccu_nkm_is_valid_rate(struct ccu_common *common, unsigned long parent,
>> + unsigned long n, unsigned long m)
>> +{
>> + struct ccu_nkm *nkm = container_of(common, struct ccu_nkm, common);
>> +
>> + if (nkm->max_m_n_ratio && (m > nkm->max_m_n_ratio * n))
>> + return false;
>> +
>> + if (nkm->min_parent_m_ratio && (parent < nkm->min_parent_m_ratio * m))
>> + return false;
>> +
>> + return true;
>> +}
>> +
>> static unsigned long ccu_nkm_find_best_with_parent_adj(struct ccu_common *common,
>> struct clk_hw *parent_hw,
>> unsigned long *parent, unsigned long rate,
>> @@ -31,6 +45,10 @@ static unsigned long ccu_nkm_find_best_with_parent_adj(struct ccu_common *common
>> unsigned long tmp_rate, tmp_parent;
>>
>> tmp_parent = clk_hw_round_rate(parent_hw, rate * _m / (_n * _k));
>> +
>> + if (!ccu_nkm_is_valid_rate(common, tmp_parent, _n, _m))
>> + continue;
>> +
>> tmp_rate = tmp_parent * _n * _k / _m;
>>
>> if (ccu_is_better_rate(common, rate, tmp_rate, best_rate) ||
>> @@ -64,6 +82,9 @@ static unsigned long ccu_nkm_find_best(unsigned long parent, unsigned long rate,
>> for (_k = nkm->min_k; _k <= nkm->max_k; _k++) {
>> for (_n = nkm->min_n; _n <= nkm->max_n; _n++) {
>> for (_m = nkm->min_m; _m <= nkm->max_m; _m++) {
>> + if (!ccu_nkm_is_valid_rate(common, parent, _n, _m))
>> + continue;
>> +
>> unsigned long tmp_rate;
>>
>> tmp_rate = parent * _n * _k / _m;
>> diff --git a/drivers/clk/sunxi-ng/ccu_nkm.h b/drivers/clk/sunxi-ng/ccu_nkm.h
>> index 6601defb3f38..c409212ee40e 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 max_m_n_ratio;
>> + unsigned long min_parent_m_ratio;
>>
>> struct ccu_common common;
>> };
>>
>>
WARNING: multiple messages have this Message-ID (diff)
From: Frank Oltmanns <frank@oltmanns.dev>
To: "Jernej Škrabec" <jernej.skrabec@gmail.com>
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>,
"Maxime Ripard" <mripard@kernel.org>,
"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 1/6] clk: sunxi-ng: nkm: Support constraints on m/n ratio and parent rate
Date: Mon, 05 Feb 2024 18:50:27 +0100 [thread overview]
Message-ID: <87il32ztp8.fsf@oltmanns.dev> (raw)
In-Reply-To: <2717565.mvXUDI8C0e@jernej-laptop>
Hi Jernej,
On 2024-02-05 at 18:45:27 +0100, Jernej Škrabec <jernej.skrabec@gmail.com> wrote:
> Dne ponedeljek, 05. februar 2024 ob 16:22:24 CET je Frank Oltmanns napisal(a):
>> The Allwinner A64 manual lists the following constraints for the
>> PLL-MIPI clock:
>> - M/N <= 3
>> - (PLL_VIDEO0)/M >= 24MHz
>>
>> The PLL-MIPI clock is implemented as ccu_nkm. Therefore, add support for
>> these constraints.
>>
>> Signed-off-by: Frank Oltmanns <frank@oltmanns.dev>
>
> Haven't we discussed that this patch is unnecessary because same effect can
> be reached by limiting minimum frequency?
The patch for ccu_nm was unnecessary:
https://lore.kernel.org/all/87jzoug2jz.fsf@oltmanns.dev/
Unfortunately, we still need this one.
Best regards,
Frank
>
> Best regards,
> Jernej
>
>> ---
>> drivers/clk/sunxi-ng/ccu_nkm.c | 21 +++++++++++++++++++++
>> drivers/clk/sunxi-ng/ccu_nkm.h | 2 ++
>> 2 files changed, 23 insertions(+)
>>
>> diff --git a/drivers/clk/sunxi-ng/ccu_nkm.c b/drivers/clk/sunxi-ng/ccu_nkm.c
>> index 853f84398e2b..1168d894d636 100644
>> --- a/drivers/clk/sunxi-ng/ccu_nkm.c
>> +++ b/drivers/clk/sunxi-ng/ccu_nkm.c
>> @@ -16,6 +16,20 @@ struct _ccu_nkm {
>> unsigned long m, min_m, max_m;
>> };
>>
>> +static bool ccu_nkm_is_valid_rate(struct ccu_common *common, unsigned long parent,
>> + unsigned long n, unsigned long m)
>> +{
>> + struct ccu_nkm *nkm = container_of(common, struct ccu_nkm, common);
>> +
>> + if (nkm->max_m_n_ratio && (m > nkm->max_m_n_ratio * n))
>> + return false;
>> +
>> + if (nkm->min_parent_m_ratio && (parent < nkm->min_parent_m_ratio * m))
>> + return false;
>> +
>> + return true;
>> +}
>> +
>> static unsigned long ccu_nkm_find_best_with_parent_adj(struct ccu_common *common,
>> struct clk_hw *parent_hw,
>> unsigned long *parent, unsigned long rate,
>> @@ -31,6 +45,10 @@ static unsigned long ccu_nkm_find_best_with_parent_adj(struct ccu_common *common
>> unsigned long tmp_rate, tmp_parent;
>>
>> tmp_parent = clk_hw_round_rate(parent_hw, rate * _m / (_n * _k));
>> +
>> + if (!ccu_nkm_is_valid_rate(common, tmp_parent, _n, _m))
>> + continue;
>> +
>> tmp_rate = tmp_parent * _n * _k / _m;
>>
>> if (ccu_is_better_rate(common, rate, tmp_rate, best_rate) ||
>> @@ -64,6 +82,9 @@ static unsigned long ccu_nkm_find_best(unsigned long parent, unsigned long rate,
>> for (_k = nkm->min_k; _k <= nkm->max_k; _k++) {
>> for (_n = nkm->min_n; _n <= nkm->max_n; _n++) {
>> for (_m = nkm->min_m; _m <= nkm->max_m; _m++) {
>> + if (!ccu_nkm_is_valid_rate(common, parent, _n, _m))
>> + continue;
>> +
>> unsigned long tmp_rate;
>>
>> tmp_rate = parent * _n * _k / _m;
>> diff --git a/drivers/clk/sunxi-ng/ccu_nkm.h b/drivers/clk/sunxi-ng/ccu_nkm.h
>> index 6601defb3f38..c409212ee40e 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 max_m_n_ratio;
>> + unsigned long min_parent_m_ratio;
>>
>> struct ccu_common common;
>> };
>>
>>
_______________________________________________
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-05 17:50 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 [this message]
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
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=87il32ztp8.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=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.