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-104-dio-48e.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-104-dio-48e.c')
| -rw-r--r-- | drivers/gpio/gpio-104-dio-48e.c | 12 | 
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/gpio/gpio-104-dio-48e.c b/drivers/gpio/gpio-104-dio-48e.c index a3846faf3780..f2253fd5ab4b 100644 --- a/drivers/gpio/gpio-104-dio-48e.c +++ b/drivers/gpio/gpio-104-dio-48e.c @@ -86,6 +86,7 @@ static const struct regmap_config dio48e_regmap_config = {  	.volatile_table = &dio48e_volatile_table,  	.precious_table = &dio48e_precious_table,  	.cache_type = REGCACHE_FLAT, +	.use_raw_spinlock = true,  };  /* only bit 3 on each respective Port C supports interrupts */ @@ -106,7 +107,6 @@ static int dio48e_handle_mask_sync(struct regmap *const map, const int index,  {  	unsigned int *const irq_mask = irq_drv_data;  	const unsigned int prev_mask = *irq_mask; -	const unsigned int all_masked = GENMASK(1, 0);  	int err;  	unsigned int val; @@ -118,7 +118,7 @@ static int dio48e_handle_mask_sync(struct regmap *const map, const int index,  	*irq_mask = mask_buf;  	/* if all previously masked, enable interrupts when unmasking */ -	if (prev_mask == all_masked) { +	if (prev_mask == mask_buf_def) {  		err = regmap_write(map, DIO48E_CLEAR_INTERRUPT, 0x00);  		if (err)  			return err; @@ -126,7 +126,7 @@ static int dio48e_handle_mask_sync(struct regmap *const map, const int index,  	}  	/* if all are currently masked, disable interrupts */ -	if (mask_buf == all_masked) +	if (mask_buf == mask_buf_def)  		return regmap_read(map, DIO48E_DISABLE_INTERRUPT, &val);  	return 0; @@ -195,13 +195,9 @@ static int dio48e_probe(struct device *dev, unsigned int id)  		return -ENOMEM;  	chip->name = name; -	/* No IRQ status register so use CLEAR_INTERRUPT register instead */ -	chip->status_base = DIO48E_CLEAR_INTERRUPT;  	chip->mask_base = DIO48E_ENABLE_INTERRUPT;  	chip->ack_base = DIO48E_CLEAR_INTERRUPT; -	/* CLEAR_INTERRUPT doubles as status register so we need it cleared */ -	chip->clear_ack = true; -	chip->status_invert = true; +	chip->no_status = true;  	chip->num_regs = 1;  	chip->irqs = dio48e_regmap_irqs;  	chip->num_irqs = ARRAY_SIZE(dio48e_regmap_irqs);  |