mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 21:59:12 -04:00
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 inorder to clear ack registers. Change-Id: I399592fc0ee7f3a01a32267684a9be340076ffb1 Signed-off-by: Laxminath Kasam <lkasam@codeaurora.org>
This commit is contained in:
parent
6c24075f63
commit
94f60f500c
2 changed files with 18 additions and 0 deletions
|
|
@ -168,6 +168,11 @@ 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]);
|
||||
#ifdef CONFIG_AUDIO_QGKI
|
||||
/* some chips needs to clear ack reg after ack */
|
||||
if (d->chip->clear_ack)
|
||||
ret = regmap_write(map, reg, 0x0);
|
||||
#endif
|
||||
if (ret != 0)
|
||||
dev_err(d->map->dev, "Failed to ack 0x%x: %d\n",
|
||||
reg, ret);
|
||||
|
|
@ -494,6 +499,11 @@ 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]);
|
||||
#ifdef CONFIG_AUDIO_QGKI
|
||||
/* some chips needs to clear ack reg after ack */
|
||||
if (chip->clear_ack)
|
||||
ret = regmap_write(map, reg, 0x0);
|
||||
#endif
|
||||
if (ret != 0)
|
||||
dev_err(map->dev, "Failed to ack 0x%x: %d\n",
|
||||
reg, ret);
|
||||
|
|
@ -719,6 +729,11 @@ 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]);
|
||||
#ifdef CONFIG_AUDIO_QGKI
|
||||
/* some chips needs to clear ack reg after ack */
|
||||
if (chip->clear_ack)
|
||||
ret = regmap_write(map, reg, 0x0);
|
||||
#endif
|
||||
if (ret != 0) {
|
||||
dev_err(map->dev, "Failed to ack 0x%x: %d\n",
|
||||
reg, ret);
|
||||
|
|
|
|||
|
|
@ -1241,6 +1241,9 @@ struct regmap_irq_chip {
|
|||
bool mask_invert:1;
|
||||
bool use_ack:1;
|
||||
bool ack_invert:1;
|
||||
#ifdef CONFIG_AUDIO_QGKI
|
||||
bool clear_ack:1;
|
||||
#endif
|
||||
bool wake_invert:1;
|
||||
bool runtime_pm:1;
|
||||
bool type_invert:1;
|
||||
|
|
|
|||
Loading…
Reference in a new issue