linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC,PATCH 1/7] arm: add a common struct clk
Date: Fri, 8 Jan 2010 11:18:31 +0000	[thread overview]
Message-ID: <20100108111831.GA25082@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1262944873.585.17.camel@pasglop>

On Fri, Jan 08, 2010 at 09:01:13PM +1100, Benjamin Herrenschmidt wrote:
> On Fri, 2010-01-08 at 09:42 +0000, Russell King - ARM Linux wrote:
> > What is clear from the clk API as implemented today is that what's
> > right
> > for one platform isn't right for another platform.  That's why we have
> > each platform implementing struct clk in their own way. 
> 
> Such platforms would just not set CONFIG_HAVE_COMMON_STRUCT_CLK then.
> 
> I think what Jeremy is trying to achieve is a way for platforms that
> which to use the device-tree to retrieve the clock binding to be able to
> chose to do so, using as much common code as possible.

The contents of struct clk has nothing to do with binding though.
The binding of struct clk to devices is totally separate to the actual
contents of struct clk - and it has to be to cope with clocks being
shared between different devices.  So your statement makes no sense.

The binding issue is all about how you go from a driver wanting its
clocks to a representation of that clock which the code can deal with.
That's basically clk_get(), and we currently have that covered both by
both clkdev, and by simpler implementations in some platforms.

What a device-tree based implementation would have to do is provide its
own version of clk_get() and clk_put() - it shouldn't care about the
contents of the struct clk that it's returning at all.

> The problem with the more "static" variants of struct clk is that while
> they are probably fine for a single SoC with a reasonably unified clock
> mechanism, having more than one clock source programmed differently and
> wanting to deal with potentially out-of-SoC clock links between devices
> becomes quickly prohibitive without function pointers.

The "clock source programmed differently" argument I don't buy.  OMAP has
the most complicated clock setup there is on the planet - with lots of
on-chip PLLs, muxes, dividers and switches, all in a heirarchy, and it
seems to cope, propagating changes up and down the tree.

The out-of-SoC problem is something that the clk API doesn't address,
and it remains difficult to address all the time that SoCs can do their
own thing - I'll cover that below.

You really would not want the weight of the OMAP implementation on
something like Versatile.

Now we come to another problem: Versatile is one of the relatively simple
implementations.  It's not a "real" platform in the sense that it's a
development board with a fairly fixed clock relationship - most clocks
are fixed, only some are variable.  It only represents the simple SoCs
like PXA, where the only real control you have is being able to turn
clocks on and off. Apart from the LCD clock, there's not much other
control there.

Modern SoCs are far more complex beasts, with PLLs, dividers, muxes
and so forth - both Samsung S3C and TI OMAP SoCs are good examples of
these.

Basically, there are three classes when it comes to SoC clocks:

1. damned simple, no control what so ever, just need rate info maybe
   for one or two clocks, eg SA1100, LH7A40x, NETX.
2. fixed set of clocks, where the clocks can be turned on/off to
   logical sections of the CPU - eg, PXA, W90X900 etc.
3. complex setups which have a tree of clocks, with muxes, dividers,
   plls etc (Samsung, OMAP).

Trying to get a generic implementation which only addresses some of
those classes is, I believe, very misguided.  Maybe instead we should
be aiming for two or three "common" implementations rather than trying
for a one-size-fits-only-a-small-subset approach?

I don't buy the "don't use it on those platforms then" argument -
because that means not using it on the platforms which are the likely
places people brought up the concerns on - the PXA/Samsung/OMAP types
of platforms.

  reply	other threads:[~2010-01-08 11:18 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-07 23:44 [RFC,PATCH 1/7] arm: add a common struct clk Jeremy Kerr
2010-01-07 23:44 ` [RFC,PATCH 3/7] arm/versatile: use generic " Jeremy Kerr
2010-01-07 23:44 ` [RFC, PATCH 6/7] arm/icst307: use common struct clk, unify realview and versatile clocks Jeremy Kerr
2010-01-08  1:11   ` H Hartley Sweeten
2010-01-08  1:35     ` Jeremy Kerr
2010-01-07 23:44 ` [RFC,PATCH 4/7] arm/versatile: remove oscoff from clk_versatile Jeremy Kerr
2010-01-07 23:44 ` [RFC,PATCH 2/7] arm: generic support for fixed-rate clocks Jeremy Kerr
2010-01-07 23:44 ` [RFC,PATCH 7/7] arm/icst307: remove icst307_ps_to_vco Jeremy Kerr
2010-01-07 23:44 ` [RFC,PATCH 5/7] arm/realview: use generic struct clk Jeremy Kerr
2010-01-08  0:30 ` [RFC,PATCH 1/7] arm: add a common " H Hartley Sweeten
2010-01-08  1:20   ` Jeremy Kerr
2010-01-08  3:26     ` Jeremy Kerr
2010-01-08  9:42       ` Russell King - ARM Linux
2010-01-08 10:01         ` Benjamin Herrenschmidt
2010-01-08 11:18           ` Russell King - ARM Linux [this message]
2010-01-08 11:45             ` Benjamin Herrenschmidt
2010-01-08 12:59               ` Russell King - ARM Linux
2010-01-08 19:45                 ` Benjamin Herrenschmidt
2010-01-11  3:37         ` Jeremy Kerr
2010-01-12  8:00           ` Francesco VIRLINZI
2010-01-12  8:50             ` Benjamin Herrenschmidt
2010-01-08 16:25       ` H Hartley Sweeten
2010-01-08 19:33         ` Benjamin Herrenschmidt
2010-01-08  1:17 ` Benjamin Herrenschmidt
2010-01-08  1:38   ` Jeremy Kerr
2010-01-11  5:38     ` Jeremy Kerr
2010-01-11 10:46       ` Mark Brown
2010-01-11 19:48         ` Benjamin Herrenschmidt

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=20100108111831.GA25082@n2100.arm.linux.org.uk \
    --to=linux@arm.linux.org.uk \
    --cc=linux-arm-kernel@lists.infradead.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).