[PATCH 0/4] ARM: EXYNOS4: Support generic Power domain framework for EXYNOS4210
Rafael J. Wysocki
rjw at sisk.pl
Sun Oct 2 13:57:58 EDT 2011
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
More information about the linux-arm-kernel
mailing list