diff --git a/asoc/codecs/wcd937x/wcd937x.c b/asoc/codecs/wcd937x/wcd937x.c index 6640bf16bc..8fff2dc063 100644 --- a/asoc/codecs/wcd937x/wcd937x.c +++ b/asoc/codecs/wcd937x/wcd937x.c @@ -142,6 +142,11 @@ static int wcd937x_handle_post_irq(void *data) struct wcd937x_priv *wcd937x = data; u32 status1 = 0, status2 = 0, status3 = 0; + /* Clear the ACK registers. Temporary workaround.*/ + regmap_write(wcd937x->regmap, WCD937X_DIGITAL_INTR_CLEAR_0, 0x0); + regmap_write(wcd937x->regmap, WCD937X_DIGITAL_INTR_CLEAR_1, 0x0); + regmap_write(wcd937x->regmap, WCD937X_DIGITAL_INTR_CLEAR_2, 0x0); + regmap_read(wcd937x->regmap, WCD937X_DIGITAL_INTR_STATUS_0, &status1); regmap_read(wcd937x->regmap, WCD937X_DIGITAL_INTR_STATUS_1, &status2); regmap_read(wcd937x->regmap, WCD937X_DIGITAL_INTR_STATUS_2, &status3);