From: Mike Turquette <mturquette@linaro.org> To: linux-kernel@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, patches@linaro.org, linaro-dev@lists.linaro.org, Mike Turquette <mturquette@linaro.org> Subject: [PATCH v3 0/5] common clk framework reentrancy & dvfs, take 3 Date: Wed, 27 Feb 2013 20:49:24 -0800 [thread overview] Message-ID: <1362026969-11457-1-git-send-email-mturquette@linaro.org> (raw) Hello, This series implements reentrancy for the common clk implementation of the clk.h api. Making reentrant calls into the clock framework is both necessary and desirable for many use cases such as enabling off-chip clocks via i2c. The first patch in the series implements this. A neat side effect of reentrancy is that it is possible for platforms using voltage regulators controlled via i2c to register rate-change notifier handlers to scale voltage as a function of clock rate. This is an effective way to implement dynamic voltage & frequency scaling. Patch #2 implements a helper function for registering such a notifier handler. The third patch in the series demonstrates dvfs on OMAP platforms by modifying the cpufreq-omap driver; it migrates the voltage scaling logic out of the cpufreq driver's .target callback and registers callbacks via the helper introduced in patch #2. Patches four and five are purely test coverage. And what better way to test than to muck with fragile PLL programming code? These patches test out a lot of the aforementioned reentrancy in the OMAP3+ DPLL code. They are not for merging, but as a demonstration of what is now possible. Finally, I know that Documentation/clk.txt needs an update for these changes but I wanted this on the list before I flew out to LCA 2013. I'll provide that update during or after the conference. Two previous (and considerably more insane) attempts at this, v1: http://article.gmane.org/gmane.linux.kernel/1327866 v2: http://marc.info/?l=linux-kernel&m=134507429302463&w=2 Mike Turquette (5): clk: allow reentrant calls into the clk framework clk: notifier handler for dynamic voltage scaling cpufreq: omap: scale regulator from clk notifier HACK: set_parent callback for OMAP4 non-core DPLLs HACK: omap: opp: add fake 400MHz OPP to bypass MPU arch/arm/mach-omap2/cclock44xx_data.c | 1 + arch/arm/mach-omap2/clock.h | 1 + arch/arm/mach-omap2/dpll3xxx.c | 107 ++++++++++---- arch/arm/mach-omap2/opp4xxx_data.c | 18 +++ drivers/clk/Makefile | 1 + drivers/clk/clk.c | 254 ++++++++++++++++++++++++--------- drivers/clk/dvfs.c | 125 ++++++++++++++++ drivers/cpufreq/omap-cpufreq.c | 82 +++-------- include/linux/clk.h | 27 +++- 9 files changed, 459 insertions(+), 157 deletions(-) create mode 100644 drivers/clk/dvfs.c -- 1.7.10.4
WARNING: multiple messages have this Message-ID (diff)
From: mturquette@linaro.org (Mike Turquette) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 0/5] common clk framework reentrancy & dvfs, take 3 Date: Wed, 27 Feb 2013 20:49:24 -0800 [thread overview] Message-ID: <1362026969-11457-1-git-send-email-mturquette@linaro.org> (raw) Hello, This series implements reentrancy for the common clk implementation of the clk.h api. Making reentrant calls into the clock framework is both necessary and desirable for many use cases such as enabling off-chip clocks via i2c. The first patch in the series implements this. A neat side effect of reentrancy is that it is possible for platforms using voltage regulators controlled via i2c to register rate-change notifier handlers to scale voltage as a function of clock rate. This is an effective way to implement dynamic voltage & frequency scaling. Patch #2 implements a helper function for registering such a notifier handler. The third patch in the series demonstrates dvfs on OMAP platforms by modifying the cpufreq-omap driver; it migrates the voltage scaling logic out of the cpufreq driver's .target callback and registers callbacks via the helper introduced in patch #2. Patches four and five are purely test coverage. And what better way to test than to muck with fragile PLL programming code? These patches test out a lot of the aforementioned reentrancy in the OMAP3+ DPLL code. They are not for merging, but as a demonstration of what is now possible. Finally, I know that Documentation/clk.txt needs an update for these changes but I wanted this on the list before I flew out to LCA 2013. I'll provide that update during or after the conference. Two previous (and considerably more insane) attempts at this, v1: http://article.gmane.org/gmane.linux.kernel/1327866 v2: http://marc.info/?l=linux-kernel&m=134507429302463&w=2 Mike Turquette (5): clk: allow reentrant calls into the clk framework clk: notifier handler for dynamic voltage scaling cpufreq: omap: scale regulator from clk notifier HACK: set_parent callback for OMAP4 non-core DPLLs HACK: omap: opp: add fake 400MHz OPP to bypass MPU arch/arm/mach-omap2/cclock44xx_data.c | 1 + arch/arm/mach-omap2/clock.h | 1 + arch/arm/mach-omap2/dpll3xxx.c | 107 ++++++++++---- arch/arm/mach-omap2/opp4xxx_data.c | 18 +++ drivers/clk/Makefile | 1 + drivers/clk/clk.c | 254 ++++++++++++++++++++++++--------- drivers/clk/dvfs.c | 125 ++++++++++++++++ drivers/cpufreq/omap-cpufreq.c | 82 +++-------- include/linux/clk.h | 27 +++- 9 files changed, 459 insertions(+), 157 deletions(-) create mode 100644 drivers/clk/dvfs.c -- 1.7.10.4
next reply other threads:[~2013-02-28 4:50 UTC|newest] Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-02-28 4:49 Mike Turquette [this message] 2013-02-28 4:49 ` [PATCH v3 0/5] common clk framework reentrancy & dvfs, take 3 Mike Turquette 2013-02-28 4:49 ` [PATCH 1/5] clk: allow reentrant calls into the clk framework Mike Turquette 2013-02-28 4:49 ` Mike Turquette 2013-02-28 9:54 ` Ulf Hansson 2013-02-28 9:54 ` Ulf Hansson 2013-03-18 20:15 ` Mike Turquette 2013-03-18 21:00 ` Russell King - ARM Linux 2013-03-18 21:00 ` Russell King - ARM Linux 2013-03-18 21:35 ` Mike Turquette 2013-03-27 3:33 ` Bill Huang 2013-03-27 3:33 ` Bill Huang 2013-03-27 8:38 ` Mike Turquette 2013-02-28 4:49 ` [PATCH 2/5] clk: notifier handler for dynamic voltage scaling Mike Turquette 2013-02-28 4:49 ` Mike Turquette 2013-03-01 9:41 ` Bill Huang 2013-03-01 9:41 ` Bill Huang 2013-03-01 18:22 ` Mike Turquette 2013-03-01 20:48 ` Mike Turquette 2013-03-02 2:55 ` Bill Huang 2013-03-02 2:55 ` Bill Huang 2013-03-02 8:22 ` Richard Zhao 2013-03-02 8:22 ` Richard Zhao 2013-03-03 10:54 ` Mike Turquette 2013-03-03 10:54 ` Mike Turquette 2013-03-03 13:27 ` Richard Zhao 2013-03-03 13:27 ` Richard Zhao 2013-03-04 7:25 ` Mike Turquette 2013-03-13 13:59 ` Ulf Hansson 2013-03-13 13:59 ` Ulf Hansson 2013-03-01 20:49 ` Stephen Warren 2013-03-01 20:49 ` Stephen Warren 2013-03-02 2:58 ` Bill Huang 2013-03-02 2:58 ` Bill Huang 2013-03-10 10:21 ` Francesco Lavra 2013-03-10 10:21 ` Francesco Lavra 2013-04-02 17:49 ` Taras Kondratiuk 2013-04-02 17:49 ` Taras Kondratiuk 2013-02-28 4:49 ` [PATCH 3/5] cpufreq: omap: scale regulator from clk notifier Mike Turquette 2013-02-28 4:49 ` Mike Turquette 2013-02-28 4:49 ` [PATCH 4/5] HACK: set_parent callback for OMAP4 non-core DPLLs Mike Turquette 2013-02-28 4:49 ` Mike Turquette 2013-02-28 4:49 ` [PATCH 5/5] HACK: omap: opp: add fake 400MHz OPP to bypass MPU Mike Turquette 2013-02-28 4:49 ` Mike Turquette
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=1362026969-11457-1-git-send-email-mturquette@linaro.org \ --to=mturquette@linaro.org \ --cc=linaro-dev@lists.linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=patches@linaro.org \ /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.