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-pci-idio-16.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-pci-idio-16.c')
| -rw-r--r-- | drivers/gpio/gpio-pci-idio-16.c | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/gpio/gpio-pci-idio-16.c b/drivers/gpio/gpio-pci-idio-16.c index a86ce748384b..6726c32e31e6 100644 --- a/drivers/gpio/gpio-pci-idio-16.c +++ b/drivers/gpio/gpio-pci-idio-16.c @@ -107,6 +107,8 @@ static void idio_16_irq_mask(struct irq_data *data)  		raw_spin_unlock_irqrestore(&idio16gpio->lock, flags);  	} + +	gpiochip_disable_irq(chip, irqd_to_hwirq(data));  }  static void idio_16_irq_unmask(struct irq_data *data) @@ -117,6 +119,8 @@ static void idio_16_irq_unmask(struct irq_data *data)  	const unsigned long prev_irq_mask = idio16gpio->irq_mask;  	unsigned long flags; +	gpiochip_enable_irq(chip, irqd_to_hwirq(data)); +  	idio16gpio->irq_mask |= mask;  	if (!prev_irq_mask) { @@ -138,12 +142,14 @@ static int idio_16_irq_set_type(struct irq_data *data, unsigned int flow_type)  	return 0;  } -static struct irq_chip idio_16_irqchip = { +static const struct irq_chip idio_16_irqchip = {  	.name = "pci-idio-16",  	.irq_ack = idio_16_irq_ack,  	.irq_mask = idio_16_irq_mask,  	.irq_unmask = idio_16_irq_unmask, -	.irq_set_type = idio_16_irq_set_type +	.irq_set_type = idio_16_irq_set_type, +	.flags = IRQCHIP_IMMUTABLE, +	GPIOCHIP_IRQ_RESOURCE_HELPERS,  };  static irqreturn_t idio_16_irq_handler(int irq, void *dev_id) @@ -242,7 +248,7 @@ static int idio_16_probe(struct pci_dev *pdev, const struct pci_device_id *id)  	idio_16_state_init(&idio16gpio->state);  	girq = &idio16gpio->chip.irq; -	girq->chip = &idio_16_irqchip; +	gpio_irq_chip_set_chip(girq, &idio_16_irqchip);  	/* This will let us handle the parent IRQ in the driver */  	girq->parent_handler = NULL;  	girq->num_parents = 0;  |