From: Vyacheslav Yurkov <uvv.mail@gmail.com>
To: Conor Dooley <conor@kernel.org>
Cc: Rob Herring <robh@kernel.org>,
Vyacheslav Yurkov <V.Yurkov.EXT@bruker.com>,
Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH 2/2] dt-bindings: Add clock guard DT description
Date: Thu, 26 Mar 2026 10:54:52 +0100 [thread overview]
Message-ID: <d097826c-3db5-4902-acee-ffcff7436d4e@gmail.com> (raw)
In-Reply-To: <20260323-sanctuary-semantic-432089feb1c7@spud>
On 23.03.2026 21:14, Conor Dooley wrote:
>
> The binding you've got says "GPIOs used to control or guard the clocks",
> which is not what you're saying that is going on in this mail. A more
> suitable description would be "GPIOs used to check the status of the
> clocks".
Agree, the description I provided is not very accurate.
> I want to see an example dts user for this please.
DTS example:
clock_guard: clock_controller_guard {
compatible = "clock-controller-guard";
#clock-cells = <1>;
clocks = <&h2f_clk 0>, <&clk_fgpa_rx 0>, <clk_fpga_tx 0>;
clock-names = "h2f_clk0", "clk_fpga_rx", "clk_fpga_tx";
gpios = <&fpga_ip 0 GPIO_ACTIVE_HIGH>, <&fpga_ip 1 GPIO_ACTIVE_HIGH>;
gpio-names = "gpio-input0", "gpio-input1";
clock-output-names = "clkctrl-guard";
};
custom_device {
compatible = "...";
...
#clock-cells = <1>;
clocks = <&clock_guard 0>;
clock-names = "clock-guard";
};
The driver usage exaple:
clk = devm_clk_get(dev, "clock-guard");
if (IS_ERR(clk))
return dev_err_probe(dev, PTR_ERR(clk), "failed to get clock\n");
ret = clk_prepare_enable(clk);
if (ret) {
dev_warn(dev, "Clock is not ready, %d\n", ret);
return -EPROBE_DEFER;
}
> TBH, I don't understand your driver implementation either and why it has
>
> +static const struct clk_ops clkctrl_guard_ops = {
>
> + .enable = clkctrl_guard_enable,
> + .disable = clkctrl_guard_disable,
> + .prepare = clkctrl_guard_prepare,
> + .unprepare = clkctrl_guard_unprepare,
> + .is_prepared = clkctrl_guard_is_prepared,
>
> any of these 4 implemented when you have no control over the clock.
> I didn't think it was required to call your parent clocks enables in
> your own enable either, thought that was handled by the core recursively
> calling clk_enable() on clk->parent. The one thing I would expect you to
> have implemented ops wise is is_enabled, which you don't have.
> Also no sign of any rate acquisition functions, which I thought were
> mandatory.
>
> + .get_parent = clkctrl_guard_get_parent,
> +};
Good point on .is_enabled, I indeed missed that. As for the rate
acquisition functions I referred to this table
https://docs.kernel.org/driver-api/clk.html#id4 , and it see that
.set_rate is actually optional.
next prev parent reply other threads:[~2026-03-26 9:54 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-18 17:43 [PATCH 0/2] A proposal to add a virtual clock controller guard Vyacheslav Yurkov
2026-03-18 17:43 ` Vyacheslav Yurkov via B4 Relay
2026-03-18 17:43 ` [PATCH 1/2] clk: Add " Vyacheslav Yurkov
2026-03-18 17:43 ` Vyacheslav Yurkov via B4 Relay
2026-03-19 8:15 ` kernel test robot
2026-03-18 17:43 ` [PATCH 2/2] dt-bindings: Add clock guard DT description Vyacheslav Yurkov
2026-03-18 17:43 ` Vyacheslav Yurkov via B4 Relay
2026-03-18 19:33 ` Rob Herring (Arm)
2026-03-18 22:55 ` Rob Herring
2026-03-19 5:50 ` Vyacheslav Yurkov
2026-03-19 16:50 ` Conor Dooley
2026-03-23 13:52 ` Vyacheslav Yurkov
2026-03-23 20:14 ` Conor Dooley
2026-03-26 9:54 ` Vyacheslav Yurkov [this message]
2026-03-26 10:08 ` Krzysztof Kozlowski
2026-03-26 13:39 ` Vyacheslav Yurkov
2026-03-26 13:49 ` Krzysztof Kozlowski
2026-03-26 18:32 ` Conor Dooley
2026-03-28 2:58 ` Vyacheslav Yurkov
2026-04-07 16:17 ` Conor Dooley
2026-03-26 10:44 ` Conor Dooley
2026-04-20 17:56 ` Vyacheslav Yurkov
2026-04-21 17:28 ` Conor Dooley
2026-04-28 10:13 ` Vyacheslav Yurkov
2026-05-09 18:22 ` Conor Dooley
-- strict thread matches above, loose matches on Subject: below --
2026-03-19 13:20 kernel test robot
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=d097826c-3db5-4902-acee-ffcff7436d4e@gmail.com \
--to=uvv.mail@gmail.com \
--cc=V.Yurkov.EXT@bruker.com \
--cc=conor+dt@kernel.org \
--cc=conor@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=robh@kernel.org \
--cc=sboyd@kernel.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.