From: "Heiko Stübner" <heiko@sntech.de>
To: Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Philipp Zabel <p.zabel@pengutronix.de>,
Yao Zi <ziyao@disroot.org>
Cc: linux-clk@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org,
Celeste Liu <CoelacanthusHex@gmail.com>,
Yao Zi <ziyao@disroot.org>
Subject: Re: [PATCH 5/8] clk: rockchip: Add clock type GATE_NO_SET_RATE
Date: Wed, 02 Oct 2024 10:08:36 +0200 [thread overview]
Message-ID: <9365795.CDJkKcVGEf@diego> (raw)
In-Reply-To: <20241001042401.31903-7-ziyao@disroot.org>
Hi,
Am Dienstag, 1. Oktober 2024, 06:23:59 CEST schrieb Yao Zi:
> This clock type is similar to GATE, but doesn't allow rate setting,
> which presents on RK3528 platform.
this definitly needs more explanation in the commit message.
I.e. regular individual gates always set the CLK_SET_RATE_PARENT flag
because of course the gates themselfs cannot influence the rate.
But in general, I'm also not convinced yet. Yes if some driver tries to
change the rate on those, it may affect the parent rate, but that is also
true for the other individual gates.
So what makes aclk_emmc (as GATE_NO_SET_RATE) more special than
"hclk_emmc" (as regular GATE). [Same for the other clocks of course] .
So this either needs more explanation, or for the sake of simplicity
use regular GATE for now for those and we revisit when it becomes
necessary.
Heiko
> Signed-off-by: Yao Zi <ziyao@disroot.org>
> ---
> drivers/clk/rockchip/clk.c | 8 ++++++++
> drivers/clk/rockchip/clk.h | 14 ++++++++++++++
> 2 files changed, 22 insertions(+)
>
> diff --git a/drivers/clk/rockchip/clk.c b/drivers/clk/rockchip/clk.c
> index 73d2cbdc716b..7d233770e68b 100644
> --- a/drivers/clk/rockchip/clk.c
> +++ b/drivers/clk/rockchip/clk.c
> @@ -521,6 +521,14 @@ void rockchip_clk_register_branches(struct rockchip_clk_provider *ctx,
> case branch_gate:
> flags |= CLK_SET_RATE_PARENT;
>
> + clk = clk_register_gate(NULL, list->name,
> + list->parent_names[0], flags,
> + ctx->reg_base + list->gate_offset,
> + list->gate_shift, list->gate_flags, &ctx->lock);
> + break;
> + case branch_gate_no_set_rate:
> + flags &= ~CLK_SET_RATE_PARENT;
> +
> clk = clk_register_gate(NULL, list->name,
> list->parent_names[0], flags,
> ctx->reg_base + list->gate_offset,
> diff --git a/drivers/clk/rockchip/clk.h b/drivers/clk/rockchip/clk.h
> index 1efc5c3a1e77..360d16402fe5 100644
> --- a/drivers/clk/rockchip/clk.h
> +++ b/drivers/clk/rockchip/clk.h
> @@ -519,6 +519,7 @@ enum rockchip_clk_branch_type {
> branch_divider,
> branch_fraction_divider,
> branch_gate,
> + branch_gate_no_set_rate,
> branch_mmc,
> branch_inverter,
> branch_factor,
> @@ -844,6 +845,19 @@ struct rockchip_clk_branch {
> .gate_flags = gf, \
> }
>
> +#define GATE_NO_SET_RATE(_id, cname, pname, f, o, b, gf) \
> + { \
> + .id = _id, \
> + .branch_type = branch_gate_no_set_rate, \
> + .name = cname, \
> + .parent_names = (const char *[]){ pname }, \
> + .num_parents = 1, \
> + .flags = f, \
> + .gate_offset = o, \
> + .gate_shift = b, \
> + .gate_flags = gf, \
> + }
> +
> #define MMC(_id, cname, pname, offset, shift) \
> { \
> .id = _id, \
>
next prev parent reply other threads:[~2024-10-02 8:08 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-01 4:23 [PATCH 0/8] Support clock and reset unit of Rockchip RK3528 Yao Zi
2024-10-01 4:23 ` [PATCH 1/8] dt-bindings: clock: Add clock ID definition for " Yao Zi
2024-10-02 6:32 ` Krzysztof Kozlowski
2024-10-02 9:24 ` Yao Zi
2024-10-01 4:23 ` [PATCH 2/8] dt-bindings: reset: Add reset " Yao Zi
2024-10-01 16:29 ` Conor Dooley
2024-10-02 6:31 ` Krzysztof Kozlowski
2024-10-02 9:54 ` Yao Zi
2024-10-02 10:07 ` Heiko Stübner
2024-10-02 10:19 ` Yao Zi
2024-10-01 4:23 ` [PATCH 3/8] dt-bindings: clock: Add rockchip,rk3528-cru Yao Zi
2024-10-01 16:29 ` Conor Dooley
2024-10-01 21:18 ` Yao Zi
2024-10-02 8:49 ` Conor Dooley
2024-10-02 10:02 ` Yao Zi
2024-10-01 4:23 ` [PATCH 4/8] clk: rockchip: Add PLL flag ROCKCHIP_PLL_FIXED_MODE Yao Zi
2024-10-02 8:16 ` Heiko Stübner
2024-10-02 10:08 ` Yao Zi
2024-10-02 10:12 ` Heiko Stübner
2024-10-02 10:22 ` Yao Zi
2024-10-01 4:23 ` [PATCH 5/8] clk: rockchip: Add clock type GATE_NO_SET_RATE Yao Zi
2024-10-02 8:08 ` Heiko Stübner [this message]
2024-10-02 10:30 ` Yao Zi
2024-10-01 4:24 ` [PATCH 6/8] clk: rockchip: Add clock controller driver for RK3528 SoC Yao Zi
2024-10-02 10:21 ` Heiko Stübner
2024-10-02 10:38 ` Yao Zi
2024-10-01 4:38 ` [PATCH 7/8] arm64: dts: rockchip: Add clock generators " Yao Zi
2024-10-01 4:38 ` [PATCH 8/8] arm64: dts: rockchip: Add UART clocks " Yao Zi
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=9365795.CDJkKcVGEf@diego \
--to=heiko@sntech.de \
--cc=CoelacanthusHex@gmail.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=mturquette@baylibre.com \
--cc=p.zabel@pengutronix.de \
--cc=robh@kernel.org \
--cc=sboyd@kernel.org \
--cc=ziyao@disroot.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;
as well as URLs for NNTP newsgroup(s).