mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v12 0/3] ARM: rk3288: Add PM Domain support
@ 2014-11-17  9:35 Caesar Wang
  0 siblings, 0 replies; 4+ messages in thread
From: Caesar Wang @ 2014-11-17  9:35 UTC (permalink / raw)
  To: linus.walleij, linux-arm-kernel, Heiko Stuebner, Russell King
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Grant Likely, linux-kernel, devicetree, Randy Dunlap, linux-doc,
	dianders, linux-rockchip, Ulf Hansson, Dmitry Torokhov, fzf, cf,
	caesar.wang, chris.zhong, xxm, chm, djkurtz, jinkun.hong,
	Jack Dai

    Add power domain drivers based on generic power domain for
    Rockchip platform, and support RK3288.

    https://chromium-review.googlesource.com/#/c/220253/9
    This is the GPU driver, add the following information in DT,
    and it can support the PMDOMAIN

gpu: gpu@ffa30000 {
    compatible = "arm,malit764",
                 "arm,malit76x",
                 "arm,malit7xx",
                 "arm,mali-midgard";
    reg = <0xffa30000 0x10000>;
    interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
                 <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
                 <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
    interrupt-names = "JOB", "MMU", "GPU";
    clocks = <&cru ACLK_GPU>;
    clock-names = "aclk_gpu";
    operating-points = <
                /* KHz uV */
                100000 800000
                200000 850000
                300000 950000
                400000 1000000
                600000 1150000
    >;
    power-domains = <&power RK3288_PD_GPU>;
    status = "disabled";
};

Based on:
    - [PATCH v4 1/3] PM / clock_ops: Add pm_clk_add_clk()
    http://patchwork.kernel.org/patch/5242121/

Changes in v12:
    - fix the title doamin->domain.
    - updated device_attach and device_detach API,otherwise it will compile
      fail on next kernel.
    - Remove essential clocks from rk3288 PD_VIO domain,
      Some clocks are essential for the system health and should not be
      turned down. However there is no owner for them so if they listed as
      belonging to power domain we'll try toggling them up and down during
      power domain transition. As a result we either fail to suspend or resume
      the system.

Changes in v11:
    - fix pm_genpd_init(&pd->genpd, NULL, false);

Changes in v10:
    - this switches over domain infos to use masks instead of recomputing
      them each time and also gets rid of custom domain translator and
      uses standard onecell on.
    - fix missing the #include <dt-bindings/power-domain/rk3288.h>
    - remove the notes

Changes in v9:
    - add document decription
    - fix v8 changes as follows:
    - This reconciles the v2 and v7 code so that we power domain have
      lists of clocks they toggle on and off during power transitions and
      independently from power domains clocks we attach clocks to devices
      comprising power domain and prepare them so they are turn on and off
      by runtime PM.
    - add rockchip_pm_add_one_domain() to control domains.
    - add pd_start/pd_stop interface to control clocks
    - add decription for power-doamin node

Changes in v8:
    - document go back to v2
    - This reconciles the v2 and v7 code so that we power domain have
      lists of clocks they toggle on and off during power transitions and
      independently from power domains clocks we attach clocks to devices
      comprising power domain and prepare them so they are turn on and off
      by runtime PM.
    - DTS go back to v2

Changes in v7:
    - Delete unused variables

Changes in v6:
    - delete pmu_lock
    - modify dev_lock using mutex
    - pm_clk_resume(pd->dev) change to pm_clk_resume(ed->dev)
    - pm_clk_suspend(pd->dev) change to pm_clk_suspend(ed->dev)
    - add devm_kfree(pd->dev, de) in rockchip_pm_domain_detach_dev

Changes in v5:
    - delete idle_lock
    - add timeout in rockchip_pmu_set_idle_request()

Changes in v4:
    - use list storage dev

Changes in v3:
    - DT structure has changed
    - change use pm_clk_resume() and pm_clk_suspend()
    - Decomposition power-controller, changed to multiple controller
    (gpu-power-controller, hevc-power-controller)

Changes in v2:
    - move clocks to "optional"
    - remove the "pd->pd.of_node = np"
    - make pd_vio clocks all one entry per line and alphabetize.
    - power: power-controller move back to pinctrl: pinctrl.

Caesar Wang (3):
  dt-bindings: add document of Rockchip power domain
  power-domain: rockchip: add power domain driver
  ARM: dts: add rk3288 power-domain node

 .../bindings/arm/rockchip/power_domain.txt         |  48 +++
 arch/arm/boot/dts/rk3288.dtsi                      |  59 +++
 arch/arm/mach-rockchip/Kconfig                     |   1 +
 arch/arm/mach-rockchip/Makefile                    |   1 +
 arch/arm/mach-rockchip/pm_domains.c                | 472 +++++++++++++++++++++
 include/dt-bindings/power-domain/rk3288.h          |  11 +
 6 files changed, 592 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/rockchip/power_domain.txt
 create mode 100644 arch/arm/mach-rockchip/pm_domains.c
 create mode 100644 include/dt-bindings/power-domain/rk3288.h

-- 
1.9.1



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

* Re: [PATCH v12 0/3] ARM: rk3288: Add PM Domain support
  2014-11-28  9:57 ` Heiko Stübner
@ 2014-12-01 14:57   ` Tomasz Figa
  0 siblings, 0 replies; 4+ messages in thread
From: Tomasz Figa @ 2014-12-01 14:57 UTC (permalink / raw)
  To: Heiko Stübner
  Cc: Caesar Wang, khilman, linus.walleij, linux-arm-kernel,
	Russell King, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, Grant Likely, linux-kernel, devicetree,
	Randy Dunlap, linux-doc, dianders, linux-rockchip, Ulf Hansson,
	Dmitry Torokhov, fzf, cf, chris.zhong, xxm, chm, djkurtz,
	jinkun.hong, Jack Dai

On Fri, Nov 28, 2014 at 6:57 PM, Heiko Stübner <heiko@sntech.de> wrote:
>
> Am Montag, 17. November 2014, 17:50:38 schrieb Caesar Wang:
> >     Add power domain drivers based on generic power domain for
> >     Rockchip platform, and support RK3288.
> >
> >     https://chromium-review.googlesource.com/#/c/220253/9
> >     This is the GPU driver, add the following information in DT,
> >     and it can support the PMDOMAIN
>
> I'm not sure what to do with this series. Kevin had concerns about the clocks
> being part of the power-domains and I don't see them actually addressed and/or
> Kevin being satisfied - actually he isn't even on the recipients list of this
> version of the series.
>
>
> @Ceasar: you should include people being part of important previous
> conversations in new versions of patchsets - especially when they have voiced
> concerns.
>
>
> I've added Tomasz whom I remember having previous experience on the Exynos
> Powerdomains, so maybe he can add some other perspective - new ideas.
>

Thanks Heiko for adding me to this thread.

>
> @Tomasz: this is the part of Kevin's concerns from v10 of the powerdomain
> series:
>
> Am Donnerstag, 13. November 2014, 12:24:47 schrieben Kevin Hilman:
> > Heiko Stübner <heiko@sntech.de> writes:
> > > Am Dienstag, 11. November 2014, 08:53:13 schrieb Kevin Hilman:
> > >> I still don't like having lists of clocks in the power-domain DT.
> > >>
> > >> DT is supposed to describe the hardware, and clocks are properties of
> > >> devices, not power-domains, so the DT description should follow from
> > >> that.
> > >
> > > on the policy side one could argue that if the clock needs to be enabled
> > > to
> > > achieve sucessful domain state-changes, that it is also a property of the
> > > domain itself in addition to the device.
> >
> > You could, but from a hardware perspective, the clock is a property of
> > the device.
> >

Well, the system controller which control the power domains is also a
device. In DT we do not represent the domains alone, but rather the
system controller, which acts as a power domain provider. If it need
certain clocks to do its work, then I believe it should have them
listed in its node. However the dependencies between clocks and power
domains are not clear to me either, so I don't have any strong opinion
on whether this would be the best solution.

> > > And on the pratical side we don't have drivers nor bindings for a big part
> > > of the domain users - and this will probably be true for quite some time.
> > > This of course makes it very impractical (or impossible) to collect the
> > > clocks for parts like the gpu (mali), hevc, vcodec (video
> > > encoder/decoder), rga (2d stuff), iep, isp.
> >
> > This doesn't sound impossible at all.
> >
> > You have to collect the clocks anyways.  The only debate is whether to
> > list them in the device node or the power-domain node.
> >
> > Even for devices without drivers, you just need a minimal node in the DT if
> > which lists the clocks and has a phandle to the parent power domain.
> >
> > Sounds rather simple to me, and since the DT is supposed to describe the
> > hardware, doing it this way makes looking at the DT actually help
> > understand the hardware.
>

If the dependency between clocks and power domain is kind of "all
clocks of all devices in this domain should be enabled when performing
operation on the domain" then IMHO it should be more reasonable to put
the clocks only in nodes of respective devices and then follow the
links from the domain to devices inside of it and retrieve the clocks
from there, so that they don't have to be duplicated. AFAIK, we don't
like redundancy in DT.

Best regards,
Tomasz

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

* Re: [PATCH v12 0/3] ARM: rk3288: Add PM Domain support
  2014-11-17  9:50 Caesar Wang
@ 2014-11-28  9:57 ` Heiko Stübner
  2014-12-01 14:57   ` Tomasz Figa
  0 siblings, 1 reply; 4+ messages in thread
From: Heiko Stübner @ 2014-11-28  9:57 UTC (permalink / raw)
  To: Caesar Wang, khilman, tfiga
  Cc: linus.walleij, linux-arm-kernel, Russell King, Rob Herring,
	Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Grant Likely,
	linux-kernel, devicetree, Randy Dunlap, linux-doc, dianders,
	linux-rockchip, Ulf Hansson, Dmitry Torokhov, fzf, cf,
	chris.zhong, xxm, chm, djkurtz, jinkun.hong, Jack Dai

Am Montag, 17. November 2014, 17:50:38 schrieb Caesar Wang:
>     Add power domain drivers based on generic power domain for
>     Rockchip platform, and support RK3288.
> 
>     https://chromium-review.googlesource.com/#/c/220253/9
>     This is the GPU driver, add the following information in DT,
>     and it can support the PMDOMAIN

I'm not sure what to do with this series. Kevin had concerns about the clocks 
being part of the power-domains and I don't see them actually addressed and/or 
Kevin being satisfied - actually he isn't even on the recipients list of this 
version of the series.


@Ceasar: you should include people being part of important previous 
conversations in new versions of patchsets - especially when they have voiced 
concerns.


I've added Tomasz whom I remember having previous experience on the Exynos 
Powerdomains, so maybe he can add some other perspective - new ideas.


@Tomasz: this is the part of Kevin's concerns from v10 of the powerdomain 
series:

Am Donnerstag, 13. November 2014, 12:24:47 schrieben Kevin Hilman:
> Heiko Stübner <heiko@sntech.de> writes:
> > Am Dienstag, 11. November 2014, 08:53:13 schrieb Kevin Hilman:
> >> I still don't like having lists of clocks in the power-domain DT.
> >> 
> >> DT is supposed to describe the hardware, and clocks are properties of
> >> devices, not power-domains, so the DT description should follow from
> >> that.
> > 
> > on the policy side one could argue that if the clock needs to be enabled
> > to
> > achieve sucessful domain state-changes, that it is also a property of the
> > domain itself in addition to the device.
> 
> You could, but from a hardware perspective, the clock is a property of
> the device.
> 
> > And on the pratical side we don't have drivers nor bindings for a big part
> > of the domain users - and this will probably be true for quite some time.
> > This of course makes it very impractical (or impossible) to collect the
> > clocks for parts like the gpu (mali), hevc, vcodec (video
> > encoder/decoder), rga (2d stuff), iep, isp.
> 
> This doesn't sound impossible at all.
> 
> You have to collect the clocks anyways.  The only debate is whether to
> list them in the device node or the power-domain node.
> 
> Even for devices without drivers, you just need a minimal node in the DT if
> which lists the clocks and has a phandle to the parent power domain.
> 
> Sounds rather simple to me, and since the DT is supposed to describe the
> hardware, doing it this way makes looking at the DT actually help
> understand the hardware.


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

* [PATCH v12 0/3] ARM: rk3288: Add PM Domain support
@ 2014-11-17  9:50 Caesar Wang
  2014-11-28  9:57 ` Heiko Stübner
  0 siblings, 1 reply; 4+ messages in thread
From: Caesar Wang @ 2014-11-17  9:50 UTC (permalink / raw)
  To: linus.walleij, linux-arm-kernel, Heiko Stuebner, Russell King
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Grant Likely, linux-kernel, devicetree, Randy Dunlap, linux-doc,
	dianders, linux-rockchip, Ulf Hansson, Dmitry Torokhov, fzf, cf,
	caesar.wang, chris.zhong, xxm, chm, djkurtz, jinkun.hong,
	Jack Dai

    Add power domain drivers based on generic power domain for
    Rockchip platform, and support RK3288.

    https://chromium-review.googlesource.com/#/c/220253/9
    This is the GPU driver, add the following information in DT,
    and it can support the PMDOMAIN

gpu: gpu@ffa30000 {
    compatible = "arm,malit764",
                 "arm,malit76x",
                 "arm,malit7xx",
                 "arm,mali-midgard";
    reg = <0xffa30000 0x10000>;
    interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
                 <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
                 <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
    interrupt-names = "JOB", "MMU", "GPU";
    clocks = <&cru ACLK_GPU>;
    clock-names = "aclk_gpu";
    operating-points = <
                /* KHz uV */
                100000 800000
                200000 850000
                300000 950000
                400000 1000000
                600000 1150000
    >;
    power-domains = <&power RK3288_PD_GPU>;
    status = "disabled";
};

Based on:
    - [PATCH v4 1/3] PM / clock_ops: Add pm_clk_add_clk()
    http://patchwork.kernel.org/patch/5242121/

Changes in v12:
    - fix the title doamin->domain.
    - updated device_attach and device_detach API,otherwise it will compile
      fail on next kernel.
    - Remove essential clocks from rk3288 PD_VIO domain,
      Some clocks are essential for the system health and should not be
      turned down. However there is no owner for them so if they listed as
      belonging to power domain we'll try toggling them up and down during
      power domain transition. As a result we either fail to suspend or resume
      the system.

Changes in v11:
    - fix pm_genpd_init(&pd->genpd, NULL, false);

Changes in v10:
    - this switches over domain infos to use masks instead of recomputing
      them each time and also gets rid of custom domain translator and
      uses standard onecell on.
    - fix missing the #include <dt-bindings/power-domain/rk3288.h>
    - remove the notes

Changes in v9:
    - add document decription
    - fix v8 changes as follows:
    - This reconciles the v2 and v7 code so that we power domain have
      lists of clocks they toggle on and off during power transitions and
      independently from power domains clocks we attach clocks to devices
      comprising power domain and prepare them so they are turn on and off
      by runtime PM.
    - add rockchip_pm_add_one_domain() to control domains.
    - add pd_start/pd_stop interface to control clocks
    - add decription for power-doamin node

Changes in v8:
    - document go back to v2
    - This reconciles the v2 and v7 code so that we power domain have
      lists of clocks they toggle on and off during power transitions and
      independently from power domains clocks we attach clocks to devices
      comprising power domain and prepare them so they are turn on and off
      by runtime PM.
    - DTS go back to v2

Changes in v7:
    - Delete unused variables

Changes in v6:
    - delete pmu_lock
    - modify dev_lock using mutex
    - pm_clk_resume(pd->dev) change to pm_clk_resume(ed->dev)
    - pm_clk_suspend(pd->dev) change to pm_clk_suspend(ed->dev)
    - add devm_kfree(pd->dev, de) in rockchip_pm_domain_detach_dev

Changes in v5:
    - delete idle_lock
    - add timeout in rockchip_pmu_set_idle_request()

Changes in v4:
    - use list storage dev

Changes in v3:
    - DT structure has changed
    - change use pm_clk_resume() and pm_clk_suspend()
    - Decomposition power-controller, changed to multiple controller
    (gpu-power-controller, hevc-power-controller)

Changes in v2:
    - move clocks to "optional"
    - remove the "pd->pd.of_node = np"
    - make pd_vio clocks all one entry per line and alphabetize.
    - power: power-controller move back to pinctrl: pinctrl.

Caesar Wang (3):
  dt-bindings: add document of Rockchip power domain
  power-domain: rockchip: add power domain driver
  ARM: dts: add rk3288 power-domain node

 .../bindings/arm/rockchip/power_domain.txt         |  48 +++
 arch/arm/boot/dts/rk3288.dtsi                      |  59 +++
 arch/arm/mach-rockchip/Kconfig                     |   1 +
 arch/arm/mach-rockchip/Makefile                    |   1 +
 arch/arm/mach-rockchip/pm_domains.c                | 472 +++++++++++++++++++++
 include/dt-bindings/power-domain/rk3288.h          |  11 +
 6 files changed, 592 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/rockchip/power_domain.txt
 create mode 100644 arch/arm/mach-rockchip/pm_domains.c
 create mode 100644 include/dt-bindings/power-domain/rk3288.h

-- 
1.9.1



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

end of thread, other threads:[~2014-12-01 15:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-17  9:35 [PATCH v12 0/3] ARM: rk3288: Add PM Domain support Caesar Wang
2014-11-17  9:50 Caesar Wang
2014-11-28  9:57 ` Heiko Stübner
2014-12-01 14:57   ` Tomasz Figa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®