Re: [PATCHv4 11/15] omap3+: voltage/pwrdm/clkdm/clock add recursive usecount tracking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Tero,

On Fri, Nov 25, 2011 at 4:49 PM, Tero Kristo <t-kristo@xxxxxx> wrote:
> This patch fixes the usecount tracking for omap3+, previously the
> usecount numbers were rather bogus and were not really useful for
> any purpose. Now usecount numbers track the number of really active
> clients on each domain. This patch also adds support for usecount
> tracking on powerdomain and voltagedomain levels.
>
> Signed-off-by: Tero Kristo <t-kristo@xxxxxx>
> ---
>  arch/arm/mach-omap2/clkt_iclk.c         |   11 +++++++++
>  arch/arm/mach-omap2/clockdomain.c       |   38 +++++++++++++++++++++++++++++-
>  arch/arm/mach-omap2/clockdomain.h       |    3 ++
>  arch/arm/mach-omap2/powerdomain.c       |   12 +++++++++
>  arch/arm/mach-omap2/powerdomain.h       |    5 ++++
>  arch/arm/mach-omap2/voltage.c           |   30 ++++++++++++++++++++++++
>  arch/arm/mach-omap2/voltage.h           |    7 +++++
>  arch/arm/plat-omap/clock.c              |    2 +
>  arch/arm/plat-omap/include/plat/clock.h |    1 +
>  9 files changed, 107 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/clkt_iclk.c b/arch/arm/mach-omap2/clkt_iclk.c
> index 3d43fba..8e61776 100644
> --- a/arch/arm/mach-omap2/clkt_iclk.c
> +++ b/arch/arm/mach-omap2/clkt_iclk.c
> @@ -21,6 +21,7 @@
>  #include "clock2xxx.h"
>  #include "cm2xxx_3xxx.h"
>  #include "cm-regbits-24xx.h"
> +#include "clockdomain.h"
>
>  /* Private functions */
>
> @@ -34,6 +35,11 @@ void omap2_clkt_iclk_allow_idle(struct clk *clk)
>        v = __raw_readl((__force void __iomem *)r);
>        v |= (1 << clk->enable_bit);
>        __raw_writel(v, (__force void __iomem *)r);
> +
> +       if (clk->usecount && clk->clkdm)
> +               clkdm_usecount_dec(clk->clkdm);
Is the test on clk->usecount needed? Is that a problem when usecount reaches 0?

> +
> +       clk->autoidle = 1;
>  }
>
>  /* XXX */
> @@ -46,6 +52,11 @@ void omap2_clkt_iclk_deny_idle(struct clk *clk)
>        v = __raw_readl((__force void __iomem *)r);
>        v &= ~(1 << clk->enable_bit);
>        __raw_writel(v, (__force void __iomem *)r);
> +
> +       if (clk->usecount && clk->clkdm)
> +               clkdm_usecount_inc(clk->clkdm);
Same here.

> +
> +       clk->autoidle = 0;
>  }
>
>  /* Public data */
...

Regards,
Jean
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux