Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4ed68292 authored by Ramprasad Katkam's avatar Ramprasad Katkam Committed by Gerrit - the friendly Code Review server
Browse files

regmap: irq: Add support to clear ack registers



WCD937x codec requires clear registers to be written '1' and
'0' for clearing interrupts. Add this support in regmap irq
to clear ack registers.

Change-Id: I399592fc0ee7f3a01a32267684a9be340076ffb1
Signed-off-by: default avatarRamprasad Katkam <katkam@codeaurora.org>
parent 4164fb8e
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -151,6 +151,9 @@ static void regmap_irq_sync_unlock(struct irq_data *data)
				ret = regmap_write(map, reg, ~d->mask_buf[i]);
			else
				ret = regmap_write(map, reg, d->mask_buf[i]);
			/* some chips needs to clear ack reg after ack */
			if (d->chip->clear_ack)
				ret = regmap_write(map, reg, 0x0);
			if (ret != 0)
				dev_err(d->map->dev, "Failed to ack 0x%x: %d\n",
					reg, ret);
@@ -361,6 +364,9 @@ static irqreturn_t regmap_irq_thread(int irq, void *d)
			reg = chip->ack_base +
				(i * map->reg_stride * data->irq_reg_stride);
			ret = regmap_write(map, reg, data->status_buf[i]);
			/* some chips needs to clear ack reg after ack */
			if (chip->clear_ack)
				ret = regmap_write(map, reg, 0x0);
			if (ret != 0)
				dev_err(map->dev, "Failed to ack 0x%x: %d\n",
					reg, ret);
@@ -569,6 +575,9 @@ int regmap_add_irq_chip(struct regmap *map, int irq, int irq_flags,
			else
				ret = regmap_write(map, reg,
					d->status_buf[i] & d->mask_buf[i]);
			/* some chips needs to clear ack reg after ack */
			if (chip->clear_ack)
				ret = regmap_write(map, reg, 0x0);
			if (ret != 0) {
				dev_err(map->dev, "Failed to ack 0x%x: %d\n",
					reg, ret);
+1 −0
Original line number Diff line number Diff line
@@ -1000,6 +1000,7 @@ struct regmap_irq_chip {
	bool mask_invert:1;
	bool use_ack:1;
	bool ack_invert:1;
	bool clear_ack:1;
	bool wake_invert:1;
	bool runtime_pm:1;
	bool type_invert:1;