diff options
| author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-10-27 20:29:34 -0400 |
|---|---|---|
| committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-10-27 20:29:34 -0400 |
| commit | 93658cb8597ab76655220be43d3d7f74c66e9e4e (patch) | |
| tree | e6da56aac9cda2c80315cc73ee31ef4c47af8472 /drivers/devfreq | |
| parent | 6e0ca95aa3c83c47d13f9f400bfaaa853d0b224b (diff) | |
| parent | ad7722dab7292dbc1c4586d701ac226b68122d39 (diff) | |
Merge branch 'pm-cpufreq'
* pm-cpufreq: (167 commits)
cpufreq: create per policy rwsem instead of per CPU cpu_policy_rwsem
intel_pstate: Add Baytrail support
intel_pstate: Refactor driver to support CPUs with different MSR layouts
cpufreq: Implement light weight ->target_index() routine
PM / OPP: rename header to linux/pm_opp.h
PM / OPP: rename data structures to dev_pm equivalents
PM / OPP: rename functions to dev_pm_opp*
cpufreq / governor: Remove fossil comment
cpufreq: exynos4210: Use the common clock framework to set APLL clock rate
cpufreq: exynos4x12: Use the common clock framework to set APLL clock rate
cpufreq: Detect spurious invocations of update_policy_cpu()
cpufreq: pmac64: enable cpufreq on iMac G5 (iSight) model
cpufreq: pmac64: provide cpufreq transition latency for older G5 models
cpufreq: pmac64: speed up frequency switch
cpufreq: highbank-cpufreq: Enable Midway/ECX-2000
exynos-cpufreq: fix false return check from "regulator_set_voltage"
speedstep-centrino: Remove unnecessary braces
acpi-cpufreq: Add comment under ACPI_ADR_SPACE_SYSTEM_IO case
cpufreq: arm-big-little: use clk_get instead of clk_get_sys
cpufreq: exynos: Show a list of available frequencies
...
Conflicts:
drivers/devfreq/exynos/exynos5_bus.c
Diffstat (limited to 'drivers/devfreq')
| -rw-r--r-- | drivers/devfreq/devfreq.c | 25 | ||||
| -rw-r--r-- | drivers/devfreq/exynos/exynos4_bus.c | 29 | ||||
| -rw-r--r-- | drivers/devfreq/exynos/exynos5_bus.c | 26 |
3 files changed, 41 insertions, 39 deletions
diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index c99c00d35d34..2e23b12c350b 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | #include <linux/module.h> | 18 | #include <linux/module.h> |
| 19 | #include <linux/slab.h> | 19 | #include <linux/slab.h> |
| 20 | #include <linux/stat.h> | 20 | #include <linux/stat.h> |
| 21 | #include <linux/opp.h> | 21 | #include <linux/pm_opp.h> |
| 22 | #include <linux/devfreq.h> | 22 | #include <linux/devfreq.h> |
| 23 | #include <linux/workqueue.h> | 23 | #include <linux/workqueue.h> |
| 24 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
| @@ -902,13 +902,13 @@ static ssize_t available_frequencies_show(struct device *d, | |||
| 902 | { | 902 | { |
| 903 | struct devfreq *df = to_devfreq(d); | 903 | struct devfreq *df = to_devfreq(d); |
| 904 | struct device *dev = df->dev.parent; | 904 | struct device *dev = df->dev.parent; |
| 905 | struct opp *opp; | 905 | struct dev_pm_opp *opp; |
| 906 | ssize_t count = 0; | 906 | ssize_t count = 0; |
| 907 | unsigned long freq = 0; | 907 | unsigned long freq = 0; |
| 908 | 908 | ||
| 909 | rcu_read_lock(); | 909 | rcu_read_lock(); |
| 910 | do { | 910 | do { |
| 911 | opp = opp_find_freq_ceil(dev, &freq); | 911 | opp = dev_pm_opp_find_freq_ceil(dev, &freq); |
| 912 | if (IS_ERR(opp)) | 912 | if (IS_ERR(opp)) |
| 913 | break; | 913 | break; |
| 914 | 914 | ||
| @@ -1029,25 +1029,26 @@ module_exit(devfreq_exit); | |||
| 1029 | * under the locked area. The pointer returned must be used prior to unlocking | 1029 | * under the locked area. The pointer returned must be used prior to unlocking |
| 1030 | * with rcu_read_unlock() to maintain the integrity of the pointer. | 1030 | * with rcu_read_unlock() to maintain the integrity of the pointer. |
| 1031 | */ | 1031 | */ |
| 1032 | struct opp *devfreq_recommended_opp(struct device *dev, unsigned long *freq, | 1032 | struct dev_pm_opp *devfreq_recommended_opp(struct device *dev, |
| 1033 | u32 flags) | 1033 | unsigned long *freq, |
| 1034 | u32 flags) | ||
| 1034 | { | 1035 | { |
| 1035 | struct opp *opp; | 1036 | struct dev_pm_opp *opp; |
| 1036 | 1037 | ||
| 1037 | if (flags & DEVFREQ_FLAG_LEAST_UPPER_BOUND) { | 1038 | if (flags & DEVFREQ_FLAG_LEAST_UPPER_BOUND) { |
| 1038 | /* The freq is an upper bound. opp should be lower */ | 1039 | /* The freq is an upper bound. opp should be lower */ |
| 1039 | opp = opp_find_freq_floor(dev, freq); | 1040 | opp = dev_pm_opp_find_freq_floor(dev, freq); |
| 1040 | 1041 | ||
| 1041 | /* If not available, use the closest opp */ | 1042 | /* If not available, use the closest opp */ |
| 1042 | if (opp == ERR_PTR(-ERANGE)) | 1043 | if (opp == ERR_PTR(-ERANGE)) |
| 1043 | opp = opp_find_freq_ceil(dev, freq); | 1044 | opp = dev_pm_opp_find_freq_ceil(dev, freq); |
| 1044 | } else { | 1045 | } else { |
| 1045 | /* The freq is an lower bound. opp should be higher */ | 1046 | /* The freq is an lower bound. opp should be higher */ |
| 1046 | opp = opp_find_freq_ceil(dev, freq); | 1047 | opp = dev_pm_opp_find_freq_ceil(dev, freq); |
| 1047 | 1048 | ||
| 1048 | /* If not available, use the closest opp */ | 1049 | /* If not available, use the closest opp */ |
| 1049 | if (opp == ERR_PTR(-ERANGE)) | 1050 | if (opp == ERR_PTR(-ERANGE)) |
| 1050 | opp = opp_find_freq_floor(dev, freq); | 1051 | opp = dev_pm_opp_find_freq_floor(dev, freq); |
| 1051 | } | 1052 | } |
| 1052 | 1053 | ||
| 1053 | return opp; | 1054 | return opp; |
| @@ -1066,7 +1067,7 @@ int devfreq_register_opp_notifier(struct device *dev, struct devfreq *devfreq) | |||
| 1066 | int ret = 0; | 1067 | int ret = 0; |
| 1067 | 1068 | ||
| 1068 | rcu_read_lock(); | 1069 | rcu_read_lock(); |
| 1069 | nh = opp_get_notifier(dev); | 1070 | nh = dev_pm_opp_get_notifier(dev); |
| 1070 | if (IS_ERR(nh)) | 1071 | if (IS_ERR(nh)) |
| 1071 | ret = PTR_ERR(nh); | 1072 | ret = PTR_ERR(nh); |
| 1072 | rcu_read_unlock(); | 1073 | rcu_read_unlock(); |
| @@ -1092,7 +1093,7 @@ int devfreq_unregister_opp_notifier(struct device *dev, struct devfreq *devfreq) | |||
| 1092 | int ret = 0; | 1093 | int ret = 0; |
| 1093 | 1094 | ||
| 1094 | rcu_read_lock(); | 1095 | rcu_read_lock(); |
| 1095 | nh = opp_get_notifier(dev); | 1096 | nh = dev_pm_opp_get_notifier(dev); |
| 1096 | if (IS_ERR(nh)) | 1097 | if (IS_ERR(nh)) |
| 1097 | ret = PTR_ERR(nh); | 1098 | ret = PTR_ERR(nh); |
| 1098 | rcu_read_unlock(); | 1099 | rcu_read_unlock(); |
diff --git a/drivers/devfreq/exynos/exynos4_bus.c b/drivers/devfreq/exynos/exynos4_bus.c index c5f86d8caca3..cede6f71cd63 100644 --- a/drivers/devfreq/exynos/exynos4_bus.c +++ b/drivers/devfreq/exynos/exynos4_bus.c | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | #include <linux/slab.h> | 19 | #include <linux/slab.h> |
| 20 | #include <linux/mutex.h> | 20 | #include <linux/mutex.h> |
| 21 | #include <linux/suspend.h> | 21 | #include <linux/suspend.h> |
| 22 | #include <linux/opp.h> | 22 | #include <linux/pm_opp.h> |
| 23 | #include <linux/devfreq.h> | 23 | #include <linux/devfreq.h> |
| 24 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
| 25 | #include <linux/regulator/consumer.h> | 25 | #include <linux/regulator/consumer.h> |
| @@ -639,7 +639,7 @@ static int exynos4_bus_target(struct device *dev, unsigned long *_freq, | |||
| 639 | struct platform_device *pdev = container_of(dev, struct platform_device, | 639 | struct platform_device *pdev = container_of(dev, struct platform_device, |
| 640 | dev); | 640 | dev); |
| 641 | struct busfreq_data *data = platform_get_drvdata(pdev); | 641 | struct busfreq_data *data = platform_get_drvdata(pdev); |
| 642 | struct opp *opp; | 642 | struct dev_pm_opp *opp; |
| 643 | unsigned long freq; | 643 | unsigned long freq; |
| 644 | unsigned long old_freq = data->curr_oppinfo.rate; | 644 | unsigned long old_freq = data->curr_oppinfo.rate; |
| 645 | struct busfreq_opp_info new_oppinfo; | 645 | struct busfreq_opp_info new_oppinfo; |
| @@ -650,8 +650,8 @@ static int exynos4_bus_target(struct device *dev, unsigned long *_freq, | |||
| 650 | rcu_read_unlock(); | 650 | rcu_read_unlock(); |
| 651 | return PTR_ERR(opp); | 651 | return PTR_ERR(opp); |
| 652 | } | 652 | } |
| 653 | new_oppinfo.rate = opp_get_freq(opp); | 653 | new_oppinfo.rate = dev_pm_opp_get_freq(opp); |
| 654 | new_oppinfo.volt = opp_get_voltage(opp); | 654 | new_oppinfo.volt = dev_pm_opp_get_voltage(opp); |
| 655 | rcu_read_unlock(); | 655 | rcu_read_unlock(); |
| 656 | freq = new_oppinfo.rate; | 656 | freq = new_oppinfo.rate; |
| 657 | 657 | ||
| @@ -873,7 +873,7 @@ static int exynos4210_init_tables(struct busfreq_data *data) | |||
| 873 | exynos4210_busclk_table[i].volt = exynos4210_asv_volt[mgrp][i]; | 873 | exynos4210_busclk_table[i].volt = exynos4210_asv_volt[mgrp][i]; |
| 874 | 874 | ||
| 875 | for (i = LV_0; i < EX4210_LV_NUM; i++) { | 875 | for (i = LV_0; i < EX4210_LV_NUM; i++) { |
| 876 | err = opp_add(data->dev, exynos4210_busclk_table[i].clk, | 876 | err = dev_pm_opp_add(data->dev, exynos4210_busclk_table[i].clk, |
| 877 | exynos4210_busclk_table[i].volt); | 877 | exynos4210_busclk_table[i].volt); |
| 878 | if (err) { | 878 | if (err) { |
| 879 | dev_err(data->dev, "Cannot add opp entries.\n"); | 879 | dev_err(data->dev, "Cannot add opp entries.\n"); |
| @@ -940,7 +940,7 @@ static int exynos4x12_init_tables(struct busfreq_data *data) | |||
| 940 | } | 940 | } |
| 941 | 941 | ||
| 942 | for (i = 0; i < EX4x12_LV_NUM; i++) { | 942 | for (i = 0; i < EX4x12_LV_NUM; i++) { |
| 943 | ret = opp_add(data->dev, exynos4x12_mifclk_table[i].clk, | 943 | ret = dev_pm_opp_add(data->dev, exynos4x12_mifclk_table[i].clk, |
| 944 | exynos4x12_mifclk_table[i].volt); | 944 | exynos4x12_mifclk_table[i].volt); |
| 945 | if (ret) { | 945 | if (ret) { |
| 946 | dev_err(data->dev, "Fail to add opp entries.\n"); | 946 | 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, | |||
| 956 | { | 956 | { |
| 957 | struct busfreq_data *data = container_of(this, struct busfreq_data, | 957 | struct busfreq_data *data = container_of(this, struct busfreq_data, |
| 958 | pm_notifier); | 958 | pm_notifier); |
| 959 | struct opp *opp; | 959 | struct dev_pm_opp *opp; |
| 960 | struct busfreq_opp_info new_oppinfo; | 960 | struct busfreq_opp_info new_oppinfo; |
| 961 | unsigned long maxfreq = ULONG_MAX; | 961 | unsigned long maxfreq = ULONG_MAX; |
| 962 | int err = 0; | 962 | int err = 0; |
| @@ -969,7 +969,7 @@ static int exynos4_busfreq_pm_notifier_event(struct notifier_block *this, | |||
| 969 | data->disabled = true; | 969 | data->disabled = true; |
| 970 | 970 | ||
| 971 | rcu_read_lock(); | 971 | rcu_read_lock(); |
| 972 | opp = opp_find_freq_floor(data->dev, &maxfreq); | 972 | opp = dev_pm_opp_find_freq_floor(data->dev, &maxfreq); |
| 973 | if (IS_ERR(opp)) { | 973 | if (IS_ERR(opp)) { |
| 974 | rcu_read_unlock(); | 974 | rcu_read_unlock(); |
| 975 | dev_err(data->dev, "%s: unable to find a min freq\n", | 975 | 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, | |||
| 977 | mutex_unlock(&data->lock); | 977 | mutex_unlock(&data->lock); |
| 978 | return PTR_ERR(opp); | 978 | return PTR_ERR(opp); |
| 979 | } | 979 | } |
| 980 | new_oppinfo.rate = opp_get_freq(opp); | 980 | new_oppinfo.rate = dev_pm_opp_get_freq(opp); |
| 981 | new_oppinfo.volt = opp_get_voltage(opp); | 981 | new_oppinfo.volt = dev_pm_opp_get_voltage(opp); |
| 982 | rcu_read_unlock(); | 982 | rcu_read_unlock(); |
| 983 | 983 | ||
| 984 | err = exynos4_bus_setvolt(data, &new_oppinfo, | 984 | err = exynos4_bus_setvolt(data, &new_oppinfo, |
| @@ -1020,7 +1020,7 @@ unlock: | |||
| 1020 | static int exynos4_busfreq_probe(struct platform_device *pdev) | 1020 | static int exynos4_busfreq_probe(struct platform_device *pdev) |
| 1021 | { | 1021 | { |
| 1022 | struct busfreq_data *data; | 1022 | struct busfreq_data *data; |
| 1023 | struct opp *opp; | 1023 | struct dev_pm_opp *opp; |
| 1024 | struct device *dev = &pdev->dev; | 1024 | struct device *dev = &pdev->dev; |
| 1025 | int err = 0; | 1025 | int err = 0; |
| 1026 | 1026 | ||
| @@ -1065,15 +1065,16 @@ static int exynos4_busfreq_probe(struct platform_device *pdev) | |||
| 1065 | } | 1065 | } |
| 1066 | 1066 | ||
| 1067 | rcu_read_lock(); | 1067 | rcu_read_lock(); |
| 1068 | opp = opp_find_freq_floor(dev, &exynos4_devfreq_profile.initial_freq); | 1068 | opp = dev_pm_opp_find_freq_floor(dev, |
| 1069 | &exynos4_devfreq_profile.initial_freq); | ||
| 1069 | if (IS_ERR(opp)) { | 1070 | if (IS_ERR(opp)) { |
| 1070 | rcu_read_unlock(); | 1071 | rcu_read_unlock(); |
| 1071 | dev_err(dev, "Invalid initial frequency %lu kHz.\n", | 1072 | dev_err(dev, "Invalid initial frequency %lu kHz.\n", |
| 1072 | exynos4_devfreq_profile.initial_freq); | 1073 | exynos4_devfreq_profile.initial_freq); |
| 1073 | return PTR_ERR(opp); | 1074 | return PTR_ERR(opp); |
| 1074 | } | 1075 | } |
| 1075 | data->curr_oppinfo.rate = opp_get_freq(opp); | 1076 | data->curr_oppinfo.rate = dev_pm_opp_get_freq(opp); |
| 1076 | data->curr_oppinfo.volt = opp_get_voltage(opp); | 1077 | data->curr_oppinfo.volt = dev_pm_opp_get_voltage(opp); |
| 1077 | rcu_read_unlock(); | 1078 | rcu_read_unlock(); |
| 1078 | 1079 | ||
| 1079 | platform_set_drvdata(pdev, data); | 1080 | platform_set_drvdata(pdev, data); |
diff --git a/drivers/devfreq/exynos/exynos5_bus.c b/drivers/devfreq/exynos/exynos5_bus.c index 93c29f4085bd..0e0bfc17cd5b 100644 --- a/drivers/devfreq/exynos/exynos5_bus.c +++ b/drivers/devfreq/exynos/exynos5_bus.c | |||
| @@ -15,7 +15,7 @@ | |||
| 15 | #include <linux/module.h> | 15 | #include <linux/module.h> |
| 16 | #include <linux/devfreq.h> | 16 | #include <linux/devfreq.h> |
| 17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
| 18 | #include <linux/opp.h> | 18 | #include <linux/pm_opp.h> |
| 19 | #include <linux/slab.h> | 19 | #include <linux/slab.h> |
| 20 | #include <linux/suspend.h> | 20 | #include <linux/suspend.h> |
| 21 | #include <linux/clk.h> | 21 | #include <linux/clk.h> |
| @@ -131,7 +131,7 @@ static int exynos5_busfreq_int_target(struct device *dev, unsigned long *_freq, | |||
| 131 | struct platform_device *pdev = container_of(dev, struct platform_device, | 131 | struct platform_device *pdev = container_of(dev, struct platform_device, |
| 132 | dev); | 132 | dev); |
| 133 | struct busfreq_data_int *data = platform_get_drvdata(pdev); | 133 | struct busfreq_data_int *data = platform_get_drvdata(pdev); |
| 134 | struct opp *opp; | 134 | struct dev_pm_opp *opp; |
| 135 | unsigned long old_freq, freq; | 135 | unsigned long old_freq, freq; |
| 136 | unsigned long volt; | 136 | unsigned long volt; |
| 137 | 137 | ||
| @@ -143,8 +143,8 @@ static int exynos5_busfreq_int_target(struct device *dev, unsigned long *_freq, | |||
| 143 | return PTR_ERR(opp); | 143 | return PTR_ERR(opp); |
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | freq = opp_get_freq(opp); | 146 | freq = dev_pm_opp_get_freq(opp); |
| 147 | volt = opp_get_voltage(opp); | 147 | volt = dev_pm_opp_get_voltage(opp); |
| 148 | rcu_read_unlock(); | 148 | rcu_read_unlock(); |
| 149 | 149 | ||
| 150 | old_freq = data->curr_freq; | 150 | old_freq = data->curr_freq; |
| @@ -245,7 +245,7 @@ static int exynos5250_init_int_tables(struct busfreq_data_int *data) | |||
| 245 | int i, err = 0; | 245 | int i, err = 0; |
| 246 | 246 | ||
| 247 | for (i = LV_0; i < _LV_END; i++) { | 247 | for (i = LV_0; i < _LV_END; i++) { |
| 248 | err = opp_add(data->dev, exynos5_int_opp_table[i].clk, | 248 | err = dev_pm_opp_add(data->dev, exynos5_int_opp_table[i].clk, |
| 249 | exynos5_int_opp_table[i].volt); | 249 | exynos5_int_opp_table[i].volt); |
| 250 | if (err) { | 250 | if (err) { |
| 251 | dev_err(data->dev, "Cannot add opp entries.\n"); | 251 | dev_err(data->dev, "Cannot add opp entries.\n"); |
| @@ -261,7 +261,7 @@ static int exynos5_busfreq_int_pm_notifier_event(struct notifier_block *this, | |||
| 261 | { | 261 | { |
| 262 | struct busfreq_data_int *data = container_of(this, | 262 | struct busfreq_data_int *data = container_of(this, |
| 263 | struct busfreq_data_int, pm_notifier); | 263 | struct busfreq_data_int, pm_notifier); |
| 264 | struct opp *opp; | 264 | struct dev_pm_opp *opp; |
| 265 | unsigned long maxfreq = ULONG_MAX; | 265 | unsigned long maxfreq = ULONG_MAX; |
| 266 | unsigned long freq; | 266 | unsigned long freq; |
| 267 | unsigned long volt; | 267 | unsigned long volt; |
| @@ -275,14 +275,14 @@ static int exynos5_busfreq_int_pm_notifier_event(struct notifier_block *this, | |||
| 275 | data->disabled = true; | 275 | data->disabled = true; |
| 276 | 276 | ||
| 277 | rcu_read_lock(); | 277 | rcu_read_lock(); |
| 278 | opp = opp_find_freq_floor(data->dev, &maxfreq); | 278 | opp = dev_pm_opp_find_freq_floor(data->dev, &maxfreq); |
| 279 | if (IS_ERR(opp)) { | 279 | if (IS_ERR(opp)) { |
| 280 | rcu_read_unlock(); | 280 | rcu_read_unlock(); |
| 281 | err = PTR_ERR(opp); | 281 | err = PTR_ERR(opp); |
| 282 | goto unlock; | 282 | goto unlock; |
| 283 | } | 283 | } |
| 284 | freq = opp_get_freq(opp); | 284 | freq = dev_pm_opp_get_freq(opp); |
| 285 | volt = opp_get_voltage(opp); | 285 | volt = dev_pm_opp_get_voltage(opp); |
| 286 | rcu_read_unlock(); | 286 | rcu_read_unlock(); |
| 287 | 287 | ||
| 288 | err = exynos5_int_setvolt(data, volt); | 288 | err = exynos5_int_setvolt(data, volt); |
| @@ -315,7 +315,7 @@ unlock: | |||
| 315 | static int exynos5_busfreq_int_probe(struct platform_device *pdev) | 315 | static int exynos5_busfreq_int_probe(struct platform_device *pdev) |
| 316 | { | 316 | { |
| 317 | struct busfreq_data_int *data; | 317 | struct busfreq_data_int *data; |
| 318 | struct opp *opp; | 318 | struct dev_pm_opp *opp; |
| 319 | struct device *dev = &pdev->dev; | 319 | struct device *dev = &pdev->dev; |
| 320 | struct device_node *np; | 320 | struct device_node *np; |
| 321 | unsigned long initial_freq; | 321 | unsigned long initial_freq; |
| @@ -367,7 +367,7 @@ static int exynos5_busfreq_int_probe(struct platform_device *pdev) | |||
| 367 | } | 367 | } |
| 368 | 368 | ||
| 369 | rcu_read_lock(); | 369 | rcu_read_lock(); |
| 370 | opp = opp_find_freq_floor(dev, | 370 | opp = dev_pm_opp_find_freq_floor(dev, |
| 371 | &exynos5_devfreq_int_profile.initial_freq); | 371 | &exynos5_devfreq_int_profile.initial_freq); |
| 372 | if (IS_ERR(opp)) { | 372 | if (IS_ERR(opp)) { |
| 373 | rcu_read_unlock(); | 373 | rcu_read_unlock(); |
| @@ -376,8 +376,8 @@ static int exynos5_busfreq_int_probe(struct platform_device *pdev) | |||
| 376 | err = PTR_ERR(opp); | 376 | err = PTR_ERR(opp); |
| 377 | goto err_opp_add; | 377 | goto err_opp_add; |
| 378 | } | 378 | } |
| 379 | initial_freq = opp_get_freq(opp); | 379 | initial_freq = dev_pm_opp_get_freq(opp); |
| 380 | initial_volt = opp_get_voltage(opp); | 380 | initial_volt = dev_pm_opp_get_voltage(opp); |
| 381 | rcu_read_unlock(); | 381 | rcu_read_unlock(); |
| 382 | data->curr_freq = initial_freq; | 382 | data->curr_freq = initial_freq; |
| 383 | 383 | ||
