Re: [PATCH RFC 3/3] cpufreq: cpufreq-cpu0: clk rate-change notifiers

2013-07-31 Thread Rafael J. Wysocki
On Wednesday, July 31, 2013 10:09:03 AM Viresh Kumar wrote:
> On 31 July 2013 07:13, Mike Turquette  wrote:
> > Quoting Viresh Kumar (2013-07-07 21:10:54)
> >> On Mon, Jul 8, 2013 at 7:14 AM, Mike Turquette  
> >> wrote:
> >> > Removes direct handling of OPP tables and voltage regulators by calling
> >> > of_clk_cpufreq_notifier_handler, introduced by commit "clk: cpufreq
> >> > helper for voltage scaling".
> >> >
> >> > In the future this can help consolidate code found across similar
> >> > CPUfreq drivers.
> >> >
> >> > Signed-off-by: Mike Turquette 
> >> > ---
> >> >  drivers/cpufreq/cpufreq-cpu0.c | 125 
> >> > -
> >> >  1 file changed, 22 insertions(+), 103 deletions(-)
> >>
> >> Good patch, really gets lots of stuff out from cpufreq drivers.
> >>
> >> Acked-by: Viresh Kumar 
> >
> > Viresh,
> >
> > Thanks for the Ack. I received no comments on this series besides your
> > own, so I plan to merge it. Do you want to take patch #3, or do you want
> > me to take it, or should I give you and Rafael a stable branch instead?
> 
> Its only related to cpufreq-cpu0 and to handle dependencies well they
> should go through a single tree.. Probably your tree is the right place for
> now. Rafael?

Yes, the entire series should go through the Mike's tree I think.

Thanks,
Rafael

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH RFC 3/3] cpufreq: cpufreq-cpu0: clk rate-change notifiers

2013-07-31 Thread Rafael J. Wysocki
On Wednesday, July 31, 2013 10:09:03 AM Viresh Kumar wrote:
 On 31 July 2013 07:13, Mike Turquette mturque...@linaro.org wrote:
  Quoting Viresh Kumar (2013-07-07 21:10:54)
  On Mon, Jul 8, 2013 at 7:14 AM, Mike Turquette mturque...@linaro.org 
  wrote:
   Removes direct handling of OPP tables and voltage regulators by calling
   of_clk_cpufreq_notifier_handler, introduced by commit clk: cpufreq
   helper for voltage scaling.
  
   In the future this can help consolidate code found across similar
   CPUfreq drivers.
  
   Signed-off-by: Mike Turquette mturque...@linaro.org
   ---
drivers/cpufreq/cpufreq-cpu0.c | 125 
   -
1 file changed, 22 insertions(+), 103 deletions(-)
 
  Good patch, really gets lots of stuff out from cpufreq drivers.
 
  Acked-by: Viresh Kumar viresh.ku...@linaro.org
 
  Viresh,
 
  Thanks for the Ack. I received no comments on this series besides your
  own, so I plan to merge it. Do you want to take patch #3, or do you want
  me to take it, or should I give you and Rafael a stable branch instead?
 
 Its only related to cpufreq-cpu0 and to handle dependencies well they
 should go through a single tree.. Probably your tree is the right place for
 now. Rafael?

Yes, the entire series should go through the Mike's tree I think.

Thanks,
Rafael

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH RFC 3/3] cpufreq: cpufreq-cpu0: clk rate-change notifiers

2013-07-30 Thread Viresh Kumar
On 31 July 2013 07:13, Mike Turquette  wrote:
> Quoting Viresh Kumar (2013-07-07 21:10:54)
>> On Mon, Jul 8, 2013 at 7:14 AM, Mike Turquette  wrote:
>> > Removes direct handling of OPP tables and voltage regulators by calling
>> > of_clk_cpufreq_notifier_handler, introduced by commit "clk: cpufreq
>> > helper for voltage scaling".
>> >
>> > In the future this can help consolidate code found across similar
>> > CPUfreq drivers.
>> >
>> > Signed-off-by: Mike Turquette 
>> > ---
>> >  drivers/cpufreq/cpufreq-cpu0.c | 125 
>> > -
>> >  1 file changed, 22 insertions(+), 103 deletions(-)
>>
>> Good patch, really gets lots of stuff out from cpufreq drivers.
>>
>> Acked-by: Viresh Kumar 
>
> Viresh,
>
> Thanks for the Ack. I received no comments on this series besides your
> own, so I plan to merge it. Do you want to take patch #3, or do you want
> me to take it, or should I give you and Rafael a stable branch instead?

Its only related to cpufreq-cpu0 and to handle dependencies well they
should go through a single tree.. Probably your tree is the right place for
now. Rafael?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH RFC 3/3] cpufreq: cpufreq-cpu0: clk rate-change notifiers

2013-07-30 Thread Viresh Kumar
On 31 July 2013 07:13, Mike Turquette mturque...@linaro.org wrote:
 Quoting Viresh Kumar (2013-07-07 21:10:54)
 On Mon, Jul 8, 2013 at 7:14 AM, Mike Turquette mturque...@linaro.org wrote:
  Removes direct handling of OPP tables and voltage regulators by calling
  of_clk_cpufreq_notifier_handler, introduced by commit clk: cpufreq
  helper for voltage scaling.
 
  In the future this can help consolidate code found across similar
  CPUfreq drivers.
 
  Signed-off-by: Mike Turquette mturque...@linaro.org
  ---
   drivers/cpufreq/cpufreq-cpu0.c | 125 
  -
   1 file changed, 22 insertions(+), 103 deletions(-)

 Good patch, really gets lots of stuff out from cpufreq drivers.

 Acked-by: Viresh Kumar viresh.ku...@linaro.org

 Viresh,

 Thanks for the Ack. I received no comments on this series besides your
 own, so I plan to merge it. Do you want to take patch #3, or do you want
 me to take it, or should I give you and Rafael a stable branch instead?

Its only related to cpufreq-cpu0 and to handle dependencies well they
should go through a single tree.. Probably your tree is the right place for
now. Rafael?
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH RFC 3/3] cpufreq: cpufreq-cpu0: clk rate-change notifiers

2013-07-07 Thread Viresh Kumar
On Mon, Jul 8, 2013 at 7:14 AM, Mike Turquette  wrote:
> Removes direct handling of OPP tables and voltage regulators by calling
> of_clk_cpufreq_notifier_handler, introduced by commit "clk: cpufreq
> helper for voltage scaling".
>
> In the future this can help consolidate code found across similar
> CPUfreq drivers.
>
> Signed-off-by: Mike Turquette 
> ---
>  drivers/cpufreq/cpufreq-cpu0.c | 125 
> -
>  1 file changed, 22 insertions(+), 103 deletions(-)

Good patch, really gets lots of stuff out from cpufreq drivers.

Acked-by: Viresh Kumar 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH RFC 3/3] cpufreq: cpufreq-cpu0: clk rate-change notifiers

2013-07-07 Thread Mike Turquette
Removes direct handling of OPP tables and voltage regulators by calling
of_clk_cpufreq_notifier_handler, introduced by commit "clk: cpufreq
helper for voltage scaling".

In the future this can help consolidate code found across similar
CPUfreq drivers.

Signed-off-by: Mike Turquette 
---
 drivers/cpufreq/cpufreq-cpu0.c | 125 -
 1 file changed, 22 insertions(+), 103 deletions(-)

diff --git a/drivers/cpufreq/cpufreq-cpu0.c b/drivers/cpufreq/cpufreq-cpu0.c
index ad1fde2..1e8f928 100644
--- a/drivers/cpufreq/cpufreq-cpu0.c
+++ b/drivers/cpufreq/cpufreq-cpu0.c
@@ -16,18 +16,15 @@
 #include 
 #include 
 #include 
-#include 
 #include 
-#include 
 #include 
 
 static unsigned int transition_latency;
-static unsigned int voltage_tolerance; /* in percentage */
 
 static struct device *cpu_dev;
 static struct clk *cpu_clk;
-static struct regulator *cpu_reg;
 static struct cpufreq_frequency_table *freq_table;
+static struct notifier_block *clk_nb;
 
 static int cpu0_verify_speed(struct cpufreq_policy *policy)
 {
@@ -43,8 +40,7 @@ static int cpu0_set_target(struct cpufreq_policy *policy,
   unsigned int target_freq, unsigned int relation)
 {
struct cpufreq_freqs freqs;
-   struct opp *opp;
-   unsigned long volt = 0, volt_old = 0, tol = 0;
+   unsigned long volt = 0, volt_old = 0;
long freq_Hz, freq_exact;
unsigned int index;
int ret;
@@ -69,56 +65,16 @@ static int cpu0_set_target(struct cpufreq_policy *policy,
 
cpufreq_notify_transition(policy, , CPUFREQ_PRECHANGE);
 
-   if (cpu_reg) {
-   rcu_read_lock();
-   opp = opp_find_freq_ceil(cpu_dev, _Hz);
-   if (IS_ERR(opp)) {
-   rcu_read_unlock();
-   pr_err("failed to find OPP for %ld\n", freq_Hz);
-   freqs.new = freqs.old;
-   ret = PTR_ERR(opp);
-   goto post_notify;
-   }
-   volt = opp_get_voltage(opp);
-   rcu_read_unlock();
-   tol = volt * voltage_tolerance / 100;
-   volt_old = regulator_get_voltage(cpu_reg);
-   }
-
pr_debug("%u MHz, %ld mV --> %u MHz, %ld mV\n",
 freqs.old / 1000, volt_old ? volt_old / 1000 : -1,
 freqs.new / 1000, volt ? volt / 1000 : -1);
 
-   /* scaling up?  scale voltage before frequency */
-   if (cpu_reg && freqs.new > freqs.old) {
-   ret = regulator_set_voltage_tol(cpu_reg, volt, tol);
-   if (ret) {
-   pr_err("failed to scale voltage up: %d\n", ret);
-   freqs.new = freqs.old;
-   goto post_notify;
-   }
-   }
-
ret = clk_set_rate(cpu_clk, freq_exact);
if (ret) {
pr_err("failed to set clock rate: %d\n", ret);
-   if (cpu_reg)
-   regulator_set_voltage_tol(cpu_reg, volt_old, tol);
freqs.new = freqs.old;
-   goto post_notify;
-   }
-
-   /* scaling down?  scale voltage after frequency */
-   if (cpu_reg && freqs.new < freqs.old) {
-   ret = regulator_set_voltage_tol(cpu_reg, volt, tol);
-   if (ret) {
-   pr_err("failed to scale voltage down: %d\n", ret);
-   clk_set_rate(cpu_clk, freqs.old * 1000);
-   freqs.new = freqs.old;
-   }
}
 
-post_notify:
cpufreq_notify_transition(policy, , CPUFREQ_POSTCHANGE);
 
return ret;
@@ -175,6 +131,7 @@ static struct cpufreq_driver cpu0_cpufreq_driver = {
 static int cpu0_cpufreq_probe(struct platform_device *pdev)
 {
struct device_node *np, *parent;
+   unsigned int voltage_latency;
int ret;
 
parent = of_find_node_by_path("/cpus");
@@ -197,22 +154,6 @@ static int cpu0_cpufreq_probe(struct platform_device *pdev)
cpu_dev = >dev;
cpu_dev->of_node = np;
 
-   cpu_reg = devm_regulator_get(cpu_dev, "cpu0");
-   if (IS_ERR(cpu_reg)) {
-   /*
-* If cpu0 regulator supply node is present, but regulator is
-* not yet registered, we should try defering probe.
-*/
-   if (PTR_ERR(cpu_reg) == -EPROBE_DEFER) {
-   dev_err(cpu_dev, "cpu0 regulator not ready, retry\n");
-   ret = -EPROBE_DEFER;
-   goto out_put_node;
-   }
-   pr_warn("failed to get cpu0 regulator: %ld\n",
-   PTR_ERR(cpu_reg));
-   cpu_reg = NULL;
-   }
-
cpu_clk = devm_clk_get(cpu_dev, NULL);
if (IS_ERR(cpu_clk)) {
ret = PTR_ERR(cpu_clk);
@@ -220,60 +161,38 @@ static int cpu0_cpufreq_probe(struct platform_device 
*pdev)
goto out_put_node;
}
 
-   ret = 

[PATCH RFC 3/3] cpufreq: cpufreq-cpu0: clk rate-change notifiers

2013-07-07 Thread Mike Turquette
Removes direct handling of OPP tables and voltage regulators by calling
of_clk_cpufreq_notifier_handler, introduced by commit clk: cpufreq
helper for voltage scaling.

In the future this can help consolidate code found across similar
CPUfreq drivers.

Signed-off-by: Mike Turquette mturque...@linaro.org
---
 drivers/cpufreq/cpufreq-cpu0.c | 125 -
 1 file changed, 22 insertions(+), 103 deletions(-)

diff --git a/drivers/cpufreq/cpufreq-cpu0.c b/drivers/cpufreq/cpufreq-cpu0.c
index ad1fde2..1e8f928 100644
--- a/drivers/cpufreq/cpufreq-cpu0.c
+++ b/drivers/cpufreq/cpufreq-cpu0.c
@@ -16,18 +16,15 @@
 #include linux/err.h
 #include linux/module.h
 #include linux/of.h
-#include linux/opp.h
 #include linux/platform_device.h
-#include linux/regulator/consumer.h
 #include linux/slab.h
 
 static unsigned int transition_latency;
-static unsigned int voltage_tolerance; /* in percentage */
 
 static struct device *cpu_dev;
 static struct clk *cpu_clk;
-static struct regulator *cpu_reg;
 static struct cpufreq_frequency_table *freq_table;
+static struct notifier_block *clk_nb;
 
 static int cpu0_verify_speed(struct cpufreq_policy *policy)
 {
@@ -43,8 +40,7 @@ static int cpu0_set_target(struct cpufreq_policy *policy,
   unsigned int target_freq, unsigned int relation)
 {
struct cpufreq_freqs freqs;
-   struct opp *opp;
-   unsigned long volt = 0, volt_old = 0, tol = 0;
+   unsigned long volt = 0, volt_old = 0;
long freq_Hz, freq_exact;
unsigned int index;
int ret;
@@ -69,56 +65,16 @@ static int cpu0_set_target(struct cpufreq_policy *policy,
 
cpufreq_notify_transition(policy, freqs, CPUFREQ_PRECHANGE);
 
-   if (cpu_reg) {
-   rcu_read_lock();
-   opp = opp_find_freq_ceil(cpu_dev, freq_Hz);
-   if (IS_ERR(opp)) {
-   rcu_read_unlock();
-   pr_err(failed to find OPP for %ld\n, freq_Hz);
-   freqs.new = freqs.old;
-   ret = PTR_ERR(opp);
-   goto post_notify;
-   }
-   volt = opp_get_voltage(opp);
-   rcu_read_unlock();
-   tol = volt * voltage_tolerance / 100;
-   volt_old = regulator_get_voltage(cpu_reg);
-   }
-
pr_debug(%u MHz, %ld mV -- %u MHz, %ld mV\n,
 freqs.old / 1000, volt_old ? volt_old / 1000 : -1,
 freqs.new / 1000, volt ? volt / 1000 : -1);
 
-   /* scaling up?  scale voltage before frequency */
-   if (cpu_reg  freqs.new  freqs.old) {
-   ret = regulator_set_voltage_tol(cpu_reg, volt, tol);
-   if (ret) {
-   pr_err(failed to scale voltage up: %d\n, ret);
-   freqs.new = freqs.old;
-   goto post_notify;
-   }
-   }
-
ret = clk_set_rate(cpu_clk, freq_exact);
if (ret) {
pr_err(failed to set clock rate: %d\n, ret);
-   if (cpu_reg)
-   regulator_set_voltage_tol(cpu_reg, volt_old, tol);
freqs.new = freqs.old;
-   goto post_notify;
-   }
-
-   /* scaling down?  scale voltage after frequency */
-   if (cpu_reg  freqs.new  freqs.old) {
-   ret = regulator_set_voltage_tol(cpu_reg, volt, tol);
-   if (ret) {
-   pr_err(failed to scale voltage down: %d\n, ret);
-   clk_set_rate(cpu_clk, freqs.old * 1000);
-   freqs.new = freqs.old;
-   }
}
 
-post_notify:
cpufreq_notify_transition(policy, freqs, CPUFREQ_POSTCHANGE);
 
return ret;
@@ -175,6 +131,7 @@ static struct cpufreq_driver cpu0_cpufreq_driver = {
 static int cpu0_cpufreq_probe(struct platform_device *pdev)
 {
struct device_node *np, *parent;
+   unsigned int voltage_latency;
int ret;
 
parent = of_find_node_by_path(/cpus);
@@ -197,22 +154,6 @@ static int cpu0_cpufreq_probe(struct platform_device *pdev)
cpu_dev = pdev-dev;
cpu_dev-of_node = np;
 
-   cpu_reg = devm_regulator_get(cpu_dev, cpu0);
-   if (IS_ERR(cpu_reg)) {
-   /*
-* If cpu0 regulator supply node is present, but regulator is
-* not yet registered, we should try defering probe.
-*/
-   if (PTR_ERR(cpu_reg) == -EPROBE_DEFER) {
-   dev_err(cpu_dev, cpu0 regulator not ready, retry\n);
-   ret = -EPROBE_DEFER;
-   goto out_put_node;
-   }
-   pr_warn(failed to get cpu0 regulator: %ld\n,
-   PTR_ERR(cpu_reg));
-   cpu_reg = NULL;
-   }
-
cpu_clk = devm_clk_get(cpu_dev, NULL);
if (IS_ERR(cpu_clk)) {
ret = PTR_ERR(cpu_clk);
@@ -220,60 +161,38 @@ static int 

Re: [PATCH RFC 3/3] cpufreq: cpufreq-cpu0: clk rate-change notifiers

2013-07-07 Thread Viresh Kumar
On Mon, Jul 8, 2013 at 7:14 AM, Mike Turquette mturque...@linaro.org wrote:
 Removes direct handling of OPP tables and voltage regulators by calling
 of_clk_cpufreq_notifier_handler, introduced by commit clk: cpufreq
 helper for voltage scaling.

 In the future this can help consolidate code found across similar
 CPUfreq drivers.

 Signed-off-by: Mike Turquette mturque...@linaro.org
 ---
  drivers/cpufreq/cpufreq-cpu0.c | 125 
 -
  1 file changed, 22 insertions(+), 103 deletions(-)

Good patch, really gets lots of stuff out from cpufreq drivers.

Acked-by: Viresh Kumar viresh.ku...@linaro.org
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/