@@ -1179,6 +1179,31 @@ static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val)
1179
1179
return ret_val ;
1180
1180
}
1181
1181
1182
+ static int cppc_get_reg_val_in_pcc (int cpu , struct cpc_register_resource * reg , u64 * val )
1183
+ {
1184
+ int pcc_ss_id = per_cpu (cpu_pcc_subspace_idx , cpu );
1185
+ struct cppc_pcc_data * pcc_ss_data = NULL ;
1186
+ int ret ;
1187
+
1188
+ if (pcc_ss_id < 0 ) {
1189
+ pr_debug ("Invalid pcc_ss_id\n" );
1190
+ return - ENODEV ;
1191
+ }
1192
+
1193
+ pcc_ss_data = pcc_data [pcc_ss_id ];
1194
+
1195
+ down_write (& pcc_ss_data -> pcc_lock );
1196
+
1197
+ if (send_pcc_cmd (pcc_ss_id , CMD_READ ) >= 0 )
1198
+ ret = cpc_read (cpu , reg , val );
1199
+ else
1200
+ ret = - EIO ;
1201
+
1202
+ up_write (& pcc_ss_data -> pcc_lock );
1203
+
1204
+ return ret ;
1205
+ }
1206
+
1182
1207
static int cppc_get_reg_val (int cpu , enum cppc_regs reg_idx , u64 * val )
1183
1208
{
1184
1209
struct cpc_desc * cpc_desc = per_cpu (cpc_desc_ptr , cpu );
@@ -1201,29 +1226,8 @@ static int cppc_get_reg_val(int cpu, enum cppc_regs reg_idx, u64 *val)
1201
1226
return - EOPNOTSUPP ;
1202
1227
}
1203
1228
1204
- if (CPC_IN_PCC (reg )) {
1205
- int pcc_ss_id = per_cpu (cpu_pcc_subspace_idx , cpu );
1206
- struct cppc_pcc_data * pcc_ss_data = NULL ;
1207
- int ret ;
1208
-
1209
- if (pcc_ss_id < 0 ) {
1210
- pr_debug ("Invalid pcc_ss_id\n" );
1211
- return - ENODEV ;
1212
- }
1213
-
1214
- pcc_ss_data = pcc_data [pcc_ss_id ];
1215
-
1216
- down_write (& pcc_ss_data -> pcc_lock );
1217
-
1218
- if (send_pcc_cmd (pcc_ss_id , CMD_READ ) >= 0 )
1219
- ret = cpc_read (cpu , reg , val );
1220
- else
1221
- ret = - EIO ;
1222
-
1223
- up_write (& pcc_ss_data -> pcc_lock );
1224
-
1225
- return ret ;
1226
- }
1229
+ if (CPC_IN_PCC (reg ))
1230
+ return cppc_get_reg_val_in_pcc (cpu , reg , val );
1227
1231
1228
1232
return cpc_read (cpu , reg , val );
1229
1233
}
0 commit comments