diff options
author | Mark Brown <broonie@linaro.org> | 2013-10-28 16:01:34 -0400 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-10-28 16:01:34 -0400 |
commit | 6cf3d823230794a6e6b3f99541cdb91176614036 (patch) | |
tree | 51ccc28e05926f87f223044d8f765acb6cc9bb51 | |
parent | f2783f0e9cac215df5b7ee0a903adfeabde90b24 (diff) | |
parent | 4bd7145b194af7cd96fc56d2ebee583b3edf03d3 (diff) |
Merge remote-tracking branch 'regmap/topic/irq' into regmap-next
-rw-r--r-- | drivers/base/regmap/regmap-irq.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/base/regmap/regmap-irq.c b/drivers/base/regmap/regmap-irq.c index d10456ffd811..763c60d3d277 100644 --- a/drivers/base/regmap/regmap-irq.c +++ b/drivers/base/regmap/regmap-irq.c | |||
@@ -105,6 +105,22 @@ static void regmap_irq_sync_unlock(struct irq_data *data) | |||
105 | "Failed to sync wakes in %x: %d\n", | 105 | "Failed to sync wakes in %x: %d\n", |
106 | reg, ret); | 106 | reg, ret); |
107 | } | 107 | } |
108 | |||
109 | if (!d->chip->init_ack_masked) | ||
110 | continue; | ||
111 | /* | ||
112 | * Ack all the masked interrupts uncondictionly, | ||
113 | * OR if there is masked interrupt which hasn't been Acked, | ||
114 | * it'll be ignored in irq handler, then may introduce irq storm | ||
115 | */ | ||
116 | if (d->mask_buf[i] && d->chip->ack_base) { | ||
117 | reg = d->chip->ack_base + | ||
118 | (i * map->reg_stride * d->irq_reg_stride); | ||
119 | ret = regmap_write(map, reg, d->mask_buf[i]); | ||
120 | if (ret != 0) | ||
121 | dev_err(d->map->dev, "Failed to ack 0x%x: %d\n", | ||
122 | reg, ret); | ||
123 | } | ||
108 | } | 124 | } |
109 | 125 | ||
110 | if (d->chip->runtime_pm) | 126 | if (d->chip->runtime_pm) |