All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tom Rini <trini@konsulko.com>
To: Markus Schneider-Pargmann <msp@baylibre.com>,
	Heinrich Schuchardt <xypron.glpk@gmx.de>
Cc: Lukasz Majewski <lukma@denx.de>, u-boot@lists.u-boot-project.org
Subject: Re: [PATCH] clk: clk-uclass: Ignore -ENOSYS in clk_set_default_rates()
Date: Wed, 16 Sep 2026 16:12:32 -0600	[thread overview]
Message-ID: <20260916221232.GA1252689@bill-the-cat> (raw)
In-Reply-To: <DKZT0Q2WT6PI.3FVNAODF3C3MM@baylibre.com>

[-- Attachment #1: Type: text/plain, Size: 3230 bytes --]

On Thu, Aug 27, 2026 at 04:43:06PM +0200, Markus Schneider-Pargmann wrote:
> Hi Heinrich,
> 
> On Thu Aug 27, 2026 at 2:49 PM CEST, Heinrich Schuchardt wrote:
> > On 8/27/26 14:36, Markus Schneider-Pargmann (TI) wrote:
> >> clk_set_default_parents() already ignores -ENOSYS from clk_set_parent().
> >> Do the same for clk_set_default_rates() and rely on the earlier setup
> >> clock rates.
> >> 
> >> On am437x the cpsw switch has assigned-clock-rates for the RGMII clock.
> >> The divider delegates to a multiplier of the DPLL that has no set_rate
> >> and no delegation, so it returns -ENOSYS.
> >> 
> >> Signed-off-by: Markus Schneider-Pargmann (TI) <msp@baylibre.com>
> >> ---
> >>   drivers/clk/clk-uclass.c | 9 +++++++++
> >>   1 file changed, 9 insertions(+)
> >> 
> >> diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
> >> index c33f415917e9..0069ce9a8875 100644
> >> --- a/drivers/clk/clk-uclass.c
> >> +++ b/drivers/clk/clk-uclass.c
> >> @@ -359,6 +359,15 @@ static int clk_set_default_rates(struct udevice *dev,
> >>   
> >>   		ret = clk_set_rate(c, rates[index]);
> >>   
> >> +		/*
> >> +		 * Not all drivers/clocks support setting the rate (as of now).
> >> +		 * Ignore that and keep the rate set by an earlier boot stage.
> >> +		 */
> >> +		if (ret == -ENOSYS) {
> >
> > In include struct clk_ops is incompletely documented.
> >
> > It is undefined which error code might indicate what.
> > This might be handled differently in different drivers.
> 
> Thanks for your feedback! This patch is more about handling what
> clk_set_rate() returns than what the clk drivers return in set_rate().
> clk_set_rate() itself has a check if CLK_SET_RATE_PARENT is unset and
> returns -ENOSYS otherwise if it couldn't find a suitable set_rate:
> 
> 	/* Try to find parents which can set rate */
> 	while (!ops->set_rate) {
> 		...
> 		if (!(clkp->flags & CLK_SET_RATE_PARENT))
> 			return -ENOSYS;
> 		...
> 	}
> 
> >
> > E.g. zynq_clk_set_rate() returns ENXIO if there is no set rate 
> > functionality.
> >
> > Please, complete the description of struct clk_ops, check what all clock 
> > drivers do, and harmonize the return codes before adding this change.
> >
> > The struct clk_ops documentation should explicitly mention how error 
> > codes are handled by the uclass.
> 
> set_rate is also already documented in clk-uclass.h:
> 
>   /**
>    * set_rate() - Set current clock rate.
>    * @clk:	The clock to manipulate.
>    * @rate:	New clock rate in Hz.
>    ...
>    * Return:
>    * * The new rate on success
>    * * -%ENOSYS if this function is not implemented for @clk
>    * * -%ENOENT if @clk->id is invalid. Prefer using an assert instead, and doing
>    *   this check in request().
>    * * -%EINVAL if @rate is not valid for @clk.
>    * * Another negative error value (such as %EIO or %ECOMM) if the rate could
>    *   not be set due to a bus error.
>    */
>   ulong set_rate(struct clk *clk, ulong rate);

Does this answer your concerns / questions, Heinrich? I believe this
patch is required for another series, which is in turn required to move
the am43xx platforms to OF_UPSTREAM. Thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

      reply	other threads:[~2026-09-16 22:12 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-27 12:36 [PATCH] clk: clk-uclass: Ignore -ENOSYS in clk_set_default_rates() Markus Schneider-Pargmann (TI)
2026-08-27 12:49 ` Heinrich Schuchardt
2026-08-27 14:43   ` Markus Schneider-Pargmann
2026-09-16 22:12     ` Tom Rini [this message]

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=20260916221232.GA1252689@bill-the-cat \
    --to=trini@konsulko.com \
    --cc=lukma@denx.de \
    --cc=msp@baylibre.com \
    --cc=u-boot@lists.u-boot-project.org \
    --cc=xypron.glpk@gmx.de \
    /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.