diff options
| author | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
| commit | 1ac731c529cd4d6adbce134754b51ff7d822b145 (patch) | |
| tree | 143ab3f35ca5f3b69f583c84e6964b17139c2ec1 /drivers/gpio/gpio-xlp.c | |
| parent | 07b4c950f27bef0362dc6ad7ee713aab61d58149 (diff) | |
| parent | 54116d442e001e1b6bd482122043b1870998a1f3 (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.6 merge window.
Diffstat (limited to 'drivers/gpio/gpio-xlp.c')
| -rw-r--r-- | drivers/gpio/gpio-xlp.c | 14 | 
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/gpio/gpio-xlp.c b/drivers/gpio/gpio-xlp.c index 0199f545335f..b4b52213bcd9 100644 --- a/drivers/gpio/gpio-xlp.c +++ b/drivers/gpio/gpio-xlp.c @@ -90,6 +90,13 @@ static void xlp_gpio_set_reg(void __iomem *addr, unsigned gpio, int state)  	writel(value, addr + regset);  } +static void xlp_gpio_irq_enable(struct irq_data *d) +{ +	struct gpio_chip *gc  = irq_data_get_irq_chip_data(d); + +	gpiochip_enable_irq(gc, irqd_to_hwirq(d)); +} +  static void xlp_gpio_irq_disable(struct irq_data *d)  {  	struct gpio_chip *gc  = irq_data_get_irq_chip_data(d); @@ -100,6 +107,7 @@ static void xlp_gpio_irq_disable(struct irq_data *d)  	xlp_gpio_set_reg(priv->gpio_intr_en, d->hwirq, 0x0);  	__clear_bit(d->hwirq, priv->gpio_enabled_mask);  	spin_unlock_irqrestore(&priv->lock, flags); +	gpiochip_disable_irq(gc, irqd_to_hwirq(d));  }  static void xlp_gpio_irq_mask_ack(struct irq_data *d) @@ -163,10 +171,12 @@ static int xlp_gpio_set_irq_type(struct irq_data *d, unsigned int type)  static struct irq_chip xlp_gpio_irq_chip = {  	.name		= "XLP-GPIO",  	.irq_mask_ack	= xlp_gpio_irq_mask_ack, +	.irq_enable	= xlp_gpio_irq_enable,  	.irq_disable	= xlp_gpio_irq_disable,  	.irq_set_type	= xlp_gpio_set_irq_type,  	.irq_unmask	= xlp_gpio_irq_unmask, -	.flags		= IRQCHIP_ONESHOT_SAFE, +	.flags		= IRQCHIP_ONESHOT_SAFE | IRQCHIP_IMMUTABLE, +	GPIOCHIP_IRQ_RESOURCE_HELPERS,  };  static void xlp_gpio_generic_handler(struct irq_desc *desc) @@ -272,7 +282,7 @@ static int xlp_gpio_probe(struct platform_device *pdev)  	spin_lock_init(&priv->lock);  	girq = &gc->irq; -	girq->chip = &xlp_gpio_irq_chip; +	gpio_irq_chip_set_chip(girq, &xlp_gpio_irq_chip);  	girq->parent_handler = xlp_gpio_generic_handler;  	girq->num_parents = 1;  	girq->parents = devm_kcalloc(&pdev->dev, 1,  |