Re: [PATCH RFC 3/3] cpufreq: cpufreq-cpu0: clk rate-change notifiers
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
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
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
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
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
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
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
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/