All of lore.kernel.org
 help / color / mirror / Atom feed
From: Grygorii Strashko <grygorii.strashko@ti.com>
To: Ulf Hansson <ulf.hansson@linaro.org>, Arnd Bergmann <arnd@arndb.de>
Cc: Kevin Hilman <khilman@kernel.org>,
	ssantosh@kernel.org, "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	Grant Likely <grant.likely@secretlab.ca>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>
Subject: Re: [PATCH v4 1/2] ARM: keystone: pm: switch to use generic pm domains
Date: Thu, 20 Nov 2014 14:03:07 +0200	[thread overview]
Message-ID: <546DD87B.3080806@ti.com> (raw)
In-Reply-To: <CAPDyKFqeZ3YU2OEN4tCOdcQ0pAho67Q8U_eCEOroG9aS0mp+-Q@mail.gmail.com>

On 11/20/2014 01:34 PM, Ulf Hansson wrote:
> On 19 November 2014 14:47, Arnd Bergmann <arnd@arndb.de> wrote:
>> On Wednesday 19 November 2014 13:32:45 Grygorii Strashko wrote:
>>> On 11/18/2014 09:32 PM, Arnd Bergmann wrote:
>>>> On Tuesday 18 November 2014 20:54:36 Grygorii Strashko wrote:
>>>>
>>>> Have one pmdomain driver in the generic code that knows about clocks,
>>>> possibly also regulators and pins and just turns them on when needed.
>>>> You can have a "simple-pmdomain" or "generic-pmdomain" compatible
>>>> string.
>>>>
>>>> I'm a bit surprised that your pmdomain code looks up the clocks from the
>>>> respective device, rather than know about the clocks itself. There is
>>>> probably a good reason for this, but I don't see it yet.
>>>
>>> The keystone 2 uses simple PM schema based on clocks only:
>>> - clocks enabled -> dev is active
>>> - clocks disabled -> dev is suspended
>>>
>>> To achieve explained above the Generic clock manipulation PM callbacks framework (pm_clk) is used.
>>> - list of managed clocks is filled for each device (for non-DT case the con_id list
>>>    is specified by platform code like:
>>>        .con_ids = { "fck", "master", "slave", NULL },
>>>          - or -
>>>        .con_ids = { }, <-- in this case only first clock will be added to pm_clk
>>>    )
> 
> According to earlier comments in this thread, device's clocks are
> split into "functional" and "PM" clocks.
> 
> If I understand correctly, a typical platform driver will enable it's
> "functional" clocks during ->probe() and you want the PM domain to
> take care of the "PM" clocks, when the device changes runtime PM
> status.
> 
> How will you describe these different set of device clocks in DT?

True :(  You can dig deeper in the history of this series if you wish.
- first Geert Uytterhoeven proposed to use CLK_RUNTIME_PM there 
  https://lkml.org/lkml/2014/11/6/319
- second I proposed to introduce smth. like "clkops-clocks", "pm-clocks" there
  https://lkml.org/lkml/2014/6/12/436
 or "fck-clocks"/"opt-clocks" later. 

^failed.

So, this implementation picks up all clocks for each device, which is ok for
Keystone 2 and, because it's platform specific.

>>
>> Yes, it would definitely solve the problem that I see with the infrastructure
>> code that the current version adds into the platform directory.
>>
>> The exact binding of course should be reviewed by the pmdomain and
>> DT maintainers, to ensure that it is done the best possible way, because
>> I assume we will end up using it a lot, and it would be a shame to get
>> it slightly wrong.
>>
>> One possible variation I can think of would be to just use "simple-pmdomain"
>> as the compatible string, and use properties in the node itself to decide
>> what the domain should control, e.g.
>>
>>          clk_pmdomain: pmdomain {
>>                  compatible = "simple-pmdomain";
>>                  pmdomain-enable-clocks;
>>                  #power-domain-cells = <0>;
>>          };
>>          clk_regulator_pmdomain: pmdomain {
>>                  compatible = "simple-pmdomain";
>>                  pmdomain-enable-clocks;
>>                  pmdomain-enable-regulators;
>>                  #power-domain-cells = <0>;
>>          };
>>
>> and then have each device link to one of the nodes as the pmdomain.
>>
> 
> That's seems like a good approach to me.
 
Yes, but your previous comment is still actual :(

Regards,
-grygorii

WARNING: multiple messages have this Message-ID (diff)
From: grygorii.strashko@ti.com (Grygorii Strashko)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 1/2] ARM: keystone: pm: switch to use generic pm domains
Date: Thu, 20 Nov 2014 14:03:07 +0200	[thread overview]
Message-ID: <546DD87B.3080806@ti.com> (raw)
In-Reply-To: <CAPDyKFqeZ3YU2OEN4tCOdcQ0pAho67Q8U_eCEOroG9aS0mp+-Q@mail.gmail.com>

On 11/20/2014 01:34 PM, Ulf Hansson wrote:
> On 19 November 2014 14:47, Arnd Bergmann <arnd@arndb.de> wrote:
>> On Wednesday 19 November 2014 13:32:45 Grygorii Strashko wrote:
>>> On 11/18/2014 09:32 PM, Arnd Bergmann wrote:
>>>> On Tuesday 18 November 2014 20:54:36 Grygorii Strashko wrote:
>>>>
>>>> Have one pmdomain driver in the generic code that knows about clocks,
>>>> possibly also regulators and pins and just turns them on when needed.
>>>> You can have a "simple-pmdomain" or "generic-pmdomain" compatible
>>>> string.
>>>>
>>>> I'm a bit surprised that your pmdomain code looks up the clocks from the
>>>> respective device, rather than know about the clocks itself. There is
>>>> probably a good reason for this, but I don't see it yet.
>>>
>>> The keystone 2 uses simple PM schema based on clocks only:
>>> - clocks enabled -> dev is active
>>> - clocks disabled -> dev is suspended
>>>
>>> To achieve explained above the Generic clock manipulation PM callbacks framework (pm_clk) is used.
>>> - list of managed clocks is filled for each device (for non-DT case the con_id list
>>>    is specified by platform code like:
>>>        .con_ids = { "fck", "master", "slave", NULL },
>>>          - or -
>>>        .con_ids = { }, <-- in this case only first clock will be added to pm_clk
>>>    )
> 
> According to earlier comments in this thread, device's clocks are
> split into "functional" and "PM" clocks.
> 
> If I understand correctly, a typical platform driver will enable it's
> "functional" clocks during ->probe() and you want the PM domain to
> take care of the "PM" clocks, when the device changes runtime PM
> status.
> 
> How will you describe these different set of device clocks in DT?

True :(  You can dig deeper in the history of this series if you wish.
- first Geert Uytterhoeven proposed to use CLK_RUNTIME_PM there 
  https://lkml.org/lkml/2014/11/6/319
- second I proposed to introduce smth. like "clkops-clocks", "pm-clocks" there
  https://lkml.org/lkml/2014/6/12/436
 or "fck-clocks"/"opt-clocks" later. 

^failed.

So, this implementation picks up all clocks for each device, which is ok for
Keystone 2 and, because it's platform specific.

>>
>> Yes, it would definitely solve the problem that I see with the infrastructure
>> code that the current version adds into the platform directory.
>>
>> The exact binding of course should be reviewed by the pmdomain and
>> DT maintainers, to ensure that it is done the best possible way, because
>> I assume we will end up using it a lot, and it would be a shame to get
>> it slightly wrong.
>>
>> One possible variation I can think of would be to just use "simple-pmdomain"
>> as the compatible string, and use properties in the node itself to decide
>> what the domain should control, e.g.
>>
>>          clk_pmdomain: pmdomain {
>>                  compatible = "simple-pmdomain";
>>                  pmdomain-enable-clocks;
>>                  #power-domain-cells = <0>;
>>          };
>>          clk_regulator_pmdomain: pmdomain {
>>                  compatible = "simple-pmdomain";
>>                  pmdomain-enable-clocks;
>>                  pmdomain-enable-regulators;
>>                  #power-domain-cells = <0>;
>>          };
>>
>> and then have each device link to one of the nodes as the pmdomain.
>>
> 
> That's seems like a good approach to me.
 
Yes, but your previous comment is still actual :(

Regards,
-grygorii

WARNING: multiple messages have this Message-ID (diff)
From: Grygorii Strashko <grygorii.strashko@ti.com>
To: Ulf Hansson <ulf.hansson@linaro.org>, Arnd Bergmann <arnd@arndb.de>
Cc: Kevin Hilman <khilman@kernel.org>, <ssantosh@kernel.org>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	Grant Likely <grant.likely@secretlab.ca>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>
Subject: Re: [PATCH v4 1/2] ARM: keystone: pm: switch to use generic pm domains
Date: Thu, 20 Nov 2014 14:03:07 +0200	[thread overview]
Message-ID: <546DD87B.3080806@ti.com> (raw)
In-Reply-To: <CAPDyKFqeZ3YU2OEN4tCOdcQ0pAho67Q8U_eCEOroG9aS0mp+-Q@mail.gmail.com>

On 11/20/2014 01:34 PM, Ulf Hansson wrote:
> On 19 November 2014 14:47, Arnd Bergmann <arnd@arndb.de> wrote:
>> On Wednesday 19 November 2014 13:32:45 Grygorii Strashko wrote:
>>> On 11/18/2014 09:32 PM, Arnd Bergmann wrote:
>>>> On Tuesday 18 November 2014 20:54:36 Grygorii Strashko wrote:
>>>>
>>>> Have one pmdomain driver in the generic code that knows about clocks,
>>>> possibly also regulators and pins and just turns them on when needed.
>>>> You can have a "simple-pmdomain" or "generic-pmdomain" compatible
>>>> string.
>>>>
>>>> I'm a bit surprised that your pmdomain code looks up the clocks from the
>>>> respective device, rather than know about the clocks itself. There is
>>>> probably a good reason for this, but I don't see it yet.
>>>
>>> The keystone 2 uses simple PM schema based on clocks only:
>>> - clocks enabled -> dev is active
>>> - clocks disabled -> dev is suspended
>>>
>>> To achieve explained above the Generic clock manipulation PM callbacks framework (pm_clk) is used.
>>> - list of managed clocks is filled for each device (for non-DT case the con_id list
>>>    is specified by platform code like:
>>>        .con_ids = { "fck", "master", "slave", NULL },
>>>          - or -
>>>        .con_ids = { }, <-- in this case only first clock will be added to pm_clk
>>>    )
> 
> According to earlier comments in this thread, device's clocks are
> split into "functional" and "PM" clocks.
> 
> If I understand correctly, a typical platform driver will enable it's
> "functional" clocks during ->probe() and you want the PM domain to
> take care of the "PM" clocks, when the device changes runtime PM
> status.
> 
> How will you describe these different set of device clocks in DT?

True :(  You can dig deeper in the history of this series if you wish.
- first Geert Uytterhoeven proposed to use CLK_RUNTIME_PM there 
  https://lkml.org/lkml/2014/11/6/319
- second I proposed to introduce smth. like "clkops-clocks", "pm-clocks" there
  https://lkml.org/lkml/2014/6/12/436
 or "fck-clocks"/"opt-clocks" later. 

^failed.

So, this implementation picks up all clocks for each device, which is ok for
Keystone 2 and, because it's platform specific.

>>
>> Yes, it would definitely solve the problem that I see with the infrastructure
>> code that the current version adds into the platform directory.
>>
>> The exact binding of course should be reviewed by the pmdomain and
>> DT maintainers, to ensure that it is done the best possible way, because
>> I assume we will end up using it a lot, and it would be a shame to get
>> it slightly wrong.
>>
>> One possible variation I can think of would be to just use "simple-pmdomain"
>> as the compatible string, and use properties in the node itself to decide
>> what the domain should control, e.g.
>>
>>          clk_pmdomain: pmdomain {
>>                  compatible = "simple-pmdomain";
>>                  pmdomain-enable-clocks;
>>                  #power-domain-cells = <0>;
>>          };
>>          clk_regulator_pmdomain: pmdomain {
>>                  compatible = "simple-pmdomain";
>>                  pmdomain-enable-clocks;
>>                  pmdomain-enable-regulators;
>>                  #power-domain-cells = <0>;
>>          };
>>
>> and then have each device link to one of the nodes as the pmdomain.
>>
> 
> That's seems like a good approach to me.
 
Yes, but your previous comment is still actual :(

Regards,
-grygorii

  reply	other threads:[~2014-11-20 12:03 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 [this message]
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
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=546DD87B.3080806@ti.com \
    --to=grygorii.strashko@ti.com \
    --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=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.