linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
@ 2011-08-11  4:55 Chanwoo Choi
  2011-08-13 21:24 ` Rafael J. Wysocki
  2011-08-19 14:15 ` Kukjin Kim
  0 siblings, 2 replies; 15+ messages in thread
From: Chanwoo Choi @ 2011-08-11  4:55 UTC (permalink / raw)
  To: linux-arm-kernel

The following patch set use the generic Power domain Framework instead of
power domain code depend of Samsung SoC.

Chanwoo Choi (4):
  ARM: EXYNOS4: Support for generic I/O power domains on EXYNOS4210
  ARM: EXYNOS4: Support for generic Clock manipulation PM callbacks
  ARM: EXYNOS4: Delete the power-domain code depend on Samsung SoC
  ARM: EXYNOS4: Add power domain to use generic Power domain Framework

 arch/arm/mach-exynos4/Kconfig                      |   10 +-
 arch/arm/mach-exynos4/Makefile                     |    4 +-
 arch/arm/mach-exynos4/dev-pd.c                     |  139 --------------
 arch/arm/mach-exynos4/include/mach/pm-exynos4210.h |   52 ++++++
 arch/arm/mach-exynos4/include/mach/regs-clock.h    |    8 +
 arch/arm/mach-exynos4/mach-nuri.c                  |   21 ++-
 arch/arm/mach-exynos4/mach-smdkc210.c              |   26 ++-
 arch/arm/mach-exynos4/mach-smdkv310.c              |   23 ++-
 arch/arm/mach-exynos4/mach-universal_c210.c        |   21 ++-
 arch/arm/mach-exynos4/pm-exynos4210.c              |  189 ++++++++++++++++++++
 arch/arm/mach-exynos4/pm-runtime.c                 |   56 ++++++
 arch/arm/plat-samsung/Kconfig                      |    8 -
 arch/arm/plat-samsung/Makefile                     |    4 -
 arch/arm/plat-samsung/include/plat/pd.h            |   30 ---
 arch/arm/plat-samsung/pd.c                         |   95 ----------
 15 files changed, 377 insertions(+), 309 deletions(-)
 delete mode 100644 arch/arm/mach-exynos4/dev-pd.c
 create mode 100644 arch/arm/mach-exynos4/include/mach/pm-exynos4210.h
 create mode 100644 arch/arm/mach-exynos4/pm-exynos4210.c
 create mode 100644 arch/arm/mach-exynos4/pm-runtime.c
 delete mode 100644 arch/arm/plat-samsung/include/plat/pd.h
 delete mode 100644 arch/arm/plat-samsung/pd.c

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
  2011-08-11  4:55 [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210 Chanwoo Choi
@ 2011-08-13 21:24 ` Rafael J. Wysocki
  2011-08-13 21:36   ` Russell King - ARM Linux
  2011-09-24 17:27   ` Sylwester Nawrocki
  2011-08-19 14:15 ` Kukjin Kim
  1 sibling, 2 replies; 15+ messages in thread
From: Rafael J. Wysocki @ 2011-08-13 21:24 UTC (permalink / raw)
  To: linux-arm-kernel

On Thursday, August 11, 2011, Chanwoo Choi wrote:
> The following patch set use the generic Power domain Framework instead of
> power domain code depend of Samsung SoC.
> 
> Chanwoo Choi (4):
>   ARM: EXYNOS4: Support for generic I/O power domains on EXYNOS4210
>   ARM: EXYNOS4: Support for generic Clock manipulation PM callbacks
>   ARM: EXYNOS4: Delete the power-domain code depend on Samsung SoC
>   ARM: EXYNOS4: Add power domain to use generic Power domain Framework
> 
>  arch/arm/mach-exynos4/Kconfig                      |   10 +-
>  arch/arm/mach-exynos4/Makefile                     |    4 +-
>  arch/arm/mach-exynos4/dev-pd.c                     |  139 --------------
>  arch/arm/mach-exynos4/include/mach/pm-exynos4210.h |   52 ++++++
>  arch/arm/mach-exynos4/include/mach/regs-clock.h    |    8 +
>  arch/arm/mach-exynos4/mach-nuri.c                  |   21 ++-
>  arch/arm/mach-exynos4/mach-smdkc210.c              |   26 ++-
>  arch/arm/mach-exynos4/mach-smdkv310.c              |   23 ++-
>  arch/arm/mach-exynos4/mach-universal_c210.c        |   21 ++-
>  arch/arm/mach-exynos4/pm-exynos4210.c              |  189 ++++++++++++++++++++
>  arch/arm/mach-exynos4/pm-runtime.c                 |   56 ++++++
>  arch/arm/plat-samsung/Kconfig                      |    8 -
>  arch/arm/plat-samsung/Makefile                     |    4 -
>  arch/arm/plat-samsung/include/plat/pd.h            |   30 ---
>  arch/arm/plat-samsung/pd.c                         |   95 ----------
>  15 files changed, 377 insertions(+), 309 deletions(-)
>  delete mode 100644 arch/arm/mach-exynos4/dev-pd.c
>  create mode 100644 arch/arm/mach-exynos4/include/mach/pm-exynos4210.h
>  create mode 100644 arch/arm/mach-exynos4/pm-exynos4210.c
>  create mode 100644 arch/arm/mach-exynos4/pm-runtime.c
>  delete mode 100644 arch/arm/plat-samsung/include/plat/pd.h
>  delete mode 100644 arch/arm/plat-samsung/pd.c

The patchset looks good to me, but please note that some code it
is based on will most likely change in 3.2 due to this patchset:

https://lkml.org/lkml/2011/8/8/420

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
  2011-08-13 21:24 ` Rafael J. Wysocki
@ 2011-08-13 21:36   ` Russell King - ARM Linux
  2011-08-13 23:39     ` Rafael J. Wysocki
  2011-09-24 17:27   ` Sylwester Nawrocki
  1 sibling, 1 reply; 15+ messages in thread
From: Russell King - ARM Linux @ 2011-08-13 21:36 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Aug 13, 2011 at 11:24:07PM +0200, Rafael J. Wysocki wrote:
> On Thursday, August 11, 2011, Chanwoo Choi wrote:
> > The following patch set use the generic Power domain Framework instead of
> > power domain code depend of Samsung SoC.
> > 
> > Chanwoo Choi (4):
> >   ARM: EXYNOS4: Support for generic I/O power domains on EXYNOS4210
> >   ARM: EXYNOS4: Support for generic Clock manipulation PM callbacks
> >   ARM: EXYNOS4: Delete the power-domain code depend on Samsung SoC
> >   ARM: EXYNOS4: Add power domain to use generic Power domain Framework
> > 
> >  arch/arm/mach-exynos4/Kconfig                      |   10 +-
> >  arch/arm/mach-exynos4/Makefile                     |    4 +-
> >  arch/arm/mach-exynos4/dev-pd.c                     |  139 --------------
> >  arch/arm/mach-exynos4/include/mach/pm-exynos4210.h |   52 ++++++
> >  arch/arm/mach-exynos4/include/mach/regs-clock.h    |    8 +
> >  arch/arm/mach-exynos4/mach-nuri.c                  |   21 ++-
> >  arch/arm/mach-exynos4/mach-smdkc210.c              |   26 ++-
> >  arch/arm/mach-exynos4/mach-smdkv310.c              |   23 ++-
> >  arch/arm/mach-exynos4/mach-universal_c210.c        |   21 ++-
> >  arch/arm/mach-exynos4/pm-exynos4210.c              |  189 ++++++++++++++++++++
> >  arch/arm/mach-exynos4/pm-runtime.c                 |   56 ++++++
> >  arch/arm/plat-samsung/Kconfig                      |    8 -
> >  arch/arm/plat-samsung/Makefile                     |    4 -
> >  arch/arm/plat-samsung/include/plat/pd.h            |   30 ---
> >  arch/arm/plat-samsung/pd.c                         |   95 ----------
> >  15 files changed, 377 insertions(+), 309 deletions(-)
> >  delete mode 100644 arch/arm/mach-exynos4/dev-pd.c
> >  create mode 100644 arch/arm/mach-exynos4/include/mach/pm-exynos4210.h
> >  create mode 100644 arch/arm/mach-exynos4/pm-exynos4210.c
> >  create mode 100644 arch/arm/mach-exynos4/pm-runtime.c
> >  delete mode 100644 arch/arm/plat-samsung/include/plat/pd.h
> >  delete mode 100644 arch/arm/plat-samsung/pd.c
> 
> The patchset looks good to me, but please note that some code it
> is based on will most likely change in 3.2 due to this patchset:
> 
> https://lkml.org/lkml/2011/8/8/420

Err, isn't all that pm_clk stuff just duplicating what the clk API does?
IOW, drivers _can_ (and should be) calling clk_disable() when they don't
need the clock running.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
  2011-08-13 21:36   ` Russell King - ARM Linux
@ 2011-08-13 23:39     ` Rafael J. Wysocki
  2011-10-02  7:07       ` Kukjin Kim
  0 siblings, 1 reply; 15+ messages in thread
From: Rafael J. Wysocki @ 2011-08-13 23:39 UTC (permalink / raw)
  To: linux-arm-kernel

On Saturday, August 13, 2011, Russell King - ARM Linux wrote:
> On Sat, Aug 13, 2011 at 11:24:07PM +0200, Rafael J. Wysocki wrote:
> > On Thursday, August 11, 2011, Chanwoo Choi wrote:
> > > The following patch set use the generic Power domain Framework instead of
> > > power domain code depend of Samsung SoC.
> > > 
> > > Chanwoo Choi (4):
> > >   ARM: EXYNOS4: Support for generic I/O power domains on EXYNOS4210
> > >   ARM: EXYNOS4: Support for generic Clock manipulation PM callbacks
> > >   ARM: EXYNOS4: Delete the power-domain code depend on Samsung SoC
> > >   ARM: EXYNOS4: Add power domain to use generic Power domain Framework
> > > 
> > >  arch/arm/mach-exynos4/Kconfig                      |   10 +-
> > >  arch/arm/mach-exynos4/Makefile                     |    4 +-
> > >  arch/arm/mach-exynos4/dev-pd.c                     |  139 --------------
> > >  arch/arm/mach-exynos4/include/mach/pm-exynos4210.h |   52 ++++++
> > >  arch/arm/mach-exynos4/include/mach/regs-clock.h    |    8 +
> > >  arch/arm/mach-exynos4/mach-nuri.c                  |   21 ++-
> > >  arch/arm/mach-exynos4/mach-smdkc210.c              |   26 ++-
> > >  arch/arm/mach-exynos4/mach-smdkv310.c              |   23 ++-
> > >  arch/arm/mach-exynos4/mach-universal_c210.c        |   21 ++-
> > >  arch/arm/mach-exynos4/pm-exynos4210.c              |  189 ++++++++++++++++++++
> > >  arch/arm/mach-exynos4/pm-runtime.c                 |   56 ++++++
> > >  arch/arm/plat-samsung/Kconfig                      |    8 -
> > >  arch/arm/plat-samsung/Makefile                     |    4 -
> > >  arch/arm/plat-samsung/include/plat/pd.h            |   30 ---
> > >  arch/arm/plat-samsung/pd.c                         |   95 ----------
> > >  15 files changed, 377 insertions(+), 309 deletions(-)
> > >  delete mode 100644 arch/arm/mach-exynos4/dev-pd.c
> > >  create mode 100644 arch/arm/mach-exynos4/include/mach/pm-exynos4210.h
> > >  create mode 100644 arch/arm/mach-exynos4/pm-exynos4210.c
> > >  create mode 100644 arch/arm/mach-exynos4/pm-runtime.c
> > >  delete mode 100644 arch/arm/plat-samsung/include/plat/pd.h
> > >  delete mode 100644 arch/arm/plat-samsung/pd.c
> > 
> > The patchset looks good to me, but please note that some code it
> > is based on will most likely change in 3.2 due to this patchset:
> > 
> > https://lkml.org/lkml/2011/8/8/420
> 
> Err, isn't all that pm_clk stuff just duplicating what the clk API does?

I'm not sure it's duplicating anything.  Maybe it does, but it came into
being by moving some code that were duplicated in a few places throughout
the ARM and sh trees into one place.

> IOW, drivers _can_ (and should be) calling clk_disable() when they don't
> need the clock running.

Drivers may not know about what to do in a given situation.  For example,
if the system has power domains, it may be better to switch a power domain
off instead of or in addition to disabling the clock and the driver usually
doesn't know about that.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
  2011-08-11  4:55 [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210 Chanwoo Choi
  2011-08-13 21:24 ` Rafael J. Wysocki
@ 2011-08-19 14:15 ` Kukjin Kim
  1 sibling, 0 replies; 15+ messages in thread
From: Kukjin Kim @ 2011-08-19 14:15 UTC (permalink / raw)
  To: linux-arm-kernel

Chanwoo Choi wrote:
> 
> The following patch set use the generic Power domain Framework instead of
> power domain code depend of Samsung SoC.
> 
> Chanwoo Choi (4):
>   ARM: EXYNOS4: Support for generic I/O power domains on EXYNOS4210
>   ARM: EXYNOS4: Support for generic Clock manipulation PM callbacks
>   ARM: EXYNOS4: Delete the power-domain code depend on Samsung SoC
>   ARM: EXYNOS4: Add power domain to use generic Power domain Framework
> 
>  arch/arm/mach-exynos4/Kconfig                      |   10 +-
>  arch/arm/mach-exynos4/Makefile                     |    4 +-
>  arch/arm/mach-exynos4/dev-pd.c                     |  139 --------------
>  arch/arm/mach-exynos4/include/mach/pm-exynos4210.h |   52 ++++++
>  arch/arm/mach-exynos4/include/mach/regs-clock.h    |    8 +
>  arch/arm/mach-exynos4/mach-nuri.c                  |   21 ++-
>  arch/arm/mach-exynos4/mach-smdkc210.c              |   26 ++-
>  arch/arm/mach-exynos4/mach-smdkv310.c              |   23 ++-
>  arch/arm/mach-exynos4/mach-universal_c210.c        |   21 ++-
>  arch/arm/mach-exynos4/pm-exynos4210.c              |  189
> ++++++++++++++++++++
>  arch/arm/mach-exynos4/pm-runtime.c                 |   56 ++++++
>  arch/arm/plat-samsung/Kconfig                      |    8 -
>  arch/arm/plat-samsung/Makefile                     |    4 -
>  arch/arm/plat-samsung/include/plat/pd.h            |   30 ---
>  arch/arm/plat-samsung/pd.c                         |   95 ----------
>  15 files changed, 377 insertions(+), 309 deletions(-)
>  delete mode 100644 arch/arm/mach-exynos4/dev-pd.c
>  create mode 100644 arch/arm/mach-exynos4/include/mach/pm-exynos4210.h
>  create mode 100644 arch/arm/mach-exynos4/pm-exynos4210.c
>  create mode 100644 arch/arm/mach-exynos4/pm-runtime.c
>  delete mode 100644 arch/arm/plat-samsung/include/plat/pd.h
>  delete mode 100644 arch/arm/plat-samsung/pd.c

Hi Chanwoo,

Basically looks ok.
I will review this in detail in the next week.
Then if no problems, will apply.

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
  2011-08-13 21:24 ` Rafael J. Wysocki
  2011-08-13 21:36   ` Russell King - ARM Linux
@ 2011-09-24 17:27   ` Sylwester Nawrocki
  1 sibling, 0 replies; 15+ messages in thread
From: Sylwester Nawrocki @ 2011-09-24 17:27 UTC (permalink / raw)
  To: linux-arm-kernel

On 08/13/2011 11:24 PM, Rafael J. Wysocki wrote:
> On Thursday, August 11, 2011, Chanwoo Choi wrote:
>> The following patch set use the generic Power domain Framework instead of
>> power domain code depend of Samsung SoC.
>>
>> Chanwoo Choi (4):
>>    ARM: EXYNOS4: Support for generic I/O power domains on EXYNOS4210
>>    ARM: EXYNOS4: Support for generic Clock manipulation PM callbacks
>>    ARM: EXYNOS4: Delete the power-domain code depend on Samsung SoC
>>    ARM: EXYNOS4: Add power domain to use generic Power domain Framework
>>
>>   arch/arm/mach-exynos4/Kconfig                      |   10 +-
>>   arch/arm/mach-exynos4/Makefile                     |    4 +-
>>   arch/arm/mach-exynos4/dev-pd.c                     |  139 --------------
>>   arch/arm/mach-exynos4/include/mach/pm-exynos4210.h |   52 ++++++
>>   arch/arm/mach-exynos4/include/mach/regs-clock.h    |    8 +
>>   arch/arm/mach-exynos4/mach-nuri.c                  |   21 ++-
>>   arch/arm/mach-exynos4/mach-smdkc210.c              |   26 ++-
>>   arch/arm/mach-exynos4/mach-smdkv310.c              |   23 ++-
>>   arch/arm/mach-exynos4/mach-universal_c210.c        |   21 ++-
>>   arch/arm/mach-exynos4/pm-exynos4210.c              |  189 ++++++++++++++++++++
>>   arch/arm/mach-exynos4/pm-runtime.c                 |   56 ++++++
>>   arch/arm/plat-samsung/Kconfig                      |    8 -
>>   arch/arm/plat-samsung/Makefile                     |    4 -
>>   arch/arm/plat-samsung/include/plat/pd.h            |   30 ---
>>   arch/arm/plat-samsung/pd.c                         |   95 ----------
>>   15 files changed, 377 insertions(+), 309 deletions(-)
>>   delete mode 100644 arch/arm/mach-exynos4/dev-pd.c
>>   create mode 100644 arch/arm/mach-exynos4/include/mach/pm-exynos4210.h
>>   create mode 100644 arch/arm/mach-exynos4/pm-exynos4210.c
>>   create mode 100644 arch/arm/mach-exynos4/pm-runtime.c
>>   delete mode 100644 arch/arm/plat-samsung/include/plat/pd.h
>>   delete mode 100644 arch/arm/plat-samsung/pd.c
> 
> The patchset looks good to me, but please note that some code it
> is based on will most likely change in 3.2 due to this patchset:
> 
> https://lkml.org/lkml/2011/8/8/420

Are we going to have this patch set in 3.2 ? Does it need more work
or is it already merged in someone's -next repository ?

--
Thanks,
Sylwester

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
  2011-08-13 23:39     ` Rafael J. Wysocki
@ 2011-10-02  7:07       ` Kukjin Kim
  2011-10-02 11:47         ` Rafael J. Wysocki
  2011-10-02 14:09         ` Sylwester Nawrocki
  0 siblings, 2 replies; 15+ messages in thread
From: Kukjin Kim @ 2011-10-02  7:07 UTC (permalink / raw)
  To: linux-arm-kernel

Rafael J. Wysocki wrote:
> 
> On Saturday, August 13, 2011, Russell King - ARM Linux wrote:
> > On Sat, Aug 13, 2011 at 11:24:07PM +0200, Rafael J. Wysocki wrote:
> > > On Thursday, August 11, 2011, Chanwoo Choi wrote:
> > > > The following patch set use the generic Power domain Framework
instead of
> > > > power domain code depend of Samsung SoC.
> > > >
> > > > Chanwoo Choi (4):
> > > >   ARM: EXYNOS4: Support for generic I/O power domains on EXYNOS4210
> > > >   ARM: EXYNOS4: Support for generic Clock manipulation PM callbacks
> > > >   ARM: EXYNOS4: Delete the power-domain code depend on Samsung SoC
> > > >   ARM: EXYNOS4: Add power domain to use generic Power domain
Framework
> > > >
> > > >  arch/arm/mach-exynos4/Kconfig                      |   10 +-
> > > >  arch/arm/mach-exynos4/Makefile                     |    4 +-
> > > >  arch/arm/mach-exynos4/dev-pd.c                     |  139
--------------
> > > >  arch/arm/mach-exynos4/include/mach/pm-exynos4210.h |   52 ++++++
> > > >  arch/arm/mach-exynos4/include/mach/regs-clock.h    |    8 +
> > > >  arch/arm/mach-exynos4/mach-nuri.c                  |   21 ++-
> > > >  arch/arm/mach-exynos4/mach-smdkc210.c              |   26 ++-
> > > >  arch/arm/mach-exynos4/mach-smdkv310.c              |   23 ++-
> > > >  arch/arm/mach-exynos4/mach-universal_c210.c        |   21 ++-
> > > >  arch/arm/mach-exynos4/pm-exynos4210.c              |  189
++++++++++++++++++++
> > > >  arch/arm/mach-exynos4/pm-runtime.c                 |   56 ++++++
> > > >  arch/arm/plat-samsung/Kconfig                      |    8 -
> > > >  arch/arm/plat-samsung/Makefile                     |    4 -
> > > >  arch/arm/plat-samsung/include/plat/pd.h            |   30 ---
> > > >  arch/arm/plat-samsung/pd.c                         |   95
----------
> > > >  15 files changed, 377 insertions(+), 309 deletions(-)
> > > >  delete mode 100644 arch/arm/mach-exynos4/dev-pd.c
> > > >  create mode 100644
arch/arm/mach-exynos4/include/mach/pm-exynos4210.h
> > > >  create mode 100644 arch/arm/mach-exynos4/pm-exynos4210.c
> > > >  create mode 100644 arch/arm/mach-exynos4/pm-runtime.c
> > > >  delete mode 100644 arch/arm/plat-samsung/include/plat/pd.h
> > > >  delete mode 100644 arch/arm/plat-samsung/pd.c
> > >
> > > The patchset looks good to me, but please note that some code it
> > > is based on will most likely change in 3.2 due to this patchset:
> > >
> > > https://lkml.org/lkml/2011/8/8/420
> >
> > Err, isn't all that pm_clk stuff just duplicating what the clk API does?
> 
> I'm not sure it's duplicating anything.  Maybe it does, but it came into
> being by moving some code that were duplicated in a few places throughout
> the ARM and sh trees into one place.
> 
> > IOW, drivers _can_ (and should be) calling clk_disable() when they don't
> > need the clock running.
> 
> Drivers may not know about what to do in a given situation.  For example,
> if the system has power domains, it may be better to switch a power domain
> off instead of or in addition to disabling the clock and the driver
usually
> doesn't know about that.
> 
Hmm... Even though each driver cannot know the given situation, the driver
can know each own clock should be alive or not. I think, if clock gating
(enable, disable clock) is required, it should be handled in each driver. In
addition, the clock and power are not always one-on-one match.

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
  2011-10-02  7:07       ` Kukjin Kim
@ 2011-10-02 11:47         ` Rafael J. Wysocki
  2011-10-02 11:48           ` Russell King - ARM Linux
  2011-10-02 14:09         ` Sylwester Nawrocki
  1 sibling, 1 reply; 15+ messages in thread
From: Rafael J. Wysocki @ 2011-10-02 11:47 UTC (permalink / raw)
  To: linux-arm-kernel

On Sunday, October 02, 2011, Kukjin Kim wrote:
> Rafael J. Wysocki wrote:
> > 
> > On Saturday, August 13, 2011, Russell King - ARM Linux wrote:
> > > On Sat, Aug 13, 2011 at 11:24:07PM +0200, Rafael J. Wysocki wrote:
> > > > On Thursday, August 11, 2011, Chanwoo Choi wrote:
> > > > > The following patch set use the generic Power domain Framework
> instead of
> > > > > power domain code depend of Samsung SoC.
> > > > >
> > > > > Chanwoo Choi (4):
> > > > >   ARM: EXYNOS4: Support for generic I/O power domains on EXYNOS4210
> > > > >   ARM: EXYNOS4: Support for generic Clock manipulation PM callbacks
> > > > >   ARM: EXYNOS4: Delete the power-domain code depend on Samsung SoC
> > > > >   ARM: EXYNOS4: Add power domain to use generic Power domain
> Framework
> > > > >
> > > > >  arch/arm/mach-exynos4/Kconfig                      |   10 +-
> > > > >  arch/arm/mach-exynos4/Makefile                     |    4 +-
> > > > >  arch/arm/mach-exynos4/dev-pd.c                     |  139
> --------------
> > > > >  arch/arm/mach-exynos4/include/mach/pm-exynos4210.h |   52 ++++++
> > > > >  arch/arm/mach-exynos4/include/mach/regs-clock.h    |    8 +
> > > > >  arch/arm/mach-exynos4/mach-nuri.c                  |   21 ++-
> > > > >  arch/arm/mach-exynos4/mach-smdkc210.c              |   26 ++-
> > > > >  arch/arm/mach-exynos4/mach-smdkv310.c              |   23 ++-
> > > > >  arch/arm/mach-exynos4/mach-universal_c210.c        |   21 ++-
> > > > >  arch/arm/mach-exynos4/pm-exynos4210.c              |  189
> ++++++++++++++++++++
> > > > >  arch/arm/mach-exynos4/pm-runtime.c                 |   56 ++++++
> > > > >  arch/arm/plat-samsung/Kconfig                      |    8 -
> > > > >  arch/arm/plat-samsung/Makefile                     |    4 -
> > > > >  arch/arm/plat-samsung/include/plat/pd.h            |   30 ---
> > > > >  arch/arm/plat-samsung/pd.c                         |   95
> ----------
> > > > >  15 files changed, 377 insertions(+), 309 deletions(-)
> > > > >  delete mode 100644 arch/arm/mach-exynos4/dev-pd.c
> > > > >  create mode 100644
> arch/arm/mach-exynos4/include/mach/pm-exynos4210.h
> > > > >  create mode 100644 arch/arm/mach-exynos4/pm-exynos4210.c
> > > > >  create mode 100644 arch/arm/mach-exynos4/pm-runtime.c
> > > > >  delete mode 100644 arch/arm/plat-samsung/include/plat/pd.h
> > > > >  delete mode 100644 arch/arm/plat-samsung/pd.c
> > > >
> > > > The patchset looks good to me, but please note that some code it
> > > > is based on will most likely change in 3.2 due to this patchset:
> > > >
> > > > https://lkml.org/lkml/2011/8/8/420
> > >
> > > Err, isn't all that pm_clk stuff just duplicating what the clk API does?
> > 
> > I'm not sure it's duplicating anything.  Maybe it does, but it came into
> > being by moving some code that were duplicated in a few places throughout
> > the ARM and sh trees into one place.
> > 
> > > IOW, drivers _can_ (and should be) calling clk_disable() when they don't
> > > need the clock running.
> > 
> > Drivers may not know about what to do in a given situation.  For example,
> > if the system has power domains, it may be better to switch a power domain
> > off instead of or in addition to disabling the clock and the driver
> usually
> > doesn't know about that.
> > 
> Hmm... Even though each driver cannot know the given situation, the driver
> can know each own clock should be alive or not. I think, if clock gating
> (enable, disable clock) is required, it should be handled in each driver. In
> addition, the clock and power are not always one-on-one match.

If the driver is to be portable and there's no guarantee that the
clocks configuration on all systems it's supposed to be working with will
always be the same, the driver shouldn't handle clocks directly.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
  2011-10-02 11:47         ` Rafael J. Wysocki
@ 2011-10-02 11:48           ` Russell King - ARM Linux
  2011-10-02 13:08             ` Rafael J. Wysocki
  0 siblings, 1 reply; 15+ messages in thread
From: Russell King - ARM Linux @ 2011-10-02 11:48 UTC (permalink / raw)
  To: linux-arm-kernel

On Sun, Oct 02, 2011 at 01:47:01PM +0200, Rafael J. Wysocki wrote:
> On Sunday, October 02, 2011, Kukjin Kim wrote:
> > Hmm... Even though each driver cannot know the given situation, the driver
> > can know each own clock should be alive or not. I think, if clock gating
> > (enable, disable clock) is required, it should be handled in each driver. In
> > addition, the clock and power are not always one-on-one match.
> 
> If the driver is to be portable and there's no guarantee that the
> clocks configuration on all systems it's supposed to be working with will
> always be the same, the driver shouldn't handle clocks directly.

How do these misconceptions start?

The clock API.  Drivers are supposed to get a clock (source) when they
initialize.  Drivers then enable and disable the clock as they _themselves_
require the use of that clock.

The clock enable is counted such that if there is at least one user of
the clock, it will be enabled.  It is not a forced 'off' when disable is
called - the number of enable calls must be balanced by the same number
of disable calls for the clock itself to be disabled.

Drivers are _expected_ to do this themselves.  Or the runtime PM stuff
if that's what they're doing.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
  2011-10-02 11:48           ` Russell King - ARM Linux
@ 2011-10-02 13:08             ` Rafael J. Wysocki
  2011-10-02 13:13               ` Russell King - ARM Linux
  0 siblings, 1 reply; 15+ messages in thread
From: Rafael J. Wysocki @ 2011-10-02 13:08 UTC (permalink / raw)
  To: linux-arm-kernel

On Sunday, October 02, 2011, Russell King - ARM Linux wrote:
> On Sun, Oct 02, 2011 at 01:47:01PM +0200, Rafael J. Wysocki wrote:
> > On Sunday, October 02, 2011, Kukjin Kim wrote:
> > > Hmm... Even though each driver cannot know the given situation, the driver
> > > can know each own clock should be alive or not. I think, if clock gating
> > > (enable, disable clock) is required, it should be handled in each driver. In
> > > addition, the clock and power are not always one-on-one match.
> > 
> > If the driver is to be portable and there's no guarantee that the
> > clocks configuration on all systems it's supposed to be working with will
> > always be the same, the driver shouldn't handle clocks directly.
> 
> How do these misconceptions start?
> 
> The clock API.  Drivers are supposed to get a clock (source) when they
> initialize.  Drivers then enable and disable the clock as they _themselves_
> require the use of that clock.

OK

Now think of a driver that should handle the same device on both ARM and
x86-based SoCs.  Is the clock API available on x86?

> The clock enable is counted such that if there is at least one user of
> the clock, it will be enabled.  It is not a forced 'off' when disable is
> called - the number of enable calls must be balanced by the same number
> of disable calls for the clock itself to be disabled.
> 
> Drivers are _expected_ to do this themselves.  Or the runtime PM stuff
> if that's what they're doing.

That I can agree with.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
  2011-10-02 13:08             ` Rafael J. Wysocki
@ 2011-10-02 13:13               ` Russell King - ARM Linux
  2011-10-02 18:00                 ` Rafael J. Wysocki
  0 siblings, 1 reply; 15+ messages in thread
From: Russell King - ARM Linux @ 2011-10-02 13:13 UTC (permalink / raw)
  To: linux-arm-kernel

On Sun, Oct 02, 2011 at 03:08:43PM +0200, Rafael J. Wysocki wrote:
> On Sunday, October 02, 2011, Russell King - ARM Linux wrote:
> > How do these misconceptions start?
> > 
> > The clock API.  Drivers are supposed to get a clock (source) when they
> > initialize.  Drivers then enable and disable the clock as they _themselves_
> > require the use of that clock.
> 
> OK
> 
> Now think of a driver that should handle the same device on both ARM and
> x86-based SoCs.  Is the clock API available on x86?

No one's bothered yet.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
  2011-10-02  7:07       ` Kukjin Kim
  2011-10-02 11:47         ` Rafael J. Wysocki
@ 2011-10-02 14:09         ` Sylwester Nawrocki
  2011-10-02 17:57           ` Rafael J. Wysocki
  1 sibling, 1 reply; 15+ messages in thread
From: Sylwester Nawrocki @ 2011-10-02 14:09 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/02/2011 09:07 AM, Kukjin Kim wrote:
> Rafael J. Wysocki wrote:
>>
>> On Saturday, August 13, 2011, Russell King - ARM Linux wrote:
>>> On Sat, Aug 13, 2011 at 11:24:07PM +0200, Rafael J. Wysocki wrote:
>>>> On Thursday, August 11, 2011, Chanwoo Choi wrote:
>>>>> The following patch set use the generic Power domain Framework
> instead of
>>>>> power domain code depend of Samsung SoC.
>>>>>
>>>>> Chanwoo Choi (4):
>>>>>    ARM: EXYNOS4: Support for generic I/O power domains on EXYNOS4210
>>>>>    ARM: EXYNOS4: Support for generic Clock manipulation PM callbacks
>>>>>    ARM: EXYNOS4: Delete the power-domain code depend on Samsung SoC
>>>>>    ARM: EXYNOS4: Add power domain to use generic Power domain
> Framework
>>>>>
>>>>>   arch/arm/mach-exynos4/Kconfig                      |   10 +-
>>>>>   arch/arm/mach-exynos4/Makefile                     |    4 +-
>>>>>   arch/arm/mach-exynos4/dev-pd.c                     |  139
> --------------
>>>>>   arch/arm/mach-exynos4/include/mach/pm-exynos4210.h |   52 ++++++
>>>>>   arch/arm/mach-exynos4/include/mach/regs-clock.h    |    8 +
>>>>>   arch/arm/mach-exynos4/mach-nuri.c                  |   21 ++-
>>>>>   arch/arm/mach-exynos4/mach-smdkc210.c              |   26 ++-
>>>>>   arch/arm/mach-exynos4/mach-smdkv310.c              |   23 ++-
>>>>>   arch/arm/mach-exynos4/mach-universal_c210.c        |   21 ++-
>>>>>   arch/arm/mach-exynos4/pm-exynos4210.c              |  189
> ++++++++++++++++++++
>>>>>   arch/arm/mach-exynos4/pm-runtime.c                 |   56 ++++++
>>>>>   arch/arm/plat-samsung/Kconfig                      |    8 -
>>>>>   arch/arm/plat-samsung/Makefile                     |    4 -
>>>>>   arch/arm/plat-samsung/include/plat/pd.h            |   30 ---
>>>>>   arch/arm/plat-samsung/pd.c                         |   95
> ----------
>>>>>   15 files changed, 377 insertions(+), 309 deletions(-)
>>>>>   delete mode 100644 arch/arm/mach-exynos4/dev-pd.c
>>>>>   create mode 100644
> arch/arm/mach-exynos4/include/mach/pm-exynos4210.h
>>>>>   create mode 100644 arch/arm/mach-exynos4/pm-exynos4210.c
>>>>>   create mode 100644 arch/arm/mach-exynos4/pm-runtime.c
>>>>>   delete mode 100644 arch/arm/plat-samsung/include/plat/pd.h
>>>>>   delete mode 100644 arch/arm/plat-samsung/pd.c
>>>>
>>>> The patchset looks good to me, but please note that some code it
>>>> is based on will most likely change in 3.2 due to this patchset:
>>>>
>>>> https://lkml.org/lkml/2011/8/8/420
>>>
>>> Err, isn't all that pm_clk stuff just duplicating what the clk API does?
>>
>> I'm not sure it's duplicating anything.  Maybe it does, but it came into
>> being by moving some code that were duplicated in a few places throughout
>> the ARM and sh trees into one place.
>>
>>> IOW, drivers _can_ (and should be) calling clk_disable() when they don't
>>> need the clock running.
>>
>> Drivers may not know about what to do in a given situation.  For example,
>> if the system has power domains, it may be better to switch a power domain
>> off instead of or in addition to disabling the clock and the driver
> usually
>> doesn't know about that.
>>
> Hmm... Even though each driver cannot know the given situation, the driver
> can know each own clock should be alive or not. I think, if clock gating
> (enable, disable clock) is required, it should be handled in each driver. In
> addition, the clock and power are not always one-on-one match.

AFAICS the genpd API doesn't for an architecture to move the clocks' control
out from drivers, it can be decided on individual basis for each clock. 
With Chanwoo's patches at least exynos power domains and global clock gates 
for devices (S5P_CLKGATE_BLOCK) are handled through the common API.

Also, it's not quite clear to me, can't the pm_clk_* calls be used by the drivers
to control the clocks as they need ?

Last time I looked at the genpd API, an important drawback was that pm_clk_suspend/
pm_clk_resume couldn't be used in interrupt context. Now it seems the mutexes in
the core functions has been replaced with spinlocks and such limitation is gone.

I'm considering using pm_clk* calls to implement clock gating in a video codec
driver. If, for instance, frame period is 30 ms and processing in the device takes
only 10 ms, significant power savings could be achieved by turning the clocks off
for the 20 ms idle period.  


--
Thanks, 
Sylwester

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
  2011-10-02 14:09         ` Sylwester Nawrocki
@ 2011-10-02 17:57           ` Rafael J. Wysocki
  0 siblings, 0 replies; 15+ messages in thread
From: Rafael J. Wysocki @ 2011-10-02 17:57 UTC (permalink / raw)
  To: linux-arm-kernel

On Sunday, October 02, 2011, Sylwester Nawrocki wrote:
> On 10/02/2011 09:07 AM, Kukjin Kim wrote:
> > Rafael J. Wysocki wrote:
> >>
> >> On Saturday, August 13, 2011, Russell King - ARM Linux wrote:
> >>> On Sat, Aug 13, 2011 at 11:24:07PM +0200, Rafael J. Wysocki wrote:
> >>>> On Thursday, August 11, 2011, Chanwoo Choi wrote:
> >>>>> The following patch set use the generic Power domain Framework
> > instead of
> >>>>> power domain code depend of Samsung SoC.
> >>>>>
> >>>>> Chanwoo Choi (4):
> >>>>>    ARM: EXYNOS4: Support for generic I/O power domains on EXYNOS4210
> >>>>>    ARM: EXYNOS4: Support for generic Clock manipulation PM callbacks
> >>>>>    ARM: EXYNOS4: Delete the power-domain code depend on Samsung SoC
> >>>>>    ARM: EXYNOS4: Add power domain to use generic Power domain
> > Framework
> >>>>>
> >>>>>   arch/arm/mach-exynos4/Kconfig                      |   10 +-
> >>>>>   arch/arm/mach-exynos4/Makefile                     |    4 +-
> >>>>>   arch/arm/mach-exynos4/dev-pd.c                     |  139
> > --------------
> >>>>>   arch/arm/mach-exynos4/include/mach/pm-exynos4210.h |   52 ++++++
> >>>>>   arch/arm/mach-exynos4/include/mach/regs-clock.h    |    8 +
> >>>>>   arch/arm/mach-exynos4/mach-nuri.c                  |   21 ++-
> >>>>>   arch/arm/mach-exynos4/mach-smdkc210.c              |   26 ++-
> >>>>>   arch/arm/mach-exynos4/mach-smdkv310.c              |   23 ++-
> >>>>>   arch/arm/mach-exynos4/mach-universal_c210.c        |   21 ++-
> >>>>>   arch/arm/mach-exynos4/pm-exynos4210.c              |  189
> > ++++++++++++++++++++
> >>>>>   arch/arm/mach-exynos4/pm-runtime.c                 |   56 ++++++
> >>>>>   arch/arm/plat-samsung/Kconfig                      |    8 -
> >>>>>   arch/arm/plat-samsung/Makefile                     |    4 -
> >>>>>   arch/arm/plat-samsung/include/plat/pd.h            |   30 ---
> >>>>>   arch/arm/plat-samsung/pd.c                         |   95
> > ----------
> >>>>>   15 files changed, 377 insertions(+), 309 deletions(-)
> >>>>>   delete mode 100644 arch/arm/mach-exynos4/dev-pd.c
> >>>>>   create mode 100644
> > arch/arm/mach-exynos4/include/mach/pm-exynos4210.h
> >>>>>   create mode 100644 arch/arm/mach-exynos4/pm-exynos4210.c
> >>>>>   create mode 100644 arch/arm/mach-exynos4/pm-runtime.c
> >>>>>   delete mode 100644 arch/arm/plat-samsung/include/plat/pd.h
> >>>>>   delete mode 100644 arch/arm/plat-samsung/pd.c
> >>>>
> >>>> The patchset looks good to me, but please note that some code it
> >>>> is based on will most likely change in 3.2 due to this patchset:
> >>>>
> >>>> https://lkml.org/lkml/2011/8/8/420
> >>>
> >>> Err, isn't all that pm_clk stuff just duplicating what the clk API does?
> >>
> >> I'm not sure it's duplicating anything.  Maybe it does, but it came into
> >> being by moving some code that were duplicated in a few places throughout
> >> the ARM and sh trees into one place.
> >>
> >>> IOW, drivers _can_ (and should be) calling clk_disable() when they don't
> >>> need the clock running.
> >>
> >> Drivers may not know about what to do in a given situation.  For example,
> >> if the system has power domains, it may be better to switch a power domain
> >> off instead of or in addition to disabling the clock and the driver
> > usually
> >> doesn't know about that.
> >>
> > Hmm... Even though each driver cannot know the given situation, the driver
> > can know each own clock should be alive or not. I think, if clock gating
> > (enable, disable clock) is required, it should be handled in each driver. In
> > addition, the clock and power are not always one-on-one match.
> 
> AFAICS the genpd API doesn't for an architecture to move the clocks' control
> out from drivers, it can be decided on individual basis for each clock.

That's correct.
 
> With Chanwoo's patches at least exynos power domains and global clock gates 
> for devices (S5P_CLKGATE_BLOCK) are handled through the common API.
> 
> Also, it's not quite clear to me, can't the pm_clk_* calls be used by the drivers
> to control the clocks as they need ?

Well, the idea is to use them as a driver's or subsystem's .runtime_suspend()
and .runtime_resume() callbacks, or a PM domain's .stop_device() and
.start_device() callbacks, but I don't see fundamental arguments against
calling them directly.

> Last time I looked at the genpd API, an important drawback was that pm_clk_suspend/
> pm_clk_resume couldn't be used in interrupt context. Now it seems the mutexes in
> the core functions has been replaced with spinlocks and such limitation is gone.

Yes, it is gone now.

> I'm considering using pm_clk* calls to implement clock gating in a video codec
> driver. If, for instance, frame period is 30 ms and processing in the device takes
> only 10 ms, significant power savings could be achieved by turning the clocks off
> for the 20 ms idle period.  

That sounds like a good idea.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
  2011-10-02 13:13               ` Russell King - ARM Linux
@ 2011-10-02 18:00                 ` Rafael J. Wysocki
  2011-10-03  3:27                   ` Kukjin Kim
  0 siblings, 1 reply; 15+ messages in thread
From: Rafael J. Wysocki @ 2011-10-02 18:00 UTC (permalink / raw)
  To: linux-arm-kernel

On Sunday, October 02, 2011, Russell King - ARM Linux wrote:
> On Sun, Oct 02, 2011 at 03:08:43PM +0200, Rafael J. Wysocki wrote:
> > On Sunday, October 02, 2011, Russell King - ARM Linux wrote:
> > > How do these misconceptions start?
> > > 
> > > The clock API.  Drivers are supposed to get a clock (source) when they
> > > initialize.  Drivers then enable and disable the clock as they _themselves_
> > > require the use of that clock.
> > 
> > OK
> > 
> > Now think of a driver that should handle the same device on both ARM and
> > x86-based SoCs.  Is the clock API available on x86?
> 
> No one's bothered yet.

Prehaps because x86 doesn't allow us to control device clocks directly.
They are controlled through PCI PM or through ACPI methods, both of which
hide the clocks behind abstract low-power states we're supposed to use.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
  2011-10-02 18:00                 ` Rafael J. Wysocki
@ 2011-10-03  3:27                   ` Kukjin Kim
  0 siblings, 0 replies; 15+ messages in thread
From: Kukjin Kim @ 2011-10-03  3:27 UTC (permalink / raw)
  To: linux-arm-kernel

Rafael J. Wysocki wrote:
> 
> On Sunday, October 02, 2011, Russell King - ARM Linux wrote:
> > On Sun, Oct 02, 2011 at 03:08:43PM +0200, Rafael J. Wysocki wrote:
> > > On Sunday, October 02, 2011, Russell King - ARM Linux wrote:
> > > > How do these misconceptions start?
> > > >
> > > > The clock API.  Drivers are supposed to get a clock (source) when
they
> > > > initialize.  Drivers then enable and disable the clock as they
_themselves_
> > > > require the use of that clock.
> > >
> > > OK
> > >
> > > Now think of a driver that should handle the same device on both ARM
and
> > > x86-based SoCs.  Is the clock API available on x86?
> >
> > No one's bothered yet.
> 
> Prehaps because x86 doesn't allow us to control device clocks directly.
> They are controlled through PCI PM or through ACPI methods, both of which
> hide the clocks behind abstract low-power states we're supposed to use.
> 
Well, I think Embedded drivers especially ARM sometimes need to control its
own clock directly and each embedded drivers know when clock controlling is
required or not. Actually, Samsung driver stuff have calling clk_enable() in
probe() or open() and clk_disable() when clock is not needed more. But I'm
not sure we _really_ can get some benefits when matching clock and power
control on ARM devices.

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2011-10-03  3:27 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-11  4:55 [PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210 Chanwoo Choi
2011-08-13 21:24 ` Rafael J. Wysocki
2011-08-13 21:36   ` Russell King - ARM Linux
2011-08-13 23:39     ` Rafael J. Wysocki
2011-10-02  7:07       ` Kukjin Kim
2011-10-02 11:47         ` Rafael J. Wysocki
2011-10-02 11:48           ` Russell King - ARM Linux
2011-10-02 13:08             ` Rafael J. Wysocki
2011-10-02 13:13               ` Russell King - ARM Linux
2011-10-02 18:00                 ` Rafael J. Wysocki
2011-10-03  3:27                   ` Kukjin Kim
2011-10-02 14:09         ` Sylwester Nawrocki
2011-10-02 17:57           ` Rafael J. Wysocki
2011-09-24 17:27   ` Sylwester Nawrocki
2011-08-19 14:15 ` Kukjin Kim

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).