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

Commit fa8520bb authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "regmap: irq: Add support to clear ack registers"

parents 15a2adc2 4ed68292
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;