@@ -259,38 +259,33 @@ static int clk_rpmh_bcm_send_cmd(struct clk_rpmh *c, bool enable)
259
259
{
260
260
struct tcs_cmd cmd = { 0 };
261
261
u32 cmd_state ;
262
- int ret ;
262
+ int ret = 0 ;
263
263
264
264
mutex_lock (& rpmh_clk_lock );
265
-
266
- cmd_state = 0 ;
267
265
if (enable ) {
268
266
cmd_state = 1 ;
269
267
if (c -> aggr_state )
270
268
cmd_state = c -> aggr_state ;
269
+ } else {
270
+ cmd_state = 0 ;
271
271
}
272
272
273
- if (c -> last_sent_aggr_state == cmd_state ) {
274
- mutex_unlock (& rpmh_clk_lock );
275
- return 0 ;
276
- }
277
-
278
- cmd .addr = c -> res_addr ;
279
- cmd .data = BCM_TCS_CMD (1 , enable , 0 , cmd_state );
273
+ if (c -> last_sent_aggr_state != cmd_state ) {
274
+ cmd .addr = c -> res_addr ;
275
+ cmd .data = BCM_TCS_CMD (1 , enable , 0 , cmd_state );
280
276
281
- ret = clk_rpmh_send (c , RPMH_ACTIVE_ONLY_STATE , & cmd , enable );
282
- if (ret ) {
283
- dev_err (c -> dev , "set active state of %s failed: (%d)\n" ,
284
- c -> res_name , ret );
285
- mutex_unlock (& rpmh_clk_lock );
286
- return ret ;
277
+ ret = clk_rpmh_send (c , RPMH_ACTIVE_ONLY_STATE , & cmd , enable );
278
+ if (ret ) {
279
+ dev_err (c -> dev , "set active state of %s failed: (%d)\n" ,
280
+ c -> res_name , ret );
281
+ } else {
282
+ c -> last_sent_aggr_state = cmd_state ;
283
+ }
287
284
}
288
285
289
- c -> last_sent_aggr_state = cmd_state ;
290
-
291
286
mutex_unlock (& rpmh_clk_lock );
292
287
293
- return 0 ;
288
+ return ret ;
294
289
}
295
290
296
291
static int clk_rpmh_bcm_prepare (struct clk_hw * hw )
0 commit comments