From: Claudiu Beznea <claudiu.beznea@tuxon.dev>
To: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: mailhol@kernel.org, robh@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, geert+renesas@glider.be,
magnus.damm@gmail.com, biju.das.jz@bp.renesas.com,
fabrizio.castro.jz@renesas.com, claudiu.beznea@tuxon.dev,
linux-can@vger.kernel.org, devicetree@vger.kernel.org,
linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org,
Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Subject: Re: [PATCH v4 3/7] can: rcar_canfd: Allow the CAN FD clock to be sourced from fck
Date: Fri, 16 Oct 2026 21:07:07 +0300 [thread overview]
Message-ID: <69826962-0c21-4616-9cd8-6eb0478a422b@tuxon.dev> (raw)
In-Reply-To: <20261016-durable-meticulous-owl-7a9eed-mkl@pengutronix.de>
On 10/16/26 16:39, Marc Kleine-Budde wrote:
> On 02.09.2026 17:15:40, Claudiu Beznea wrote:
>> diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c
>> index b7c4fe3477ac..f9173774387f 100644
>> --- a/drivers/net/can/rcar/rcar_canfd.c
>> +++ b/drivers/net/can/rcar/rcar_canfd.c
>
> [...]
>
>>
>> /* Helper functions */
>> @@ -2190,13 +2196,20 @@ static int rcar_canfd_probe(struct platform_device *pdev)
>> */
>> gpriv->can_clk = devm_clk_get(dev, "can_clk");
>> if (IS_ERR(gpriv->can_clk) || (clk_get_rate(gpriv->can_clk) == 0)) {
> ^^^^^^^^^^^^^^^^^^^^^
>
> As sashiko.dev [1] pointed out here's no check for -EPROBE_DEFER.
This looks to me a pre-existing issue.
The newly added support does:
fcan_freq = clk_get_rate(gpriv->clkp);
At the time this is executed the clkp was already checked against any errors
(above) including -EPROBE_DEFER.
Please let me know what is the procedure now. Should I re-send the series and
address the fixes? Should I send follow up patches?
>
> [1] https://lore.kernel.org/all/sashiko-outbox-173569@kernel.org/
>
> The netdev bot found more issues.
> pw-bot: cr
>
> regards,
> Marc
>
> --- Patch [15]: [PATCH net-next 15/37] can: rcar_canfd: Allow the CAN FD clock to be sourced from fck ---
> commit 4ef0042ccf34457229cdde398a008bebaab54e69
> Author: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
>
> can: rcar_canfd: Allow the CAN FD clock to be sourced from fck
>
> This commit adds an fcan_pclk hardware info flag. With it set, the fCAN
> clock falls back to the peripheral clock (fck) when the external can_clk
> is unavailable, the rate is divided by info->postdiv and can_clk is set
> to NULL. All existing rcar_canfd_hw_info instances now set fcan_pclk = 0
> explicitly.
>
> Link: https://lore.kernel.org/all/1d9719e3-10ff-4cd8-b729-55fea93c37ce@wanadoo.fr
> Link: https://patch.msgid.link/20260902141544.565763-4-claudiu.beznea+renesas@tuxon.dev
>
>> diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c
>> index b7c4fe3477ac..f9173774387f 100644
>> --- a/drivers/net/can/rcar/rcar_canfd.c
>> +++ b/drivers/net/can/rcar/rcar_canfd.c
>
> [ ... ]
>
>> @@ -2190,13 +2196,20 @@ static int rcar_canfd_probe(struct platform_device *pdev)
>> */
>> gpriv->can_clk = devm_clk_get(dev, "can_clk");
>> if (IS_ERR(gpriv->can_clk) || (clk_get_rate(gpriv->can_clk) == 0)) {
>> - gpriv->can_clk = devm_clk_get(dev, "canfd");
>> - if (IS_ERR(gpriv->can_clk))
>> - return dev_err_probe(dev, PTR_ERR(gpriv->can_clk),
>> - "cannot get canfd clock\n");
>> + if (info->fcan_pclk) {
>> + fcan_freq = clk_get_rate(gpriv->clkp);
>> + gpriv->can_clk = NULL;
>> + } else {
>
> Discovered by: opus-5-5 · Missed by: gpt-6-astra, sashiko-gemini · Confirmed by: gpt-6-astra
> Should the clock comments and the probe banner be updated for this new
> fck source?
> Several places still describe only the external and canfd
> clocks.
>
> The comment just above this block in rcar_canfd_probe() still says:
>
> /* fCAN clock: Pick External clock. If not available fallback to
> * CANFD clock
> */
>
> With fcan_pclk set, the fallback is fck (gpriv->clkp), not the canfd
> clock.
We can update the comment as follows to comply with the clock name in the driver:
/* fCAN clock: Pick External clock. If not available fallback to
* CANFD clock or peripheral clock in case fcan_pclk = 1
*/
or, to comply with the clock name in the bindings:
/* fCAN clock: Pick External clock. If not available fallback to
* CANFD clock or fck in case fcan_pclk = 1
*/
Please let me know what is prefered.
>
> In struct rcar_canfd_global, the field comments also don't cover this
> case. Here can_clk is NULL and the fCAN source is clkp:
>
> struct clk *can_clk; /* fCAN clock */
> ...
> bool extclk; /* CANFD or Ext clock */
There is already a pointer covering the clkp:
struct clk *clkp; /* Peripheral clock */
>
> The banner at the end of rcar_canfd_probe() wasn't changed either:
>
> dev_info(dev, "global operational state (%s clk, %s mode)\n",
> gpriv->extclk ? "ext" : "canfd",
>
> On this path extclk stays false. Won't the banner then say "canfd clk"
> for a controller that has no canfd clock and runs from fck / postdiv?
That could be updated with "clkp" to comply with the driver name or "fck" to
comply with the bindings or with "peripheral". Please let me know what is
preferred.
>
> The later "can: rcar_canfd: Add support for Renesas RZ/G3S" patch sets
> .fcan_pclk = 1 in r9a08g045_hw_info. After that, an RZ/G3S board whose
> can_clk is missing or has a rate of 0 would print this label.
>
> Also, the new bitfield comment calls this clock pclk:
>
> unsigned fcan_pclk:1; /* Has fcan sourced from pclk. */
>
> The commit message and the code call it fck.
The commit message mentions: ...the CAN FD clock can be sourced either from fck
(the peripheral clock) or from an external clock (can_clk).
The driver uses clkp (peripheral clock) to refer to the fck.
fck is the clock name used in the bindings. In bindings I kept the same clock
name and provided the proper phandle in the device tree. I don't consider we
should change the driver and the bindings for this thing. Please let me know
otherwise.
The clock diagram is something like:
+----+
pclk (fck) -> 1/2 div ->| |
| mux|---> fcan
ext (can_clk)--------->| |
++++++
b/w () are the clock names in bindings.
The full HW block with the clocks involved can be found at
https://github.com/claudiubeznea/logs/blob/master/canfd-clk.png
Please let me know what is the procedure for this. Should I re-spin the series?
Should I send follow up patches?
Thank you,
Claudiu
next prev parent reply other threads:[~2026-10-16 18:07 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-02 14:15 [PATCH v4 0/7] can: rcar_canfd: Add support for Renesas RZ/G3S Claudiu Beznea
2026-09-02 14:15 ` [PATCH v4 1/7] dt-bindings: can: renesas,rcar-canfd: Document RZ/G3S SoC Claudiu Beznea
2026-10-16 13:34 ` Marc Kleine-Budde
2026-09-02 14:15 ` [PATCH v4 2/7] can: rcar_canfd: Fix typos in macro names Claudiu Beznea
2026-09-02 14:15 ` [PATCH v4 3/7] can: rcar_canfd: Allow the CAN FD clock to be sourced from fck Claudiu Beznea
2026-10-16 13:39 ` Marc Kleine-Budde
2026-10-16 18:07 ` Claudiu Beznea [this message]
2026-09-02 14:15 ` [PATCH v4 4/7] can: rcar_canfd: Do not set registers selecting the CAN mode Claudiu Beznea
2026-09-02 14:15 ` [PATCH v4 5/7] can: rcar_canfd: Add support for Renesas RZ/G3S Claudiu Beznea
2026-09-02 14:15 ` [PATCH v4 6/7] arm64: dts: renesas: r9a08g045: Add CAN-FD node Claudiu Beznea
2026-09-02 14:15 ` [PATCH v4 7/7] arm64: dts: renesas: rzg3s-smarc: Enable CAN-FD Claudiu Beznea
2026-09-29 14:19 ` [PATCH v4 0/7] can: rcar_canfd: Add support for Renesas RZ/G3S Marc Kleine-Budde
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=69826962-0c21-4616-9cd8-6eb0478a422b@tuxon.dev \
--to=claudiu.beznea@tuxon.dev \
--cc=biju.das.jz@bp.renesas.com \
--cc=claudiu.beznea.uj@bp.renesas.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=fabrizio.castro.jz@renesas.com \
--cc=geert+renesas@glider.be \
--cc=krzk+dt@kernel.org \
--cc=linux-can@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=mailhol@kernel.org \
--cc=mkl@pengutronix.de \
--cc=robh@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®