Skip to content

Commit 8dfa8bb

Browse files
committed
Merge tag 'opp-updates-6.19' of git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm
Pull OPP updates for 6.19 from Viresh Kumar: "- Minor improvements to the Rust interface (Tamir Duberstein). - Fixes to scope-based pointers (Viresh Kumar)." * tag 'opp-updates-6.19' of git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm: rust: opp: simplify callers of `to_c_str_array` OPP: Initialize scope-based pointers inline rust: opp: fix broken rustdoc link
2 parents ac3fd01 + 33ffb0a commit 8dfa8bb

4 files changed

Lines changed: 176 additions & 148 deletions

File tree

drivers/opp/core.c

Lines changed: 38 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -309,9 +309,9 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_is_turbo);
309309
*/
310310
unsigned long dev_pm_opp_get_max_clock_latency(struct device *dev)
311311
{
312-
struct opp_table *opp_table __free(put_opp_table);
312+
struct opp_table *opp_table __free(put_opp_table) =
313+
_find_opp_table(dev);
313314

314-
opp_table = _find_opp_table(dev);
315315
if (IS_ERR(opp_table))
316316
return 0;
317317

@@ -327,7 +327,6 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_get_max_clock_latency);
327327
*/
328328
unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev)
329329
{
330-
struct opp_table *opp_table __free(put_opp_table);
331330
struct dev_pm_opp *opp;
332331
struct regulator *reg;
333332
unsigned long latency_ns = 0;
@@ -337,7 +336,9 @@ unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev)
337336
unsigned long max;
338337
} *uV;
339338

340-
opp_table = _find_opp_table(dev);
339+
struct opp_table *opp_table __free(put_opp_table) =
340+
_find_opp_table(dev);
341+
341342
if (IS_ERR(opp_table))
342343
return 0;
343344

@@ -409,10 +410,11 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_get_max_transition_latency);
409410
*/
410411
unsigned long dev_pm_opp_get_suspend_opp_freq(struct device *dev)
411412
{
412-
struct opp_table *opp_table __free(put_opp_table);
413413
unsigned long freq = 0;
414414

415-
opp_table = _find_opp_table(dev);
415+
struct opp_table *opp_table __free(put_opp_table) =
416+
_find_opp_table(dev);
417+
416418
if (IS_ERR(opp_table))
417419
return 0;
418420

@@ -447,9 +449,9 @@ int _get_opp_count(struct opp_table *opp_table)
447449
*/
448450
int dev_pm_opp_get_opp_count(struct device *dev)
449451
{
450-
struct opp_table *opp_table __free(put_opp_table);
452+
struct opp_table *opp_table __free(put_opp_table) =
453+
_find_opp_table(dev);
451454

452-
opp_table = _find_opp_table(dev);
453455
if (IS_ERR(opp_table)) {
454456
dev_dbg(dev, "%s: OPP table not found (%ld)\n",
455457
__func__, PTR_ERR(opp_table));
@@ -605,9 +607,9 @@ _find_key(struct device *dev, unsigned long *key, int index, bool available,
605607
unsigned long opp_key, unsigned long key),
606608
bool (*assert)(struct opp_table *opp_table, unsigned int index))
607609
{
608-
struct opp_table *opp_table __free(put_opp_table);
610+
struct opp_table *opp_table __free(put_opp_table) =
611+
_find_opp_table(dev);
609612

610-
opp_table = _find_opp_table(dev);
611613
if (IS_ERR(opp_table)) {
612614
dev_err(dev, "%s: OPP table not found (%ld)\n", __func__,
613615
PTR_ERR(opp_table));
@@ -1410,12 +1412,13 @@ static int _set_opp(struct device *dev, struct opp_table *opp_table,
14101412
*/
14111413
int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq)
14121414
{
1413-
struct opp_table *opp_table __free(put_opp_table);
14141415
struct dev_pm_opp *opp __free(put_opp) = NULL;
14151416
unsigned long freq = 0, temp_freq;
14161417
bool forced = false;
14171418

1418-
opp_table = _find_opp_table(dev);
1419+
struct opp_table *opp_table __free(put_opp_table) =
1420+
_find_opp_table(dev);
1421+
14191422
if (IS_ERR(opp_table)) {
14201423
dev_err(dev, "%s: device's opp table doesn't exist\n", __func__);
14211424
return PTR_ERR(opp_table);
@@ -1477,9 +1480,9 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_set_rate);
14771480
*/
14781481
int dev_pm_opp_set_opp(struct device *dev, struct dev_pm_opp *opp)
14791482
{
1480-
struct opp_table *opp_table __free(put_opp_table);
1483+
struct opp_table *opp_table __free(put_opp_table) =
1484+
_find_opp_table(dev);
14811485

1482-
opp_table = _find_opp_table(dev);
14831486
if (IS_ERR(opp_table)) {
14841487
dev_err(dev, "%s: device opp doesn't exist\n", __func__);
14851488
return PTR_ERR(opp_table);
@@ -1794,10 +1797,11 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_put);
17941797
*/
17951798
void dev_pm_opp_remove(struct device *dev, unsigned long freq)
17961799
{
1797-
struct opp_table *opp_table __free(put_opp_table);
17981800
struct dev_pm_opp *opp = NULL, *iter;
17991801

1800-
opp_table = _find_opp_table(dev);
1802+
struct opp_table *opp_table __free(put_opp_table) =
1803+
_find_opp_table(dev);
1804+
18011805
if (IS_ERR(opp_table))
18021806
return;
18031807

@@ -1885,9 +1889,9 @@ bool _opp_remove_all_static(struct opp_table *opp_table)
18851889
*/
18861890
void dev_pm_opp_remove_all_dynamic(struct device *dev)
18871891
{
1888-
struct opp_table *opp_table __free(put_opp_table);
1892+
struct opp_table *opp_table __free(put_opp_table) =
1893+
_find_opp_table(dev);
18891894

1890-
opp_table = _find_opp_table(dev);
18911895
if (IS_ERR(opp_table))
18921896
return;
18931897

@@ -2871,10 +2875,11 @@ static int _opp_set_availability(struct device *dev, unsigned long freq,
28712875
bool availability_req)
28722876
{
28732877
struct dev_pm_opp *opp __free(put_opp) = ERR_PTR(-ENODEV), *tmp_opp;
2874-
struct opp_table *opp_table __free(put_opp_table);
28752878

28762879
/* Find the opp_table */
2877-
opp_table = _find_opp_table(dev);
2880+
struct opp_table *opp_table __free(put_opp_table) =
2881+
_find_opp_table(dev);
2882+
28782883
if (IS_ERR(opp_table)) {
28792884
dev_warn(dev, "%s: Device OPP not found (%ld)\n", __func__,
28802885
PTR_ERR(opp_table));
@@ -2932,11 +2937,12 @@ int dev_pm_opp_adjust_voltage(struct device *dev, unsigned long freq,
29322937

29332938
{
29342939
struct dev_pm_opp *opp __free(put_opp) = ERR_PTR(-ENODEV), *tmp_opp;
2935-
struct opp_table *opp_table __free(put_opp_table);
29362940
int r;
29372941

29382942
/* Find the opp_table */
2939-
opp_table = _find_opp_table(dev);
2943+
struct opp_table *opp_table __free(put_opp_table) =
2944+
_find_opp_table(dev);
2945+
29402946
if (IS_ERR(opp_table)) {
29412947
r = PTR_ERR(opp_table);
29422948
dev_warn(dev, "%s: Device OPP not found (%d)\n", __func__, r);
@@ -2986,12 +2992,13 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_adjust_voltage);
29862992
*/
29872993
int dev_pm_opp_sync_regulators(struct device *dev)
29882994
{
2989-
struct opp_table *opp_table __free(put_opp_table);
29902995
struct regulator *reg;
29912996
int ret, i;
29922997

29932998
/* Device may not have OPP table */
2994-
opp_table = _find_opp_table(dev);
2999+
struct opp_table *opp_table __free(put_opp_table) =
3000+
_find_opp_table(dev);
3001+
29953002
if (IS_ERR(opp_table))
29963003
return 0;
29973004

@@ -3062,9 +3069,9 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_disable);
30623069
*/
30633070
int dev_pm_opp_register_notifier(struct device *dev, struct notifier_block *nb)
30643071
{
3065-
struct opp_table *opp_table __free(put_opp_table);
3072+
struct opp_table *opp_table __free(put_opp_table) =
3073+
_find_opp_table(dev);
30663074

3067-
opp_table = _find_opp_table(dev);
30683075
if (IS_ERR(opp_table))
30693076
return PTR_ERR(opp_table);
30703077

@@ -3082,9 +3089,9 @@ EXPORT_SYMBOL(dev_pm_opp_register_notifier);
30823089
int dev_pm_opp_unregister_notifier(struct device *dev,
30833090
struct notifier_block *nb)
30843091
{
3085-
struct opp_table *opp_table __free(put_opp_table);
3092+
struct opp_table *opp_table __free(put_opp_table) =
3093+
_find_opp_table(dev);
30863094

3087-
opp_table = _find_opp_table(dev);
30883095
if (IS_ERR(opp_table))
30893096
return PTR_ERR(opp_table);
30903097

@@ -3101,10 +3108,10 @@ EXPORT_SYMBOL(dev_pm_opp_unregister_notifier);
31013108
*/
31023109
void dev_pm_opp_remove_table(struct device *dev)
31033110
{
3104-
struct opp_table *opp_table __free(put_opp_table);
3105-
31063111
/* Check for existing table for 'dev' */
3107-
opp_table = _find_opp_table(dev);
3112+
struct opp_table *opp_table __free(put_opp_table) =
3113+
_find_opp_table(dev);
3114+
31083115
if (IS_ERR(opp_table)) {
31093116
int error = PTR_ERR(opp_table);
31103117

drivers/opp/cpu.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@ int dev_pm_opp_init_cpufreq_table(struct device *dev,
5656
return -ENOMEM;
5757

5858
for (i = 0, rate = 0; i < max_opps; i++, rate++) {
59-
struct dev_pm_opp *opp __free(put_opp);
60-
6159
/* find next rate */
62-
opp = dev_pm_opp_find_freq_ceil(dev, &rate);
60+
struct dev_pm_opp *opp __free(put_opp) =
61+
dev_pm_opp_find_freq_ceil(dev, &rate);
62+
6363
if (IS_ERR(opp)) {
6464
ret = PTR_ERR(opp);
6565
goto out;
@@ -154,12 +154,13 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_cpumask_remove_table);
154154
int dev_pm_opp_set_sharing_cpus(struct device *cpu_dev,
155155
const struct cpumask *cpumask)
156156
{
157-
struct opp_table *opp_table __free(put_opp_table);
158157
struct opp_device *opp_dev;
159158
struct device *dev;
160159
int cpu;
161160

162-
opp_table = _find_opp_table(cpu_dev);
161+
struct opp_table *opp_table __free(put_opp_table) =
162+
_find_opp_table(cpu_dev);
163+
163164
if (IS_ERR(opp_table))
164165
return PTR_ERR(opp_table);
165166

@@ -201,10 +202,11 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_set_sharing_cpus);
201202
*/
202203
int dev_pm_opp_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)
203204
{
204-
struct opp_table *opp_table __free(put_opp_table);
205205
struct opp_device *opp_dev;
206206

207-
opp_table = _find_opp_table(cpu_dev);
207+
struct opp_table *opp_table __free(put_opp_table) =
208+
_find_opp_table(cpu_dev);
209+
208210
if (IS_ERR(opp_table))
209211
return PTR_ERR(opp_table);
210212

0 commit comments

Comments
 (0)