Merge branch 'master' into for-next
Sync with Linus' tree to be able to apply fixes on top of newer things in tree (efi-stub). Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/stat.h>
|
||||
#include <linux/opp.h>
|
||||
#include <linux/pm_opp.h>
|
||||
#include <linux/devfreq.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/platform_device.h>
|
||||
@@ -902,13 +902,13 @@ static ssize_t available_frequencies_show(struct device *d,
|
||||
{
|
||||
struct devfreq *df = to_devfreq(d);
|
||||
struct device *dev = df->dev.parent;
|
||||
struct opp *opp;
|
||||
struct dev_pm_opp *opp;
|
||||
ssize_t count = 0;
|
||||
unsigned long freq = 0;
|
||||
|
||||
rcu_read_lock();
|
||||
do {
|
||||
opp = opp_find_freq_ceil(dev, &freq);
|
||||
opp = dev_pm_opp_find_freq_ceil(dev, &freq);
|
||||
if (IS_ERR(opp))
|
||||
break;
|
||||
|
||||
@@ -993,10 +993,10 @@ static int __init devfreq_init(void)
|
||||
}
|
||||
|
||||
devfreq_wq = create_freezable_workqueue("devfreq_wq");
|
||||
if (IS_ERR(devfreq_wq)) {
|
||||
if (!devfreq_wq) {
|
||||
class_destroy(devfreq_class);
|
||||
pr_err("%s: couldn't create workqueue\n", __FILE__);
|
||||
return PTR_ERR(devfreq_wq);
|
||||
return -ENOMEM;
|
||||
}
|
||||
devfreq_class->dev_groups = devfreq_groups;
|
||||
|
||||
@@ -1029,25 +1029,26 @@ module_exit(devfreq_exit);
|
||||
* under the locked area. The pointer returned must be used prior to unlocking
|
||||
* with rcu_read_unlock() to maintain the integrity of the pointer.
|
||||
*/
|
||||
struct opp *devfreq_recommended_opp(struct device *dev, unsigned long *freq,
|
||||
u32 flags)
|
||||
struct dev_pm_opp *devfreq_recommended_opp(struct device *dev,
|
||||
unsigned long *freq,
|
||||
u32 flags)
|
||||
{
|
||||
struct opp *opp;
|
||||
struct dev_pm_opp *opp;
|
||||
|
||||
if (flags & DEVFREQ_FLAG_LEAST_UPPER_BOUND) {
|
||||
/* The freq is an upper bound. opp should be lower */
|
||||
opp = opp_find_freq_floor(dev, freq);
|
||||
opp = dev_pm_opp_find_freq_floor(dev, freq);
|
||||
|
||||
/* If not available, use the closest opp */
|
||||
if (opp == ERR_PTR(-ERANGE))
|
||||
opp = opp_find_freq_ceil(dev, freq);
|
||||
opp = dev_pm_opp_find_freq_ceil(dev, freq);
|
||||
} else {
|
||||
/* The freq is an lower bound. opp should be higher */
|
||||
opp = opp_find_freq_ceil(dev, freq);
|
||||
opp = dev_pm_opp_find_freq_ceil(dev, freq);
|
||||
|
||||
/* If not available, use the closest opp */
|
||||
if (opp == ERR_PTR(-ERANGE))
|
||||
opp = opp_find_freq_floor(dev, freq);
|
||||
opp = dev_pm_opp_find_freq_floor(dev, freq);
|
||||
}
|
||||
|
||||
return opp;
|
||||
@@ -1066,7 +1067,7 @@ int devfreq_register_opp_notifier(struct device *dev, struct devfreq *devfreq)
|
||||
int ret = 0;
|
||||
|
||||
rcu_read_lock();
|
||||
nh = opp_get_notifier(dev);
|
||||
nh = dev_pm_opp_get_notifier(dev);
|
||||
if (IS_ERR(nh))
|
||||
ret = PTR_ERR(nh);
|
||||
rcu_read_unlock();
|
||||
@@ -1092,7 +1093,7 @@ int devfreq_unregister_opp_notifier(struct device *dev, struct devfreq *devfreq)
|
||||
int ret = 0;
|
||||
|
||||
rcu_read_lock();
|
||||
nh = opp_get_notifier(dev);
|
||||
nh = dev_pm_opp_get_notifier(dev);
|
||||
if (IS_ERR(nh))
|
||||
ret = PTR_ERR(nh);
|
||||
rcu_read_unlock();
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#include <linux/slab.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/opp.h>
|
||||
#include <linux/pm_opp.h>
|
||||
#include <linux/devfreq.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
@@ -639,7 +639,7 @@ static int exynos4_bus_target(struct device *dev, unsigned long *_freq,
|
||||
struct platform_device *pdev = container_of(dev, struct platform_device,
|
||||
dev);
|
||||
struct busfreq_data *data = platform_get_drvdata(pdev);
|
||||
struct opp *opp;
|
||||
struct dev_pm_opp *opp;
|
||||
unsigned long freq;
|
||||
unsigned long old_freq = data->curr_oppinfo.rate;
|
||||
struct busfreq_opp_info new_oppinfo;
|
||||
@@ -650,8 +650,8 @@ static int exynos4_bus_target(struct device *dev, unsigned long *_freq,
|
||||
rcu_read_unlock();
|
||||
return PTR_ERR(opp);
|
||||
}
|
||||
new_oppinfo.rate = opp_get_freq(opp);
|
||||
new_oppinfo.volt = opp_get_voltage(opp);
|
||||
new_oppinfo.rate = dev_pm_opp_get_freq(opp);
|
||||
new_oppinfo.volt = dev_pm_opp_get_voltage(opp);
|
||||
rcu_read_unlock();
|
||||
freq = new_oppinfo.rate;
|
||||
|
||||
@@ -873,7 +873,7 @@ static int exynos4210_init_tables(struct busfreq_data *data)
|
||||
exynos4210_busclk_table[i].volt = exynos4210_asv_volt[mgrp][i];
|
||||
|
||||
for (i = LV_0; i < EX4210_LV_NUM; i++) {
|
||||
err = opp_add(data->dev, exynos4210_busclk_table[i].clk,
|
||||
err = dev_pm_opp_add(data->dev, exynos4210_busclk_table[i].clk,
|
||||
exynos4210_busclk_table[i].volt);
|
||||
if (err) {
|
||||
dev_err(data->dev, "Cannot add opp entries.\n");
|
||||
@@ -940,7 +940,7 @@ static int exynos4x12_init_tables(struct busfreq_data *data)
|
||||
}
|
||||
|
||||
for (i = 0; i < EX4x12_LV_NUM; i++) {
|
||||
ret = opp_add(data->dev, exynos4x12_mifclk_table[i].clk,
|
||||
ret = dev_pm_opp_add(data->dev, exynos4x12_mifclk_table[i].clk,
|
||||
exynos4x12_mifclk_table[i].volt);
|
||||
if (ret) {
|
||||
dev_err(data->dev, "Fail to add opp entries.\n");
|
||||
@@ -956,7 +956,7 @@ static int exynos4_busfreq_pm_notifier_event(struct notifier_block *this,
|
||||
{
|
||||
struct busfreq_data *data = container_of(this, struct busfreq_data,
|
||||
pm_notifier);
|
||||
struct opp *opp;
|
||||
struct dev_pm_opp *opp;
|
||||
struct busfreq_opp_info new_oppinfo;
|
||||
unsigned long maxfreq = ULONG_MAX;
|
||||
int err = 0;
|
||||
@@ -969,7 +969,7 @@ static int exynos4_busfreq_pm_notifier_event(struct notifier_block *this,
|
||||
data->disabled = true;
|
||||
|
||||
rcu_read_lock();
|
||||
opp = opp_find_freq_floor(data->dev, &maxfreq);
|
||||
opp = dev_pm_opp_find_freq_floor(data->dev, &maxfreq);
|
||||
if (IS_ERR(opp)) {
|
||||
rcu_read_unlock();
|
||||
dev_err(data->dev, "%s: unable to find a min freq\n",
|
||||
@@ -977,8 +977,8 @@ static int exynos4_busfreq_pm_notifier_event(struct notifier_block *this,
|
||||
mutex_unlock(&data->lock);
|
||||
return PTR_ERR(opp);
|
||||
}
|
||||
new_oppinfo.rate = opp_get_freq(opp);
|
||||
new_oppinfo.volt = opp_get_voltage(opp);
|
||||
new_oppinfo.rate = dev_pm_opp_get_freq(opp);
|
||||
new_oppinfo.volt = dev_pm_opp_get_voltage(opp);
|
||||
rcu_read_unlock();
|
||||
|
||||
err = exynos4_bus_setvolt(data, &new_oppinfo,
|
||||
@@ -1020,7 +1020,7 @@ unlock:
|
||||
static int exynos4_busfreq_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct busfreq_data *data;
|
||||
struct opp *opp;
|
||||
struct dev_pm_opp *opp;
|
||||
struct device *dev = &pdev->dev;
|
||||
int err = 0;
|
||||
|
||||
@@ -1065,15 +1065,16 @@ static int exynos4_busfreq_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
rcu_read_lock();
|
||||
opp = opp_find_freq_floor(dev, &exynos4_devfreq_profile.initial_freq);
|
||||
opp = dev_pm_opp_find_freq_floor(dev,
|
||||
&exynos4_devfreq_profile.initial_freq);
|
||||
if (IS_ERR(opp)) {
|
||||
rcu_read_unlock();
|
||||
dev_err(dev, "Invalid initial frequency %lu kHz.\n",
|
||||
exynos4_devfreq_profile.initial_freq);
|
||||
return PTR_ERR(opp);
|
||||
}
|
||||
data->curr_oppinfo.rate = opp_get_freq(opp);
|
||||
data->curr_oppinfo.volt = opp_get_voltage(opp);
|
||||
data->curr_oppinfo.rate = dev_pm_opp_get_freq(opp);
|
||||
data->curr_oppinfo.volt = dev_pm_opp_get_voltage(opp);
|
||||
rcu_read_unlock();
|
||||
|
||||
platform_set_drvdata(pdev, data);
|
||||
|
||||
@@ -15,10 +15,9 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/devfreq.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/opp.h>
|
||||
#include <linux/pm_opp.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/opp.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/platform_device.h>
|
||||
@@ -132,7 +131,7 @@ static int exynos5_busfreq_int_target(struct device *dev, unsigned long *_freq,
|
||||
struct platform_device *pdev = container_of(dev, struct platform_device,
|
||||
dev);
|
||||
struct busfreq_data_int *data = platform_get_drvdata(pdev);
|
||||
struct opp *opp;
|
||||
struct dev_pm_opp *opp;
|
||||
unsigned long old_freq, freq;
|
||||
unsigned long volt;
|
||||
|
||||
@@ -144,8 +143,8 @@ static int exynos5_busfreq_int_target(struct device *dev, unsigned long *_freq,
|
||||
return PTR_ERR(opp);
|
||||
}
|
||||
|
||||
freq = opp_get_freq(opp);
|
||||
volt = opp_get_voltage(opp);
|
||||
freq = dev_pm_opp_get_freq(opp);
|
||||
volt = dev_pm_opp_get_voltage(opp);
|
||||
rcu_read_unlock();
|
||||
|
||||
old_freq = data->curr_freq;
|
||||
@@ -246,7 +245,7 @@ static int exynos5250_init_int_tables(struct busfreq_data_int *data)
|
||||
int i, err = 0;
|
||||
|
||||
for (i = LV_0; i < _LV_END; i++) {
|
||||
err = opp_add(data->dev, exynos5_int_opp_table[i].clk,
|
||||
err = dev_pm_opp_add(data->dev, exynos5_int_opp_table[i].clk,
|
||||
exynos5_int_opp_table[i].volt);
|
||||
if (err) {
|
||||
dev_err(data->dev, "Cannot add opp entries.\n");
|
||||
@@ -262,7 +261,7 @@ static int exynos5_busfreq_int_pm_notifier_event(struct notifier_block *this,
|
||||
{
|
||||
struct busfreq_data_int *data = container_of(this,
|
||||
struct busfreq_data_int, pm_notifier);
|
||||
struct opp *opp;
|
||||
struct dev_pm_opp *opp;
|
||||
unsigned long maxfreq = ULONG_MAX;
|
||||
unsigned long freq;
|
||||
unsigned long volt;
|
||||
@@ -276,14 +275,14 @@ static int exynos5_busfreq_int_pm_notifier_event(struct notifier_block *this,
|
||||
data->disabled = true;
|
||||
|
||||
rcu_read_lock();
|
||||
opp = opp_find_freq_floor(data->dev, &maxfreq);
|
||||
opp = dev_pm_opp_find_freq_floor(data->dev, &maxfreq);
|
||||
if (IS_ERR(opp)) {
|
||||
rcu_read_unlock();
|
||||
err = PTR_ERR(opp);
|
||||
goto unlock;
|
||||
}
|
||||
freq = opp_get_freq(opp);
|
||||
volt = opp_get_voltage(opp);
|
||||
freq = dev_pm_opp_get_freq(opp);
|
||||
volt = dev_pm_opp_get_voltage(opp);
|
||||
rcu_read_unlock();
|
||||
|
||||
err = exynos5_int_setvolt(data, volt);
|
||||
@@ -316,7 +315,7 @@ unlock:
|
||||
static int exynos5_busfreq_int_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct busfreq_data_int *data;
|
||||
struct opp *opp;
|
||||
struct dev_pm_opp *opp;
|
||||
struct device *dev = &pdev->dev;
|
||||
struct device_node *np;
|
||||
unsigned long initial_freq;
|
||||
@@ -351,46 +350,43 @@ static int exynos5_busfreq_int_probe(struct platform_device *pdev)
|
||||
|
||||
err = exynos5250_init_int_tables(data);
|
||||
if (err)
|
||||
goto err_regulator;
|
||||
return err;
|
||||
|
||||
data->vdd_int = regulator_get(dev, "vdd_int");
|
||||
data->vdd_int = devm_regulator_get(dev, "vdd_int");
|
||||
if (IS_ERR(data->vdd_int)) {
|
||||
dev_err(dev, "Cannot get the regulator \"vdd_int\"\n");
|
||||
err = PTR_ERR(data->vdd_int);
|
||||
goto err_regulator;
|
||||
return PTR_ERR(data->vdd_int);
|
||||
}
|
||||
|
||||
data->int_clk = clk_get(dev, "int_clk");
|
||||
data->int_clk = devm_clk_get(dev, "int_clk");
|
||||
if (IS_ERR(data->int_clk)) {
|
||||
dev_err(dev, "Cannot get clock \"int_clk\"\n");
|
||||
err = PTR_ERR(data->int_clk);
|
||||
goto err_clock;
|
||||
return PTR_ERR(data->int_clk);
|
||||
}
|
||||
|
||||
rcu_read_lock();
|
||||
opp = opp_find_freq_floor(dev,
|
||||
opp = dev_pm_opp_find_freq_floor(dev,
|
||||
&exynos5_devfreq_int_profile.initial_freq);
|
||||
if (IS_ERR(opp)) {
|
||||
rcu_read_unlock();
|
||||
dev_err(dev, "Invalid initial frequency %lu kHz.\n",
|
||||
exynos5_devfreq_int_profile.initial_freq);
|
||||
err = PTR_ERR(opp);
|
||||
goto err_opp_add;
|
||||
return PTR_ERR(opp);
|
||||
}
|
||||
initial_freq = opp_get_freq(opp);
|
||||
initial_volt = opp_get_voltage(opp);
|
||||
initial_freq = dev_pm_opp_get_freq(opp);
|
||||
initial_volt = dev_pm_opp_get_voltage(opp);
|
||||
rcu_read_unlock();
|
||||
data->curr_freq = initial_freq;
|
||||
|
||||
err = clk_set_rate(data->int_clk, initial_freq * 1000);
|
||||
if (err) {
|
||||
dev_err(dev, "Failed to set initial frequency\n");
|
||||
goto err_opp_add;
|
||||
return err;
|
||||
}
|
||||
|
||||
err = exynos5_int_setvolt(data, initial_volt);
|
||||
if (err)
|
||||
goto err_opp_add;
|
||||
return err;
|
||||
|
||||
platform_set_drvdata(pdev, data);
|
||||
|
||||
@@ -419,12 +415,6 @@ static int exynos5_busfreq_int_probe(struct platform_device *pdev)
|
||||
|
||||
err_devfreq_add:
|
||||
devfreq_remove_device(data->devfreq);
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
err_opp_add:
|
||||
clk_put(data->int_clk);
|
||||
err_clock:
|
||||
regulator_put(data->vdd_int);
|
||||
err_regulator:
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -435,9 +425,6 @@ static int exynos5_busfreq_int_remove(struct platform_device *pdev)
|
||||
pm_qos_remove_request(&data->int_req);
|
||||
unregister_pm_notifier(&data->pm_notifier);
|
||||
devfreq_remove_device(data->devfreq);
|
||||
regulator_put(data->vdd_int);
|
||||
clk_put(data->int_clk);
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -479,7 +466,7 @@ static int __init exynos5_busfreq_int_init(void)
|
||||
|
||||
exynos5_devfreq_pdev =
|
||||
platform_device_register_simple("exynos5-bus-int", -1, NULL, 0);
|
||||
if (IS_ERR_OR_NULL(exynos5_devfreq_pdev)) {
|
||||
if (IS_ERR(exynos5_devfreq_pdev)) {
|
||||
ret = PTR_ERR(exynos5_devfreq_pdev);
|
||||
goto out1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user