From: Mike Turquette <mturquette@linaro.org>
To: Arnd Bergmann <arnd@arndb.de>, linux-arm-kernel@lists.infradead.org
Cc: Grygorii Strashko <grygorii.strashko@ti.com>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Kevin Hilman <khilman@kernel.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
Ulf Hansson <ulf.hansson@linaro.org>,
"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Grant Likely <grant.likely@secretlab.ca>,
Rob Herring <robh+dt@kernel.org>,
ssantosh@kernel.org
Subject: Re: [PATCH v4 1/2] ARM: keystone: pm: switch to use generic pm domains
Date: Mon, 24 Nov 2014 22:44:06 -0800 [thread overview]
Message-ID: <20141125064406.12298.57929@quantum> (raw)
In-Reply-To: <2997659.fTX2lvxXfH@wuerfel>
Quoting Arnd Bergmann (2014-11-24 02:50:28)
> On Friday 21 November 2014 20:58:01 Grygorii Strashko wrote:
> > Hi Kevin,
> > On 11/21/2014 10:06 AM, Geert Uytterhoeven wrote:
> > > On Fri, Nov 21, 2014 at 2:30 AM, Kevin Hilman <khilman@kernel.org> wrote:
> > >> Geert Uytterhoeven <geert@linux-m68k.org> writes:
> > >>
> > >> So now I'm confused about why the PM domain has to do anything special
> > >> if the presence/absence of the clocks is already handled by the DT.
> > >
> > > Just adding a clock property to a device node in DT doesn't enable the clock
> > > automatically, nor make it runtime-managed automatically.
> > > Compare this to e.g. pinctrl, where adding pinctrl properties to DT does enable
> > > them automatically, without the driver for the device having to care about it.
> > >
> > > Drivers interfacing external hardware typically do care about clocks, as they
> > > have to program clock generators for the external hardware interface (e.g.
> > > driving spi or i2c buses at specific frequencies).
>
> But is this a property of the driver or of the device? If this is true
> independent of the driver implementation, I don't see a problem with
> the approach of linking to a power-domain that automatically manages
> all clocks for the devices that need this, and requires the driver to
> manage them itself when there are any clocks that can't be handled
> with the generic clk-power-domain implementation.
>
> >
> > In non-DT case, we have possibility to divide clocks on "fck" and "opt"
> > (The way it can be done is not convenient, but it is - .con_id).
> >
> > For DT-case - no way now. Also, PM domains are not physically present on
> > Keystone 2 and GPD was selected as glue layer to integrate DT, pm_clk and
> > PM runtime all together (one big-fat-global PM domain :).
> >
> > So, I was able to find only following way to define "fck" clocks in DT:
> > clocks = <&papllclk>, <&clkcpgmac>, <&chipclk12>;
> > clock-names = "clk_pa", "clk_cpgmac", "cpsw_cpts_rft_clk";
> > fck-clocks = <&papllclk>, <&clkcpgmac>;
> > As you can see - this will lead to data duplication in DT (
> >
> > Any propositions are welcome?
> >
> > Unfortunately, It seems that if we would not able to find DT solution
> > then there will be following ways to move forward:
> > - "remove the power domain proxy from your drivers and use the clocks directly"
> > ((c) Arnd Bergmann).
> > [As possibility - It can be allowed to use clk_pm APIs by drivers]
> > - continue using platform specific implementations.
>
> Could the driver maybe identify the clocks that it wants to manage itself
> to the pm-domain code? If it's safe for a device to have the clock turned
> on at the default rate before loading the driver, any device that is connected
> to the simple clk-pm-domain code could have all its clocks start out as
> owned by the pm-domain, but then claim the clocks it needs to reprogram for
> itself and take them out of the pmdomain.
I was thinking along similar lines. The functional versus optional stuff
is really a property of the consuming device, not the clock signal
itself.
Instead of adding a new property to the clock binding (e.g. fck-clocks
or optional-clocks), could we simply wrap those lists of clocks in
another node? E.g:
mandatory-clocks {
clocks = <&papllclk>, <&clkcpgmac>;
clock-names = "clk_pa", "clk_cpgmac";
}
clocks = <&papllclk>, <&clkcpgmac>, <&chipclk12>;
clocks = <&clkcpgmac>;
clock-names = "cpsw_cpts_rft_clk";
}
I'm showing my DT ignorance on this one. I haven't really thought
through how these sub-nodes would work with of_clk_* handlers in
drivers/clk/clkdev.c.
Regards,
Mike
>
> Arnd
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: mturquette@linaro.org (Mike Turquette)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 1/2] ARM: keystone: pm: switch to use generic pm domains
Date: Mon, 24 Nov 2014 22:44:06 -0800 [thread overview]
Message-ID: <20141125064406.12298.57929@quantum> (raw)
In-Reply-To: <2997659.fTX2lvxXfH@wuerfel>
Quoting Arnd Bergmann (2014-11-24 02:50:28)
> On Friday 21 November 2014 20:58:01 Grygorii Strashko wrote:
> > Hi Kevin,
> > On 11/21/2014 10:06 AM, Geert Uytterhoeven wrote:
> > > On Fri, Nov 21, 2014 at 2:30 AM, Kevin Hilman <khilman@kernel.org> wrote:
> > >> Geert Uytterhoeven <geert@linux-m68k.org> writes:
> > >>
> > >> So now I'm confused about why the PM domain has to do anything special
> > >> if the presence/absence of the clocks is already handled by the DT.
> > >
> > > Just adding a clock property to a device node in DT doesn't enable the clock
> > > automatically, nor make it runtime-managed automatically.
> > > Compare this to e.g. pinctrl, where adding pinctrl properties to DT does enable
> > > them automatically, without the driver for the device having to care about it.
> > >
> > > Drivers interfacing external hardware typically do care about clocks, as they
> > > have to program clock generators for the external hardware interface (e.g.
> > > driving spi or i2c buses at specific frequencies).
>
> But is this a property of the driver or of the device? If this is true
> independent of the driver implementation, I don't see a problem with
> the approach of linking to a power-domain that automatically manages
> all clocks for the devices that need this, and requires the driver to
> manage them itself when there are any clocks that can't be handled
> with the generic clk-power-domain implementation.
>
> >
> > In non-DT case, we have possibility to divide clocks on "fck" and "opt"
> > (The way it can be done is not convenient, but it is - .con_id).
> >
> > For DT-case - no way now. Also, PM domains are not physically present on
> > Keystone 2 and GPD was selected as glue layer to integrate DT, pm_clk and
> > PM runtime all together (one big-fat-global PM domain :).
> >
> > So, I was able to find only following way to define "fck" clocks in DT:
> > clocks = <&papllclk>, <&clkcpgmac>, <&chipclk12>;
> > clock-names = "clk_pa", "clk_cpgmac", "cpsw_cpts_rft_clk";
> > fck-clocks = <&papllclk>, <&clkcpgmac>;
> > As you can see - this will lead to data duplication in DT (
> >
> > Any propositions are welcome?
> >
> > Unfortunately, It seems that if we would not able to find DT solution
> > then there will be following ways to move forward:
> > - "remove the power domain proxy from your drivers and use the clocks directly"
> > ((c) Arnd Bergmann).
> > [As possibility - It can be allowed to use clk_pm APIs by drivers]
> > - continue using platform specific implementations.
>
> Could the driver maybe identify the clocks that it wants to manage itself
> to the pm-domain code? If it's safe for a device to have the clock turned
> on at the default rate before loading the driver, any device that is connected
> to the simple clk-pm-domain code could have all its clocks start out as
> owned by the pm-domain, but then claim the clocks it needs to reprogram for
> itself and take them out of the pmdomain.
I was thinking along similar lines. The functional versus optional stuff
is really a property of the consuming device, not the clock signal
itself.
Instead of adding a new property to the clock binding (e.g. fck-clocks
or optional-clocks), could we simply wrap those lists of clocks in
another node? E.g:
mandatory-clocks {
clocks = <&papllclk>, <&clkcpgmac>;
clock-names = "clk_pa", "clk_cpgmac";
}
clocks = <&papllclk>, <&clkcpgmac>, <&chipclk12>;
clocks = <&clkcpgmac>;
clock-names = "cpsw_cpts_rft_clk";
}
I'm showing my DT ignorance on this one. I haven't really thought
through how these sub-nodes would work with of_clk_* handlers in
drivers/clk/clkdev.c.
Regards,
Mike
>
> Arnd
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pm" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2014-11-25 6:44 UTC|newest]
Thread overview: 107+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-10 14:59 [PATCH v4 0/2] ARM: keystone: pm: switch to use generic pm domains Grygorii Strashko
2014-11-10 14:59 ` Grygorii Strashko
2014-11-10 14:59 ` Grygorii Strashko
2014-11-10 14:59 ` [PATCH v4 1/2] " Grygorii Strashko
2014-11-10 14:59 ` Grygorii Strashko
2014-11-10 14:59 ` Grygorii Strashko
2014-11-10 15:06 ` Arnd Bergmann
2014-11-10 15:06 ` Arnd Bergmann
2014-11-10 17:38 ` Grygorii Strashko
2014-11-10 17:38 ` Grygorii Strashko
2014-11-10 17:38 ` Grygorii Strashko
2014-11-10 20:36 ` Arnd Bergmann
2014-11-10 20:36 ` Arnd Bergmann
2014-11-17 19:14 ` Kevin Hilman
2014-11-17 19:14 ` Kevin Hilman
2014-11-17 19:14 ` Kevin Hilman
[not found] ` <7h389h3aif.fsf-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR@public.gmane.org>
2014-11-17 20:37 ` Arnd Bergmann
2014-11-17 20:37 ` Arnd Bergmann
2014-11-17 20:37 ` Arnd Bergmann
2014-11-17 21:50 ` Kevin Hilman
2014-11-17 21:50 ` Kevin Hilman
2014-11-18 18:54 ` Grygorii Strashko
2014-11-18 18:54 ` Grygorii Strashko
2014-11-18 18:54 ` Grygorii Strashko
2014-11-18 19:32 ` Arnd Bergmann
2014-11-18 19:32 ` Arnd Bergmann
2014-11-19 11:32 ` Grygorii Strashko
2014-11-19 11:32 ` Grygorii Strashko
2014-11-19 11:32 ` Grygorii Strashko
2014-11-19 13:47 ` Arnd Bergmann
2014-11-19 13:47 ` Arnd Bergmann
2014-11-20 11:34 ` Ulf Hansson
2014-11-20 11:34 ` Ulf Hansson
2014-11-20 12:03 ` Grygorii Strashko
2014-11-20 12:03 ` Grygorii Strashko
2014-11-20 12:03 ` Grygorii Strashko
2014-11-20 13:12 ` Ulf Hansson
2014-11-20 13:12 ` Ulf Hansson
2014-11-20 13:32 ` Geert Uytterhoeven
2014-11-20 13:32 ` Geert Uytterhoeven
2014-11-20 15:32 ` Grygorii Strashko
2014-11-20 15:32 ` Grygorii Strashko
2014-11-20 15:32 ` Grygorii Strashko
2014-11-20 20:22 ` Kevin Hilman
2014-11-20 20:22 ` Kevin Hilman
2014-11-20 20:22 ` Kevin Hilman
2014-11-20 20:26 ` Geert Uytterhoeven
2014-11-20 20:26 ` Geert Uytterhoeven
2014-11-20 21:48 ` Kevin Hilman
2014-11-20 21:48 ` Kevin Hilman
2014-11-20 21:48 ` Kevin Hilman
2014-11-20 21:54 ` Geert Uytterhoeven
2014-11-20 21:54 ` Geert Uytterhoeven
[not found] ` <CAMuHMdVXGPu7x706NxqO3rn3KuRbPbD_ZQsJtDH4Hf31AaRR+Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-21 1:30 ` Kevin Hilman
2014-11-21 1:30 ` Kevin Hilman
2014-11-21 1:30 ` Kevin Hilman
[not found] ` <7hppchpcfm.fsf-1D3HCaltpLuhEniVeURVKkEOCMrvLtNR@public.gmane.org>
2014-11-21 8:06 ` Geert Uytterhoeven
2014-11-21 8:06 ` Geert Uytterhoeven
2014-11-21 8:06 ` Geert Uytterhoeven
2014-11-21 18:58 ` Grygorii Strashko
2014-11-21 18:58 ` Grygorii Strashko
2014-11-21 18:58 ` Grygorii Strashko
[not found] ` <546F8B39.1080106-l0cyMroinI0@public.gmane.org>
2014-11-21 19:29 ` Kevin Hilman
2014-11-21 19:29 ` Kevin Hilman
2014-11-21 19:29 ` Kevin Hilman
2014-11-21 20:14 ` Grygorii Strashko
2014-11-21 20:14 ` Grygorii Strashko
2014-11-21 20:14 ` Grygorii Strashko
2014-11-24 10:50 ` Arnd Bergmann
2014-11-24 10:50 ` Arnd Bergmann
2014-11-25 6:44 ` Mike Turquette [this message]
2014-11-25 6:44 ` Mike Turquette
2014-11-25 10:33 ` Arnd Bergmann
2014-11-25 10:33 ` Arnd Bergmann
2014-11-25 11:08 ` Grygorii Strashko
2014-11-25 11:08 ` Grygorii Strashko
2014-11-25 11:08 ` Grygorii Strashko
[not found] ` <54746349.3000306-l0cyMroinI0@public.gmane.org>
2014-11-25 12:09 ` Arnd Bergmann
2014-11-25 12:09 ` Arnd Bergmann
2014-11-25 12:09 ` Arnd Bergmann
2014-11-25 13:30 ` Grygorii Strashko
2014-11-25 13:30 ` Grygorii Strashko
2014-11-25 13:30 ` Grygorii Strashko
2014-11-25 14:04 ` Russell King - ARM Linux
2014-11-25 14:04 ` Russell King - ARM Linux
2014-11-25 14:53 ` Grygorii Strashko
2014-11-25 14:53 ` Grygorii Strashko
2014-11-25 14:53 ` Grygorii Strashko
2014-11-25 16:28 ` santosh shilimkar
2014-11-25 16:28 ` santosh shilimkar
[not found] ` <CAMuHMdU6G35SP-P7bt6RJQk59CrGcKE2XM4N3o8Dv3qxZU7gxA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-21 19:20 ` Kevin Hilman
2014-11-21 19:20 ` Kevin Hilman
2014-11-21 19:20 ` Kevin Hilman
[not found] ` <546E0970.5090301-l0cyMroinI0@public.gmane.org>
2014-11-21 9:04 ` Geert Uytterhoeven
2014-11-21 9:04 ` Geert Uytterhoeven
2014-11-21 9:04 ` Geert Uytterhoeven
2014-11-18 2:18 ` santosh.shilimkar
2014-11-18 2:18 ` santosh.shilimkar at oracle.com
2014-11-10 14:59 ` [PATCH v4 2/2] ARM: dts: keystone: add generic pm controller node Grygorii Strashko
2014-11-10 14:59 ` Grygorii Strashko
2014-11-10 14:59 ` Grygorii Strashko
2014-11-10 15:13 ` [PATCH v4 0/2] ARM: keystone: pm: switch to use generic pm domains Grygorii Strashko
2014-11-10 15:13 ` Grygorii Strashko
2014-11-10 15:13 ` Grygorii Strashko
[not found] ` <5460D601.70504-l0cyMroinI0@public.gmane.org>
2014-11-10 18:51 ` santosh.shilimkar-QHcLZuEGTsvQT0dZR+AlfA
2014-11-10 18:51 ` santosh.shilimkar
2014-11-10 18:51 ` santosh.shilimkar at oracle.com
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=20141125064406.12298.57929@quantum \
--to=mturquette@linaro.org \
--cc=arnd@arndb.de \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=geert@linux-m68k.org \
--cc=grant.likely@secretlab.ca \
--cc=grygorii.strashko@ti.com \
--cc=khilman@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rjw@rjwysocki.net \
--cc=robh+dt@kernel.org \
--cc=ssantosh@kernel.org \
--cc=ulf.hansson@linaro.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.