From: Thierry Reding <thierry.reding@gmail.com>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [linux-sunxi] Re: [PATCH 4/4] simplefb: add clock handling code
Date: Mon, 29 Sep 2014 09:29:58 +0000 [thread overview]
Message-ID: <20140929092956.GA26008@ulmo> (raw)
In-Reply-To: <CAMuHMdU0_GjbOjVE9Vnp703TnsdmkN-nxCxrigCWO7RPMzPRyw@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 5016 bytes --]
On Mon, Sep 29, 2014 at 11:10:53AM +0200, Geert Uytterhoeven wrote:
> Hi Thierry,
>
> On Mon, Sep 29, 2014 at 10:54 AM, Thierry Reding
> <thierry.reding@gmail.com> wrote:
> > On Mon, Sep 29, 2014 at 10:27:41AM +0200, Geert Uytterhoeven wrote:
> >> (CC linux-pm, as PM is the real reason behind disabling unused clocks)
> >> (CC gregkh and lkml, for driver core)
> >>
> >> On Mon, Sep 29, 2014 at 10:06 AM, Thierry Reding
> >> <thierry.reding@gmail.com> wrote:
> >> > If we start extending the binding with board-level details we end up
> >> > duplicating the device tree node for the proper video device. Also note
> >> > that it won't stop at clocks. Other setups will require regulators to be
> >> > listed in this device tree node as well so that they don't get disabled
> >> > at late_initcall. And the regulator bindings don't provide a method to
> >> > list an arbitrary number of clocks in a single property in the way that
> >> > the clocks property works.
> >>
> >> Then (optional) regulator support needs to be added.
> >
> > Can you elaborate?
>
> I'm not so familiar with regulators, but I guess it's similar to clocks?
The bindings are different. Essentially what you use is a *-supply
property per regulator. There is no way to specify more than one
regulator in a single property.
So if you want to keep that generic you have to do crazy things like:
simplefb {
enable-0-supply = <®1>;
enable-1-supply = <®2>;
...
};
I suppose a more generic supplies property could be created to support
this use-case, but I think this kind of proves my point. The only way
that the original proposal is going to work for other resources is if
they follow the same kind of binding. I don't think it makes sense to
introduce such a prerequisite merely because it would make life easy
for some exotic driver with a very specific application.
> > And then all of a sudden something that was supposed to be simple and
> > generic needs to know the specifics of some hardware device.
>
> And suddenly we wish we could write a real driver and put the stuff in
> the DTS, not DTB...
Oh, there's no doubt a real driver would be preferrable. Note that
simplefb is only meant to be a shim to pass a framebuffer from firmware
to kernel. In some cases it can be used with longer lifetime, like for
example if you really want to have graphical output but the real driver
isn't there yet.
Being a shim driver is precisely the reason why I think the binding
shouldn't be extended to cover all possible types of resources. That
should all go into the binding for the real device.
> >> > The only reasonable thing for simplefb to do is not deal with any kind
> >> > of resource at all (except perhaps area that contains the framebuffer
> >> > memory).
> >> >
> >> > So how about instead of requiring resources to be explicitly claimed we
> >> > introduce something like the below patch? The intention being to give
> >> > "firmware device" drivers a way of signalling to the clock framework
> >> > that they need rely on clocks set up by firmware and when they no longer
> >> > need them. This implements essentially what Mark (CC'ing again on this
> >> > subthread) suggested earlier in this thread. Basically, it will allow
> >> > drivers to determine the time when unused clocks are really unused. It
> >> > will of course only work when used correctly by drivers. For the case of
> >> > simplefb I'd expect its .probe() implementation to call the new
> >> > clk_ignore_unused() function and once it has handed over control of the
> >> > display hardware to the real driver it can call clk_unignore_unused() to
> >> > signal that all unused clocks that it cares about have now been claimed.
> >> > This is "reference counted" and can therefore be used by more than a
> >> > single driver if necessary. Similar functionality could be added for
> >> > other resource subsystems as needed.
> >>
> >> This still won't work for modules, right? Or am I missing something?
> >> With modules you will never know in advance what will be used and what
> >> won't be used, so you need to keep all clocks, regulators, PM domains, ...
> >> up and running?
> >
> > No. The way this works is that your firmware shim driver, simplefb in
> > this case, will call clk_ignore_unused() to tell the clock framework
> > that it uses clocks set up by the firmware, and therefore requests that
> > no clocks should be considered unused (for now). Later on when the
> > proper driver has successfully taken over from the shim driver, the shim
> > driver can unregister itself and call clk_unignore_unused(), which will
> > drop its "reference" on the unused clocks. When all references have been
> > dropped the clock framework will then disable all remaining unused
> > clocks.
>
> So the shim must be built-in, not modular.
Correct. Making it a module isn't very useful in my opinion. You'd loose
all the advantages.
Thierry
[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2014-09-29 9:29 UTC|newest]
Thread overview: 269+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-13 7:17 simplefb: add clock handling Luc Verhaegen
2014-08-13 7:17 ` [PATCH 1/4] simplefb: formalize pseudo palette handling Luc Verhaegen
2014-08-13 7:25 ` David Herrmann
2014-08-13 8:46 ` Geert Uytterhoeven
2014-08-13 8:50 ` David Herrmann
2014-08-13 16:45 ` Stephen Warren
2014-08-13 7:17 ` [PATCH 2/4] simplefb: add goto error path to probe Luc Verhaegen
2014-08-13 7:27 ` David Herrmann
2014-08-14 10:29 ` Luc Verhaegen
2014-08-14 10:33 ` David Herrmann
2014-08-14 10:42 ` Luc Verhaegen
2014-08-13 7:17 ` [PATCH 3/4] simplefb: disable dt node upon remove Luc Verhaegen
2014-08-13 8:40 ` Grant Likely
2014-08-13 8:49 ` David Herrmann
2014-08-13 9:23 ` Grant Likely
2014-08-13 9:32 ` David Herrmann
2014-08-13 9:45 ` Luc Verhaegen
2014-08-13 10:19 ` [linux-sunxi] " Luc Verhaegen
2014-08-13 12:54 ` jonsmirl
2014-08-13 19:14 ` Grant Likely
2014-08-13 19:25 ` Luc Verhaegen
2014-08-13 19:58 ` Stephen Warren
2014-08-13 20:01 ` Luc Verhaegen
2014-08-13 20:00 ` Grant Likely
2014-08-13 20:19 ` Luc Verhaegen
2014-08-13 20:41 ` [linux-sunxi] " jonsmirl
2014-08-14 10:15 ` Grant Likely
2014-08-14 12:07 ` jonsmirl
2014-08-15 0:45 ` Henrik Nordström
2014-08-15 1:27 ` jonsmirl
2014-08-15 6:43 ` Maxime Ripard
2014-08-15 12:34 ` jonsmirl
2014-08-13 16:44 ` Stephen Warren
2014-08-13 17:26 ` [linux-sunxi] " jonsmirl
2014-08-13 17:34 ` Stephen Warren
2014-08-13 17:44 ` jonsmirl
2014-08-13 7:17 ` [PATCH 4/4] simplefb: add clock handling code Luc Verhaegen
2014-08-13 16:38 ` Stephen Warren
2014-08-13 16:47 ` Luc Verhaegen
2014-08-13 17:01 ` Maxime Ripard
2014-08-14 9:37 ` [linux-sunxi] " Hans de Goede
2014-08-14 10:31 ` [linux-sunxi] " Koen Kooi
2014-08-14 10:57 ` Luc Verhaegen
2014-08-14 11:18 ` Hans de Goede
2014-08-14 11:18 ` Hans de Goede
2014-08-25 12:12 ` Thierry Reding
2014-08-25 12:44 ` Maxime Ripard
2014-08-25 13:39 ` Thierry Reding
2014-08-25 13:47 ` [linux-sunxi] " Hans de Goede
2014-08-25 14:16 ` Thierry Reding
2014-08-25 14:23 ` jonsmirl
2014-08-25 14:27 ` Hans de Goede
2014-08-25 15:12 ` Thierry Reding
2014-08-25 15:18 ` Luc Verhaegen
2014-08-26 8:40 ` Thierry Reding
2014-08-26 13:22 ` Maxime Ripard
2014-08-26 13:43 ` Thierry Reding
2014-08-25 15:49 ` jonsmirl
2014-08-26 9:02 ` Hans de Goede
2014-08-25 15:01 ` Thierry Reding
2014-08-25 14:23 ` Hans de Goede
2014-08-25 14:53 ` Thierry Reding
2014-08-25 15:07 ` Maxime Ripard
2014-08-26 8:26 ` Thierry Reding
2014-08-26 9:00 ` Mark Brown
2014-08-26 9:18 ` Thierry Reding
2014-08-26 10:06 ` Mark Brown
2014-08-26 10:55 ` Thierry Reding
2014-08-26 11:33 ` Mark Brown
2014-08-26 18:40 ` Henrik Nordström
2014-08-27 7:40 ` Mark Brown
2014-08-27 8:22 ` Maxime Ripard
2014-08-27 8:37 ` Geert Uytterhoeven
2014-08-27 8:55 ` Maxime Ripard
2014-08-27 9:05 ` Geert Uytterhoeven
2014-08-27 10:32 ` Maxime Ripard
2014-08-27 10:07 ` Thierry Reding
2014-08-27 10:26 ` Henrik Nordström
2014-08-27 12:45 ` Julian Calaby
2014-08-27 13:24 ` Maxime Ripard
2014-08-25 15:08 ` jonsmirl
2014-08-25 14:58 ` Maxime Ripard
2014-08-25 15:05 ` Thierry Reding
2014-08-25 15:09 ` Luc Verhaegen
2014-08-26 7:52 ` Thierry Reding
2014-08-26 12:02 ` Luc Verhaegen
2014-08-26 12:21 ` Thierry Reding
2014-08-26 12:33 ` Luc Verhaegen
2014-08-26 14:41 ` Thierry Reding
2014-08-25 15:22 ` Maxime Ripard
2014-08-26 8:04 ` Thierry Reding
2014-08-26 8:45 ` Michal Suchanek
2014-08-26 13:53 ` Maxime Ripard
2014-08-26 14:35 ` Thierry Reding
2014-08-26 19:59 ` Hans de Goede
2014-08-27 9:31 ` Thierry Reding
2014-08-27 10:35 ` Hans de Goede
2014-08-27 12:44 ` jonsmirl
2014-08-27 12:50 ` Hans de Goede
2014-08-27 12:56 ` jonsmirl
2014-08-27 13:05 ` Thierry Reding
2014-08-27 12:56 ` Thierry Reding
2014-08-27 13:44 ` Hans de Goede
2014-08-27 14:16 ` Thierry Reding
2014-08-28 12:15 ` Hans de Goede
2014-08-28 13:22 ` jonsmirl
2014-08-28 14:20 ` Geert Uytterhoeven
2014-08-28 14:33 ` jonsmirl
2014-08-28 14:37 ` Geert Uytterhoeven
2014-08-28 15:11 ` jonsmirl
2014-08-28 16:25 ` Michal Suchanek
2014-08-28 16:34 ` jonsmirl
2014-08-28 16:50 ` Luc Verhaegen
2014-08-28 20:31 ` Michal Suchanek
2014-08-29 7:16 ` Thierry Reding
2014-08-29 7:01 ` Thierry Reding
2014-08-29 7:23 ` Hans de Goede
2014-08-29 8:12 ` Thierry Reding
2014-08-29 14:12 ` Maxime Ripard
2014-08-29 14:38 ` Thierry Reding
2014-08-29 15:25 ` Michal Suchanek
2014-09-02 9:25 ` Maxime Ripard
2014-09-27 23:56 ` Mike Turquette
2014-09-29 8:06 ` Thierry Reding
2014-09-29 8:27 ` Geert Uytterhoeven
2014-09-29 8:54 ` Thierry Reding
2014-09-29 9:10 ` Geert Uytterhoeven
2014-09-29 9:29 ` Thierry Reding [this message]
2014-09-29 9:44 ` Michal Suchanek
2014-09-29 10:40 ` Thierry Reding
2014-09-29 9:23 ` Maxime Ripard
2014-09-29 10:18 ` Thierry Reding
2014-09-29 10:35 ` Geert Uytterhoeven
2014-09-29 10:44 ` Thierry Reding
2014-09-29 11:32 ` Geert Uytterhoeven
2014-09-29 14:00 ` Thierry Reding
2014-09-29 11:34 ` Maxime Ripard
2014-09-29 13:54 ` Thierry Reding
2014-09-29 15:57 ` Maxime Ripard
2014-09-30 4:59 ` Thierry Reding
2014-09-30 7:46 ` Maxime Ripard
2014-09-30 11:43 ` Hans de Goede
2014-09-30 11:46 ` Thierry Reding
2014-09-30 21:37 ` Mike Turquette
2014-10-01 7:30 ` Thierry Reding
2014-10-01 18:17 ` Mike Turquette
2014-10-02 8:12 ` Thierry Reding
2014-09-29 11:00 ` Julian Calaby
2014-09-29 13:21 ` Thierry Reding
2014-09-29 14:46 ` Julian Calaby
2014-09-29 15:19 ` Thierry Reding
2014-09-29 15:42 ` Michal Suchanek
2014-09-30 0:10 ` Julian Calaby
2014-09-29 11:46 ` Maxime Ripard
2014-09-29 13:47 ` Thierry Reding
2014-09-29 15:04 ` Michal Suchanek
2014-09-29 15:49 ` Thierry Reding
2014-09-29 16:39 ` Michal Suchanek
2014-09-29 15:55 ` Mark Brown
2014-09-30 5:09 ` Thierry Reding
2014-09-30 17:39 ` Mark Brown
2014-10-01 7:41 ` Thierry Reding
2014-10-01 11:10 ` Javier Martinez Canillas
2014-10-01 12:32 ` Mark Brown
2014-10-01 12:48 ` Thierry Reding
2014-10-01 17:05 ` Mark Brown
2014-10-01 17:26 ` Hans de Goede
2014-10-01 17:54 ` jonsmirl
2014-10-01 18:12 ` Stephen Warren
2014-10-01 18:16 ` Luc Verhaegen
2014-10-02 6:42 ` Hans de Goede
2014-10-02 12:22 ` jonsmirl
2014-10-02 12:39 ` Hans de Goede
2014-10-02 12:56 ` jonsmirl
2014-10-02 13:14 ` Hans de Goede
2014-10-02 13:27 ` jonsmirl
2014-10-02 13:33 ` Hans de Goede
2014-10-02 13:40 ` jonsmirl
2014-10-02 14:08 ` Hans de Goede
2014-10-02 14:16 ` jonsmirl
2014-10-02 14:21 ` Hans de Goede
2014-10-02 14:41 ` jonsmirl
2014-10-02 14:50 ` Hans de Goede
2014-10-02 15:14 ` jonsmirl
2014-10-02 15:30 ` jonsmirl
2014-10-02 15:38 ` Hans de Goede
2014-10-02 15:36 ` Michal Suchanek
2014-10-02 23:31 ` Julian Calaby
2014-10-03 7:56 ` Hans de Goede
2014-11-11 16:15 ` Grant Likely
2014-10-02 14:18 ` Maxime Ripard
2014-10-02 14:23 ` Hans de Goede
2014-10-02 14:17 ` Michal Suchanek
2014-10-02 13:59 ` Michal Suchanek
2014-10-02 13:23 ` Michal Suchanek
2014-10-02 13:34 ` jonsmirl
2014-10-02 13:40 ` Hans de Goede
2014-10-02 13:44 ` jonsmirl
2014-10-02 13:46 ` Geert Uytterhoeven
2014-10-02 13:49 ` jonsmirl
2014-10-02 19:15 ` Geert Uytterhoeven
2014-10-02 15:49 ` Stephen Warren
2014-10-03 11:16 ` Hans de Goede
2014-10-03 11:45 ` Tomi Valkeinen
2014-10-03 11:53 ` Hans de Goede
2014-10-01 11:31 ` Mark Brown
2014-09-29 16:28 ` Maxime Ripard
2014-09-29 16:58 ` Luc Verhaegen
2014-09-29 22:02 ` Luc Verhaegen
2014-09-30 5:39 ` Thierry Reding
2014-09-30 8:03 ` Maxime Ripard
2014-09-30 11:02 ` Thierry Reding
2014-09-30 12:41 ` Mark Brown
2014-09-30 12:50 ` jonsmirl
2014-09-30 5:21 ` Thierry Reding
2014-09-30 7:52 ` Maxime Ripard
2014-09-30 8:54 ` Thierry Reding
2014-09-30 9:38 ` Michal Suchanek
2014-09-30 11:31 ` Thierry Reding
2014-09-30 14:12 ` Michal Suchanek
2014-09-30 12:29 ` Maxime Ripard
2014-09-29 16:11 ` Mark Brown
2014-09-30 6:03 ` Thierry Reding
2014-09-30 18:00 ` Mark Brown
2014-10-01 8:14 ` Thierry Reding
2014-10-01 12:20 ` Mark Brown
2014-10-01 12:48 ` Thierry Reding
2014-10-01 13:01 ` jonsmirl
2014-10-01 13:17 ` Michal Suchanek
2014-10-01 13:40 ` jonsmirl
2014-10-01 17:17 ` Mark Brown
2014-10-01 18:43 ` Geert Uytterhoeven
2014-10-02 8:30 ` Thierry Reding
2014-10-02 8:27 ` Thierry Reding
2014-10-01 8:17 ` Thierry Reding
2014-09-29 17:51 ` jonsmirl
2014-09-29 18:06 ` Michal Suchanek
2014-08-27 13:56 ` Maxime Ripard
2014-08-27 14:30 ` Thierry Reding
2014-08-27 13:43 ` Maxime Ripard
2014-08-26 21:02 ` Maxime Ripard
2014-08-27 6:54 ` Thierry Reding
2014-08-27 8:00 ` Hans de Goede
2014-08-27 9:37 ` Thierry Reding
2014-08-27 8:45 ` Maxime Ripard
2014-08-27 9:52 ` Thierry Reding
2014-08-27 15:42 ` Maxime Ripard
2014-08-27 20:57 ` Michal Suchanek
2014-08-28 10:08 ` Thierry Reding
2014-08-29 5:13 ` Michal Suchanek
2014-08-29 6:19 ` Thierry Reding
2014-08-29 6:48 ` Michal Suchanek
2014-08-29 7:08 ` Thierry Reding
2014-08-28 10:11 ` Thierry Reding
2014-08-28 10:32 ` Michal Suchanek
2014-08-28 20:46 ` Maxime Ripard
2014-08-29 6:29 ` Thierry Reding
2014-08-29 13:57 ` Maxime Ripard
2014-08-29 14:31 ` Thierry Reding
2014-08-27 8:17 ` Henrik Nordström
2014-08-25 15:25 ` Andreas Färber
2014-08-26 13:19 ` Maxime Ripard
2014-08-13 7:54 ` simplefb: add clock handling David Herrmann
2014-08-13 8:11 ` Luc Verhaegen
2014-08-13 8:21 ` [linux-sunxi] " Koen Kooi
2014-08-13 8:36 ` Hans de Goede
2014-08-13 10:16 ` Koen Kooi
2014-08-13 10:24 ` David Herrmann
2014-08-13 11:36 ` Hans de Goede
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=20140929092956.GA26008@ulmo \
--to=thierry.reding@gmail.com \
--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).