From: Rajendra Nayak <rnayak@ti.com> To: Tero Kristo <t-kristo@ti.com> Cc: linux-omap@vger.kernel.org, paul@pwsan.com, khilman@ti.com, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCHv4 1/8] ARM: OMAP: clk: add support for omap_clk_for_each Date: Mon, 16 Jul 2012 15:34:39 +0530 [thread overview] Message-ID: <5003E737.60406@ti.com> (raw) In-Reply-To: <1342189185-5306-2-git-send-email-t-kristo@ti.com> On Friday 13 July 2012 07:49 PM, Tero Kristo wrote: > This works similarly to e.g. pwrdm_for_each(). Needed by enhanced > usecounting debug functionality that will be added to pm-debug. OMAP clock framework has its own debugfs entry (/debug/clock) to expose usecounts for clocks, so does the COMMON clock framework (/debug/clk). Maybe there isn't one which dumps usecounts for the complete tree, instead there is one per each clock node. I agree having a complete dump of the clock tree usecounts can be useful, but can we keep it in /debug/clock for now? The reason I am saying this is because once we move from OMAP clock to COMMON clock, something like what 'omap_clk_for_each' does will not be possible anyway. We might have to add the support for dumping complete tree usecounts into the COMMON clock core. > > Signed-off-by: Tero Kristo<t-kristo@ti.com> > Cc: Paul Walmsley<paul@pwsan.com> > Cc: Kevin Hilman<khilman@ti.com> > --- > arch/arm/plat-omap/clock.c | 33 +++++++++++++++++++++++++++++++ > arch/arm/plat-omap/include/plat/clock.h | 2 + > 2 files changed, 35 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c > index 706b7e2..ad9dc59 100644 > --- a/arch/arm/plat-omap/clock.c > +++ b/arch/arm/plat-omap/clock.c > @@ -355,6 +355,39 @@ int omap_clk_enable_autoidle_all(void) > return 0; > } > > +/** > + * omap_clk_for_each - call a function for each registered clock > + * @fn: pointer to callback function > + * @data: void * data to pass to callback function > + * > + * Call @fn for each registered clock, passing @data to each function. > + * @fn must return 0 for success or any other value for failure. If > + * @fn returns non-zero, the iteration across clocks will stop and > + * the non-zero return value will be passed to the caller of > + * omap_clk_for_each(). @fn is called with clockfw_lock held. > + */ > +int omap_clk_for_each(int (*fn)(struct clk *clk, void *user), void *user) > +{ > + struct clk *c; > + unsigned long flags; > + int ret = 0; > + > + if (!fn) > + return -EINVAL; > + > + spin_lock_irqsave(&clockfw_lock, flags); > + > + list_for_each_entry(c,&clocks, node) { > + ret = fn(c, user); > + if (ret) > + break; > + } > + > + spin_unlock_irqrestore(&clockfw_lock, flags); > + > + return ret; > +} > + > int omap_clk_disable_autoidle_all(void) > { > struct clk *c; > diff --git a/arch/arm/plat-omap/include/plat/clock.h b/arch/arm/plat-omap/include/plat/clock.h > index d0ef57c..998947e 100644 > --- a/arch/arm/plat-omap/include/plat/clock.h > +++ b/arch/arm/plat-omap/include/plat/clock.h > @@ -294,6 +294,8 @@ extern void propagate_rate(struct clk *clk); > extern void recalculate_root_clocks(void); > extern unsigned long followparent_recalc(struct clk *clk); > extern void clk_enable_init_clocks(void); > +extern int omap_clk_for_each(int (*fn)(struct clk *clk, void *user), > + void *user); > unsigned long omap_fixed_divisor_recalc(struct clk *clk); > extern struct clk *omap_clk_get_by_name(const char *name); > extern int omap_clk_enable_autoidle_all(void);
WARNING: multiple messages have this Message-ID (diff)
From: rnayak@ti.com (Rajendra Nayak) To: linux-arm-kernel@lists.infradead.org Subject: [PATCHv4 1/8] ARM: OMAP: clk: add support for omap_clk_for_each Date: Mon, 16 Jul 2012 15:34:39 +0530 [thread overview] Message-ID: <5003E737.60406@ti.com> (raw) In-Reply-To: <1342189185-5306-2-git-send-email-t-kristo@ti.com> On Friday 13 July 2012 07:49 PM, Tero Kristo wrote: > This works similarly to e.g. pwrdm_for_each(). Needed by enhanced > usecounting debug functionality that will be added to pm-debug. OMAP clock framework has its own debugfs entry (/debug/clock) to expose usecounts for clocks, so does the COMMON clock framework (/debug/clk). Maybe there isn't one which dumps usecounts for the complete tree, instead there is one per each clock node. I agree having a complete dump of the clock tree usecounts can be useful, but can we keep it in /debug/clock for now? The reason I am saying this is because once we move from OMAP clock to COMMON clock, something like what 'omap_clk_for_each' does will not be possible anyway. We might have to add the support for dumping complete tree usecounts into the COMMON clock core. > > Signed-off-by: Tero Kristo<t-kristo@ti.com> > Cc: Paul Walmsley<paul@pwsan.com> > Cc: Kevin Hilman<khilman@ti.com> > --- > arch/arm/plat-omap/clock.c | 33 +++++++++++++++++++++++++++++++ > arch/arm/plat-omap/include/plat/clock.h | 2 + > 2 files changed, 35 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c > index 706b7e2..ad9dc59 100644 > --- a/arch/arm/plat-omap/clock.c > +++ b/arch/arm/plat-omap/clock.c > @@ -355,6 +355,39 @@ int omap_clk_enable_autoidle_all(void) > return 0; > } > > +/** > + * omap_clk_for_each - call a function for each registered clock > + * @fn: pointer to callback function > + * @data: void * data to pass to callback function > + * > + * Call @fn for each registered clock, passing @data to each function. > + * @fn must return 0 for success or any other value for failure. If > + * @fn returns non-zero, the iteration across clocks will stop and > + * the non-zero return value will be passed to the caller of > + * omap_clk_for_each(). @fn is called with clockfw_lock held. > + */ > +int omap_clk_for_each(int (*fn)(struct clk *clk, void *user), void *user) > +{ > + struct clk *c; > + unsigned long flags; > + int ret = 0; > + > + if (!fn) > + return -EINVAL; > + > + spin_lock_irqsave(&clockfw_lock, flags); > + > + list_for_each_entry(c,&clocks, node) { > + ret = fn(c, user); > + if (ret) > + break; > + } > + > + spin_unlock_irqrestore(&clockfw_lock, flags); > + > + return ret; > +} > + > int omap_clk_disable_autoidle_all(void) > { > struct clk *c; > diff --git a/arch/arm/plat-omap/include/plat/clock.h b/arch/arm/plat-omap/include/plat/clock.h > index d0ef57c..998947e 100644 > --- a/arch/arm/plat-omap/include/plat/clock.h > +++ b/arch/arm/plat-omap/include/plat/clock.h > @@ -294,6 +294,8 @@ extern void propagate_rate(struct clk *clk); > extern void recalculate_root_clocks(void); > extern unsigned long followparent_recalc(struct clk *clk); > extern void clk_enable_init_clocks(void); > +extern int omap_clk_for_each(int (*fn)(struct clk *clk, void *user), > + void *user); > unsigned long omap_fixed_divisor_recalc(struct clk *clk); > extern struct clk *omap_clk_get_by_name(const char *name); > extern int omap_clk_enable_autoidle_all(void);
next prev parent reply other threads:[~2012-07-16 10:04 UTC|newest] Thread overview: 92+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-07-13 14:19 [PATCHv4 0/8] ARM: OMAP: pm: usecounting changes Tero Kristo 2012-07-13 14:19 ` Tero Kristo 2012-07-13 14:19 ` [PATCHv4 1/8] ARM: OMAP: clk: add support for omap_clk_for_each Tero Kristo 2012-07-13 14:19 ` Tero Kristo 2012-07-16 10:04 ` Rajendra Nayak [this message] 2012-07-16 10:04 ` Rajendra Nayak 2012-07-16 11:42 ` Tero Kristo 2012-07-16 11:42 ` Tero Kristo 2012-07-13 14:19 ` [PATCHv4 2/8] ARM: OMAP3+: voltage/pwrdm/clkdm/clock add recursive usecount tracking Tero Kristo 2012-07-13 14:19 ` Tero Kristo 2012-07-16 10:15 ` Rajendra Nayak 2012-07-16 10:15 ` Rajendra Nayak 2012-07-27 19:14 ` Kevin Hilman 2012-07-27 19:14 ` Kevin Hilman 2012-08-06 23:31 ` Kevin Hilman 2012-08-06 23:31 ` Kevin Hilman 2012-09-07 9:23 ` Tero Kristo 2012-09-07 9:23 ` Tero Kristo 2012-07-13 14:19 ` [PATCHv4 3/8] ARM: OMAP3+: voltage: add support for voltagedomain usecounts Tero Kristo 2012-07-13 14:19 ` Tero Kristo 2012-07-16 10:23 ` Rajendra Nayak 2012-07-16 10:23 ` Rajendra Nayak 2012-07-24 20:58 ` Vishwanath Sripathy 2012-07-24 20:58 ` Vishwanath Sripathy 2012-07-25 8:07 ` Tero Kristo 2012-07-25 8:07 ` Tero Kristo 2012-07-13 14:19 ` [PATCHv4 4/8] ARM: OMAP3: add manual control for mpu / core pwrdm usecounting Tero Kristo 2012-07-13 14:19 ` Tero Kristo 2012-07-16 10:30 ` Rajendra Nayak 2012-07-16 10:30 ` Rajendra Nayak 2012-07-27 19:36 ` Kevin Hilman 2012-07-27 19:36 ` Kevin Hilman 2012-07-30 8:40 ` Tero Kristo 2012-07-30 8:40 ` Tero Kristo 2012-08-06 10:14 ` Jean Pihet 2012-08-06 10:14 ` Jean Pihet 2012-09-07 9:30 ` Tero Kristo 2012-09-07 9:30 ` Tero Kristo 2012-09-07 21:48 ` Kevin Hilman 2012-09-07 21:48 ` Kevin Hilman 2012-08-06 23:32 ` Kevin Hilman 2012-08-06 23:32 ` Kevin Hilman 2012-07-13 14:19 ` [PATCHv4 5/8] ARM: OMAP3: set autoidle flag for sdrc_ick Tero Kristo 2012-07-13 14:19 ` Tero Kristo 2012-07-16 10:39 ` Rajendra Nayak 2012-07-16 10:39 ` Rajendra Nayak 2012-07-13 14:19 ` [PATCHv4 6/8] ARM: OMAP: pm-debug: enhanced usecount debug support Tero Kristo 2012-07-13 14:19 ` Tero Kristo 2012-07-16 10:50 ` Rajendra Nayak 2012-07-16 10:50 ` Rajendra Nayak 2012-07-16 11:45 ` Tero Kristo 2012-07-16 11:45 ` Tero Kristo 2012-07-16 12:14 ` Rajendra Nayak 2012-07-16 12:14 ` Rajendra Nayak 2012-07-27 19:55 ` Kevin Hilman 2012-07-27 19:55 ` Kevin Hilman 2012-07-30 8:36 ` Tero Kristo 2012-07-30 8:36 ` Tero Kristo 2012-07-13 14:19 ` [PATCHv4 7/8] ARM: OMAP: clockdomain: add support for preventing autodep delete Tero Kristo 2012-07-13 14:19 ` Tero Kristo 2012-07-16 11:00 ` Rajendra Nayak 2012-07-16 11:00 ` Rajendra Nayak 2012-07-17 14:56 ` Tero Kristo 2012-07-17 14:56 ` Tero Kristo 2012-07-17 21:31 ` Paul Walmsley 2012-07-17 21:31 ` Paul Walmsley 2012-07-18 7:15 ` Rajendra Nayak 2012-07-18 7:15 ` Rajendra Nayak 2012-07-18 8:05 ` Tero Kristo 2012-07-18 8:05 ` Tero Kristo 2012-07-18 9:04 ` Rajendra Nayak 2012-07-18 9:04 ` Rajendra Nayak 2012-07-18 9:16 ` Tero Kristo 2012-07-18 9:16 ` Tero Kristo 2012-07-27 20:12 ` Kevin Hilman 2012-07-27 20:12 ` Kevin Hilman 2012-07-13 14:19 ` [PATCHv4 8/8] ARM: OMAP3: do not delete per_clkdm autodeps during idle Tero Kristo 2012-07-13 14:19 ` Tero Kristo 2012-09-18 22:25 ` Paul Walmsley 2012-09-18 22:25 ` Paul Walmsley 2012-09-18 22:43 ` Paul Walmsley 2012-09-18 22:43 ` Paul Walmsley 2012-09-19 22:15 ` Kevin Hilman 2012-09-19 22:15 ` Kevin Hilman 2012-10-16 7:29 ` Paul Walmsley 2012-10-16 7:29 ` Paul Walmsley 2012-10-17 0:39 ` Kevin Hilman 2012-10-17 0:39 ` Kevin Hilman 2012-10-31 11:59 ` Tero Kristo 2012-10-31 11:59 ` Tero Kristo 2012-09-19 9:06 ` Tero Kristo 2012-09-19 9:06 ` Tero Kristo
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=5003E737.60406@ti.com \ --to=rnayak@ti.com \ --cc=khilman@ti.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-omap@vger.kernel.org \ --cc=paul@pwsan.com \ --cc=t-kristo@ti.com \ /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: linkBe 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.