@@ -1061,6 +1061,27 @@ static int _set_opp_bw(const struct opp_table *opp_table,
1061
1061
return 0 ;
1062
1062
}
1063
1063
1064
+ static int _set_opp_level (struct device * dev , struct dev_pm_opp * opp )
1065
+ {
1066
+ unsigned int level = 0 ;
1067
+ int ret = 0 ;
1068
+
1069
+ if (opp ) {
1070
+ if (opp -> level == OPP_LEVEL_UNSET )
1071
+ return 0 ;
1072
+
1073
+ level = opp -> level ;
1074
+ }
1075
+
1076
+ /* Request a new performance state through the device's PM domain. */
1077
+ ret = dev_pm_domain_set_performance_state (dev , level );
1078
+ if (ret )
1079
+ dev_err (dev , "Failed to set performance state %u (%d)\n" , level ,
1080
+ ret );
1081
+
1082
+ return ret ;
1083
+ }
1084
+
1064
1085
/* This is only called for PM domain for now */
1065
1086
static int _set_required_opps (struct device * dev , struct opp_table * opp_table ,
1066
1087
struct dev_pm_opp * opp , bool up )
@@ -1091,7 +1112,7 @@ static int _set_required_opps(struct device *dev, struct opp_table *opp_table,
1091
1112
if (devs [index ]) {
1092
1113
required_opp = opp ? opp -> required_opps [index ] : NULL ;
1093
1114
1094
- ret = dev_pm_opp_set_opp (devs [index ], required_opp );
1115
+ ret = _set_opp_level (devs [index ], required_opp );
1095
1116
if (ret )
1096
1117
return ret ;
1097
1118
}
@@ -1102,27 +1123,6 @@ static int _set_required_opps(struct device *dev, struct opp_table *opp_table,
1102
1123
return 0 ;
1103
1124
}
1104
1125
1105
- static int _set_opp_level (struct device * dev , struct dev_pm_opp * opp )
1106
- {
1107
- unsigned int level = 0 ;
1108
- int ret = 0 ;
1109
-
1110
- if (opp ) {
1111
- if (opp -> level == OPP_LEVEL_UNSET )
1112
- return 0 ;
1113
-
1114
- level = opp -> level ;
1115
- }
1116
-
1117
- /* Request a new performance state through the device's PM domain. */
1118
- ret = dev_pm_domain_set_performance_state (dev , level );
1119
- if (ret )
1120
- dev_err (dev , "Failed to set performance state %u (%d)\n" , level ,
1121
- ret );
1122
-
1123
- return ret ;
1124
- }
1125
-
1126
1126
static void _find_current_opp (struct device * dev , struct opp_table * opp_table )
1127
1127
{
1128
1128
struct dev_pm_opp * opp = ERR_PTR (- ENODEV );
@@ -2457,18 +2457,6 @@ static int _opp_attach_genpd(struct opp_table *opp_table, struct device *dev,
2457
2457
}
2458
2458
}
2459
2459
2460
- /*
2461
- * Add the virtual genpd device as a user of the OPP table, so
2462
- * we can call dev_pm_opp_set_opp() on it directly.
2463
- *
2464
- * This will be automatically removed when the OPP table is
2465
- * removed, don't need to handle that here.
2466
- */
2467
- if (!_add_opp_dev (virt_dev , opp_table -> required_opp_tables [index ])) {
2468
- ret = - ENOMEM ;
2469
- goto err ;
2470
- }
2471
-
2472
2460
opp_table -> required_devs [index ] = virt_dev ;
2473
2461
index ++ ;
2474
2462
name ++ ;
0 commit comments