1010#include <linux/acpi.h>
1111#include <linux/array_size.h>
1212#include <linux/bitops.h>
13+ #include <linux/cleanup.h>
1314#include <linux/gpio/driver.h>
1415#include <linux/interrupt.h>
1516#include <linux/io.h>
@@ -291,10 +292,9 @@ static int lp_pinmux_set_mux(struct pinctrl_dev *pctldev,
291292{
292293 struct intel_pinctrl * lg = pinctrl_dev_get_drvdata (pctldev );
293294 const struct intel_pingroup * grp = & lg -> soc -> groups [group ];
294- unsigned long flags ;
295295 int i ;
296296
297- raw_spin_lock_irqsave ( & lg -> lock , flags );
297+ guard ( raw_spinlock_irqsave )( & lg -> lock );
298298
299299 /* Now enable the mux setting for each pin in the group */
300300 for (i = 0 ; i < grp -> grp .npins ; i ++ ) {
@@ -312,8 +312,6 @@ static int lp_pinmux_set_mux(struct pinctrl_dev *pctldev,
312312 iowrite32 (value , reg );
313313 }
314314
315- raw_spin_unlock_irqrestore (& lg -> lock , flags );
316-
317315 return 0 ;
318316}
319317
@@ -334,10 +332,9 @@ static int lp_gpio_request_enable(struct pinctrl_dev *pctldev,
334332 struct intel_pinctrl * lg = pinctrl_dev_get_drvdata (pctldev );
335333 void __iomem * reg = lp_gpio_reg (& lg -> chip , pin , LP_CONFIG1 );
336334 void __iomem * conf2 = lp_gpio_reg (& lg -> chip , pin , LP_CONFIG2 );
337- unsigned long flags ;
338335 u32 value ;
339336
340- raw_spin_lock_irqsave ( & lg -> lock , flags );
337+ guard ( raw_spinlock_irqsave )( & lg -> lock );
341338
342339 /*
343340 * Reconfigure pin to GPIO mode if needed and issue a warning,
@@ -352,8 +349,6 @@ static int lp_gpio_request_enable(struct pinctrl_dev *pctldev,
352349 /* Enable input sensing */
353350 lp_gpio_enable_input (conf2 );
354351
355- raw_spin_unlock_irqrestore (& lg -> lock , flags );
356-
357352 return 0 ;
358353}
359354
@@ -363,14 +358,11 @@ static void lp_gpio_disable_free(struct pinctrl_dev *pctldev,
363358{
364359 struct intel_pinctrl * lg = pinctrl_dev_get_drvdata (pctldev );
365360 void __iomem * conf2 = lp_gpio_reg (& lg -> chip , pin , LP_CONFIG2 );
366- unsigned long flags ;
367361
368- raw_spin_lock_irqsave ( & lg -> lock , flags );
362+ guard ( raw_spinlock_irqsave )( & lg -> lock );
369363
370364 /* Disable input sensing */
371365 lp_gpio_disable_input (conf2 );
372-
373- raw_spin_unlock_irqrestore (& lg -> lock , flags );
374366}
375367
376368static int lp_gpio_set_direction (struct pinctrl_dev * pctldev ,
@@ -379,10 +371,9 @@ static int lp_gpio_set_direction(struct pinctrl_dev *pctldev,
379371{
380372 struct intel_pinctrl * lg = pinctrl_dev_get_drvdata (pctldev );
381373 void __iomem * reg = lp_gpio_reg (& lg -> chip , pin , LP_CONFIG1 );
382- unsigned long flags ;
383374 u32 value ;
384375
385- raw_spin_lock_irqsave ( & lg -> lock , flags );
376+ guard ( raw_spinlock_irqsave )( & lg -> lock );
386377
387378 value = ioread32 (reg );
388379 value &= ~DIR_BIT ;
@@ -400,8 +391,6 @@ static int lp_gpio_set_direction(struct pinctrl_dev *pctldev,
400391 }
401392 iowrite32 (value , reg );
402393
403- raw_spin_unlock_irqrestore (& lg -> lock , flags );
404-
405394 return 0 ;
406395}
407396
@@ -421,13 +410,11 @@ static int lp_pin_config_get(struct pinctrl_dev *pctldev, unsigned int pin,
421410 struct intel_pinctrl * lg = pinctrl_dev_get_drvdata (pctldev );
422411 void __iomem * conf2 = lp_gpio_reg (& lg -> chip , pin , LP_CONFIG2 );
423412 enum pin_config_param param = pinconf_to_config_param (* config );
424- unsigned long flags ;
425413 u32 value , pull ;
426414 u16 arg ;
427415
428- raw_spin_lock_irqsave (& lg -> lock , flags );
429- value = ioread32 (conf2 );
430- raw_spin_unlock_irqrestore (& lg -> lock , flags );
416+ scoped_guard (raw_spinlock_irqsave , & lg -> lock )
417+ value = ioread32 (conf2 );
431418
432419 pull = value & GPIWP_MASK ;
433420
@@ -464,11 +451,10 @@ static int lp_pin_config_set(struct pinctrl_dev *pctldev, unsigned int pin,
464451 struct intel_pinctrl * lg = pinctrl_dev_get_drvdata (pctldev );
465452 void __iomem * conf2 = lp_gpio_reg (& lg -> chip , pin , LP_CONFIG2 );
466453 enum pin_config_param param ;
467- unsigned long flags ;
468- int i , ret = 0 ;
454+ unsigned int i ;
469455 u32 value ;
470456
471- raw_spin_lock_irqsave ( & lg -> lock , flags );
457+ guard ( raw_spinlock_irqsave )( & lg -> lock );
472458
473459 value = ioread32 (conf2 );
474460
@@ -489,19 +475,13 @@ static int lp_pin_config_set(struct pinctrl_dev *pctldev, unsigned int pin,
489475 value |= GPIWP_UP ;
490476 break ;
491477 default :
492- ret = - ENOTSUPP ;
478+ return - ENOTSUPP ;
493479 }
494-
495- if (ret )
496- break ;
497480 }
498481
499- if (!ret )
500- iowrite32 (value , conf2 );
482+ iowrite32 (value , conf2 );
501483
502- raw_spin_unlock_irqrestore (& lg -> lock , flags );
503-
504- return ret ;
484+ return 0 ;
505485}
506486
507487static const struct pinconf_ops lptlp_pinconf_ops = {
@@ -527,16 +507,13 @@ static void lp_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
527507{
528508 struct intel_pinctrl * lg = gpiochip_get_data (chip );
529509 void __iomem * reg = lp_gpio_reg (chip , offset , LP_CONFIG1 );
530- unsigned long flags ;
531510
532- raw_spin_lock_irqsave ( & lg -> lock , flags );
511+ guard ( raw_spinlock_irqsave )( & lg -> lock );
533512
534513 if (value )
535514 iowrite32 (ioread32 (reg ) | OUT_LVL_BIT , reg );
536515 else
537516 iowrite32 (ioread32 (reg ) & ~OUT_LVL_BIT , reg );
538-
539- raw_spin_unlock_irqrestore (& lg -> lock , flags );
540517}
541518
542519static int lp_gpio_direction_input (struct gpio_chip * chip , unsigned int offset )
@@ -592,11 +569,10 @@ static void lp_irq_ack(struct irq_data *d)
592569 struct intel_pinctrl * lg = gpiochip_get_data (gc );
593570 irq_hw_number_t hwirq = irqd_to_hwirq (d );
594571 void __iomem * reg = lp_gpio_reg (& lg -> chip , hwirq , LP_INT_STAT );
595- unsigned long flags ;
596572
597- raw_spin_lock_irqsave (& lg -> lock , flags );
573+ guard (raw_spinlock_irqsave )(& lg -> lock );
574+
598575 iowrite32 (BIT (hwirq % 32 ), reg );
599- raw_spin_unlock_irqrestore (& lg -> lock , flags );
600576}
601577
602578static void lp_irq_unmask (struct irq_data * d )
@@ -613,13 +589,11 @@ static void lp_irq_enable(struct irq_data *d)
613589 struct intel_pinctrl * lg = gpiochip_get_data (gc );
614590 irq_hw_number_t hwirq = irqd_to_hwirq (d );
615591 void __iomem * reg = lp_gpio_reg (& lg -> chip , hwirq , LP_INT_ENABLE );
616- unsigned long flags ;
617592
618593 gpiochip_enable_irq (gc , hwirq );
619594
620- raw_spin_lock_irqsave (& lg -> lock , flags );
621- iowrite32 (ioread32 (reg ) | BIT (hwirq % 32 ), reg );
622- raw_spin_unlock_irqrestore (& lg -> lock , flags );
595+ scoped_guard (raw_spinlock_irqsave , & lg -> lock )
596+ iowrite32 (ioread32 (reg ) | BIT (hwirq % 32 ), reg );
623597}
624598
625599static void lp_irq_disable (struct irq_data * d )
@@ -628,11 +602,9 @@ static void lp_irq_disable(struct irq_data *d)
628602 struct intel_pinctrl * lg = gpiochip_get_data (gc );
629603 irq_hw_number_t hwirq = irqd_to_hwirq (d );
630604 void __iomem * reg = lp_gpio_reg (& lg -> chip , hwirq , LP_INT_ENABLE );
631- unsigned long flags ;
632605
633- raw_spin_lock_irqsave (& lg -> lock , flags );
634- iowrite32 (ioread32 (reg ) & ~BIT (hwirq % 32 ), reg );
635- raw_spin_unlock_irqrestore (& lg -> lock , flags );
606+ scoped_guard (raw_spinlock_irqsave , & lg -> lock )
607+ iowrite32 (ioread32 (reg ) & ~BIT (hwirq % 32 ), reg );
636608
637609 gpiochip_disable_irq (gc , hwirq );
638610}
@@ -642,7 +614,6 @@ static int lp_irq_set_type(struct irq_data *d, unsigned int type)
642614 struct gpio_chip * gc = irq_data_get_irq_chip_data (d );
643615 struct intel_pinctrl * lg = gpiochip_get_data (gc );
644616 irq_hw_number_t hwirq = irqd_to_hwirq (d );
645- unsigned long flags ;
646617 void __iomem * reg ;
647618 u32 value ;
648619
@@ -656,7 +627,8 @@ static int lp_irq_set_type(struct irq_data *d, unsigned int type)
656627 return - EBUSY ;
657628 }
658629
659- raw_spin_lock_irqsave (& lg -> lock , flags );
630+ guard (raw_spinlock_irqsave )(& lg -> lock );
631+
660632 value = ioread32 (reg );
661633
662634 /* set both TRIG_SEL and INV bits to 0 for rising edge */
@@ -682,8 +654,6 @@ static int lp_irq_set_type(struct irq_data *d, unsigned int type)
682654 else if (type & IRQ_TYPE_LEVEL_MASK )
683655 irq_set_handler_locked (d , handle_level_irq );
684656
685- raw_spin_unlock_irqrestore (& lg -> lock , flags );
686-
687657 return 0 ;
688658}
689659
0 commit comments