@@ -291,14 +291,14 @@ static int aw9523_pconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
291291 unsigned int mask , val ;
292292 int i , rc ;
293293
294- mutex_lock (& awi -> i2c_lock );
294+ guard ( mutex ) (& awi -> i2c_lock );
295295 for (i = 0 ; i < num_configs ; i ++ ) {
296296 param = pinconf_to_config_param (configs [i ]);
297297 arg = pinconf_to_config_argument (configs [i ]);
298298
299299 rc = aw9523_pcfg_param_to_reg (param , pin , & reg );
300300 if (rc )
301- goto end ;
301+ return rc ;
302302
303303 switch (param ) {
304304 case PIN_CONFIG_LEVEL :
@@ -307,7 +307,7 @@ static int aw9523_pconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
307307 AW9523_REG_CONF_STATE (pin ),
308308 BIT (regbit ), 0 );
309309 if (rc )
310- goto end ;
310+ return rc ;
311311
312312 /* Then, fall through to config output level */
313313 fallthrough ;
@@ -323,10 +323,9 @@ static int aw9523_pconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
323323 break ;
324324 case PIN_CONFIG_DRIVE_OPEN_DRAIN :
325325 /* Open-Drain is supported only on port 0 */
326- if (pin >= AW9523_PINS_PER_PORT ) {
327- rc = - ENOTSUPP ;
328- goto end ;
329- }
326+ if (pin >= AW9523_PINS_PER_PORT )
327+ return - ENOTSUPP ;
328+
330329 mask = AW9523_GCR_GPOMD_MASK ;
331330 val = 0 ;
332331 break ;
@@ -341,17 +340,15 @@ static int aw9523_pconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
341340 val = AW9523_GCR_GPOMD_MASK ;
342341 break ;
343342 default :
344- rc = - ENOTSUPP ;
345- goto end ;
343+ return - ENOTSUPP ;
346344 }
347345
348346 rc = regmap_update_bits (awi -> regmap , reg , mask , val );
349347 if (rc )
350- goto end ;
348+ return rc ;
351349 }
352- end :
353- mutex_unlock (& awi -> i2c_lock );
354- return rc ;
350+
351+ return 0 ;
355352}
356353
357354static const struct pinconf_ops aw9523_pinconf_ops = {
@@ -599,14 +596,14 @@ static int aw9523_gpio_get_multiple(struct gpio_chip *chip,
599596 u8 m , state = 0 ;
600597 int ret ;
601598
602- mutex_lock (& awi -> i2c_lock );
599+ guard ( mutex ) (& awi -> i2c_lock );
603600
604601 /* Port 0 (gpio 0-7) */
605602 m = * mask ;
606603 if (m ) {
607604 ret = _aw9523_gpio_get_multiple (awi , 0 , & state , m );
608605 if (ret )
609- goto out ;
606+ return ret ;
610607 }
611608 * bits = state ;
612609
@@ -616,13 +613,12 @@ static int aw9523_gpio_get_multiple(struct gpio_chip *chip,
616613 ret = _aw9523_gpio_get_multiple (awi , AW9523_PINS_PER_PORT ,
617614 & state , m );
618615 if (ret )
619- goto out ;
616+ return ret ;
620617
621618 * bits |= (state << 8 );
622619 }
623- out :
624- mutex_unlock (& awi -> i2c_lock );
625- return ret ;
620+
621+ return 0 ;
626622}
627623
628624static int aw9523_gpio_set_multiple (struct gpio_chip * chip ,
@@ -632,30 +628,28 @@ static int aw9523_gpio_set_multiple(struct gpio_chip *chip,
632628 struct aw9523 * awi = gpiochip_get_data (chip );
633629 u8 mask_lo , mask_hi , bits_lo , bits_hi ;
634630 unsigned int reg ;
635- int ret = 0 ;
631+ int ret ;
636632
637633 mask_lo = * mask ;
638634 mask_hi = * mask >> 8 ;
639635 bits_lo = * bits ;
640636 bits_hi = * bits >> 8 ;
641637
642- mutex_lock (& awi -> i2c_lock );
638+ guard ( mutex ) (& awi -> i2c_lock );
643639 if (mask_hi ) {
644640 reg = AW9523_REG_OUT_STATE (AW9523_PINS_PER_PORT );
645641 ret = regmap_write_bits (awi -> regmap , reg , mask_hi , bits_hi );
646642 if (ret )
647- goto out ;
643+ return ret ;
648644 }
649645 if (mask_lo ) {
650646 reg = AW9523_REG_OUT_STATE (0 );
651647 ret = regmap_write_bits (awi -> regmap , reg , mask_lo , bits_lo );
652648 if (ret )
653- goto out ;
649+ return ret ;
654650 }
655651
656- out :
657- mutex_unlock (& awi -> i2c_lock );
658- return ret ;
652+ return 0 ;
659653}
660654
661655static int aw9523_gpio_set (struct gpio_chip * chip , unsigned int offset ,
@@ -695,16 +689,15 @@ static int aw9523_direction_output(struct gpio_chip *chip,
695689 u8 regbit = offset % AW9523_PINS_PER_PORT ;
696690 int ret ;
697691
698- mutex_lock (& awi -> i2c_lock );
692+ guard ( mutex ) (& awi -> i2c_lock );
699693 ret = regmap_update_bits (awi -> regmap , AW9523_REG_OUT_STATE (offset ),
700694 BIT (regbit ), value ? BIT (regbit ) : 0 );
701695 if (ret )
702- goto end ;
696+ return ret ;
703697
704698 ret = regmap_update_bits (awi -> regmap , AW9523_REG_CONF_STATE (offset ),
705699 BIT (regbit ), 0 );
706- end :
707- mutex_unlock (& awi -> i2c_lock );
700+
708701 return ret ;
709702}
710703
0 commit comments