44 * Copyright (c) 2019, Linaro Limited
55 */
66
7+ #include <linux/cleanup.h>
78#include <linux/module.h>
89#include <linux/err.h>
910#include <linux/debugfs.h>
@@ -747,9 +748,9 @@ static int cpr_set_performance_state(struct generic_pm_domain *domain,
747748 struct cpr_drv * drv = container_of (domain , struct cpr_drv , pd );
748749 struct corner * corner , * end ;
749750 enum voltage_change_dir dir ;
750- int ret = 0 , new_uV ;
751+ int ret , new_uV ;
751752
752- mutex_lock (& drv -> lock );
753+ guard ( mutex ) (& drv -> lock );
753754
754755 dev_dbg (drv -> dev , "%s: setting perf state: %u (prev state: %u)\n" ,
755756 __func__ , state , cpr_get_cur_perf_state (drv ));
@@ -760,10 +761,8 @@ static int cpr_set_performance_state(struct generic_pm_domain *domain,
760761 */
761762 corner = drv -> corners + state - 1 ;
762763 end = & drv -> corners [drv -> num_corners - 1 ];
763- if (corner > end || corner < drv -> corners ) {
764- ret = - EINVAL ;
765- goto unlock ;
766- }
764+ if (corner > end || corner < drv -> corners )
765+ return - EINVAL ;
767766
768767 /* Determine direction */
769768 if (drv -> corner > corner )
@@ -783,7 +782,7 @@ static int cpr_set_performance_state(struct generic_pm_domain *domain,
783782
784783 ret = cpr_scale_voltage (drv , corner , new_uV , dir );
785784 if (ret )
786- goto unlock ;
785+ return ret ;
787786
788787 if (cpr_is_allowed (drv )) {
789788 cpr_irq_clr (drv );
@@ -794,10 +793,7 @@ static int cpr_set_performance_state(struct generic_pm_domain *domain,
794793
795794 drv -> corner = corner ;
796795
797- unlock :
798- mutex_unlock (& drv -> lock );
799-
800- return ret ;
796+ return 0 ;
801797}
802798
803799static int
@@ -1437,9 +1433,9 @@ static int cpr_pd_attach_dev(struct generic_pm_domain *domain,
14371433{
14381434 struct cpr_drv * drv = container_of (domain , struct cpr_drv , pd );
14391435 const struct acc_desc * acc_desc = drv -> acc_desc ;
1440- int ret = 0 ;
1436+ int ret ;
14411437
1442- mutex_lock (& drv -> lock );
1438+ guard ( mutex ) (& drv -> lock );
14431439
14441440 dev_dbg (drv -> dev , "attach callback for: %s\n" , dev_name (dev ));
14451441
@@ -1451,7 +1447,7 @@ static int cpr_pd_attach_dev(struct generic_pm_domain *domain,
14511447 * additional initialization when further CPUs get attached.
14521448 */
14531449 if (drv -> attached_cpu_dev )
1454- goto unlock ;
1450+ return 0 ;
14551451
14561452 /*
14571453 * cpr_scale_voltage() requires the direction (if we are changing
@@ -1463,11 +1459,10 @@ static int cpr_pd_attach_dev(struct generic_pm_domain *domain,
14631459 * the first time cpr_set_performance_state() is called.
14641460 */
14651461 drv -> cpu_clk = devm_clk_get (dev , NULL );
1466- if (IS_ERR (drv -> cpu_clk )) {
1467- ret = dev_err_probe (drv -> dev , PTR_ERR (drv -> cpu_clk ),
1468- "could not get cpu clk\n" );
1469- goto unlock ;
1470- }
1462+ if (IS_ERR (drv -> cpu_clk ))
1463+ return dev_err_probe (drv -> dev , PTR_ERR (drv -> cpu_clk ),
1464+ "could not get cpu clk\n" );
1465+
14711466 drv -> attached_cpu_dev = dev ;
14721467
14731468 dev_dbg (drv -> dev , "using cpu clk from: %s\n" ,
@@ -1484,42 +1479,39 @@ static int cpr_pd_attach_dev(struct generic_pm_domain *domain,
14841479 ret = dev_pm_opp_get_opp_count (& drv -> pd .dev );
14851480 if (ret < 0 ) {
14861481 dev_err (drv -> dev , "could not get OPP count\n" );
1487- goto unlock ;
1482+ return ret ;
14881483 }
14891484 drv -> num_corners = ret ;
14901485
14911486 if (drv -> num_corners < 2 ) {
14921487 dev_err (drv -> dev , "need at least 2 OPPs to use CPR\n" );
1493- ret = - EINVAL ;
1494- goto unlock ;
1488+ return - EINVAL ;
14951489 }
14961490
14971491 drv -> corners = devm_kcalloc (drv -> dev , drv -> num_corners ,
14981492 sizeof (* drv -> corners ),
14991493 GFP_KERNEL );
1500- if (!drv -> corners ) {
1501- ret = - ENOMEM ;
1502- goto unlock ;
1503- }
1494+ if (!drv -> corners )
1495+ return - ENOMEM ;
15041496
15051497 ret = cpr_corner_init (drv );
15061498 if (ret )
1507- goto unlock ;
1499+ return ret ;
15081500
15091501 cpr_set_loop_allowed (drv );
15101502
15111503 ret = cpr_init_parameters (drv );
15121504 if (ret )
1513- goto unlock ;
1505+ return ret ;
15141506
15151507 /* Configure CPR HW but keep it disabled */
15161508 ret = cpr_config (drv );
15171509 if (ret )
1518- goto unlock ;
1510+ return ret ;
15191511
15201512 ret = cpr_find_initial_corner (drv );
15211513 if (ret )
1522- goto unlock ;
1514+ return ret ;
15231515
15241516 if (acc_desc -> config )
15251517 regmap_multi_reg_write (drv -> tcsr , acc_desc -> config ,
@@ -1534,10 +1526,7 @@ static int cpr_pd_attach_dev(struct generic_pm_domain *domain,
15341526 dev_info (drv -> dev , "driver initialized with %u OPPs\n" ,
15351527 drv -> num_corners );
15361528
1537- unlock :
1538- mutex_unlock (& drv -> lock );
1539-
1540- return ret ;
1529+ return 0 ;
15411530}
15421531
15431532static int cpr_debug_info_show (struct seq_file * s , void * unused )
0 commit comments