diff mbox series

ASoC: qcom: lpass-platform: Reset irq clear reg post handling interrupts

Message ID 20210903100153.9137-1-srivasam@codeaurora.org
State Superseded
Headers show
Series ASoC: qcom: lpass-platform: Reset irq clear reg post handling interrupts | expand

Commit Message

Srinivasa Rao Mandadapu Sept. 3, 2021, 10:01 a.m. UTC
Update interrupt clear register with reset value after addressing
all interrupts. This is to fix playback or capture hanging issue in
simultaneous playback and capture usecase.

Signed-off-by: Srinivasa Rao Mandadapu <srivasam@codeaurora.org>
---
 sound/soc/qcom/lpass-platform.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Stephen Boyd Sept. 7, 2021, 7:54 p.m. UTC | #1
Quoting Srinivasa Rao Mandadapu (2021-09-06 06:35:46)
> Thanks for Your time Stephen!!

>

> On 9/4/2021 12:10 AM, Stephen Boyd wrote:

> > Quoting Srinivasa Rao Mandadapu (2021-09-03 03:01:53)

> >> Update interrupt clear register with reset value after addressing

> >> all interrupts. This is to fix playback or capture hanging issue in

> >> simultaneous playback and capture usecase.

> >>

> >> Signed-off-by: Srinivasa Rao Mandadapu <srivasam@codeaurora.org>

> >> ---

> > Any Fixes tag?

> Actually it's incremental change. I will add base commit of this function.


Ok.

> >

> >>   sound/soc/qcom/lpass-platform.c | 6 ++++++

> >>   1 file changed, 6 insertions(+)

> >>

> >> diff --git a/sound/soc/qcom/lpass-platform.c b/sound/soc/qcom/lpass-platform.c

> >> index f9df76d37858..1a0a4b0b1a03 100644

> >> --- a/sound/soc/qcom/lpass-platform.c

> >> +++ b/sound/soc/qcom/lpass-platform.c

> >> @@ -749,6 +749,12 @@ static irqreturn_t lpass_platform_lpaif_irq(int irq, void *data)

> >>                  }

> >>          }

> >>

> >> +       rv = regmap_write(drvdata->lpaif_map, LPAIF_IRQCLEAR_REG(v, LPAIF_IRQ_PORT_HOST), 0x0);

> >> +       if (rv) {

> >> +               pr_err("error writing to irqstat reg: %d\n", rv);

> >> +               return IRQ_NONE;

> > I was thinking we should return IRQ_HANDLED still, but then I guess

> > failing to clear the irq be treated as a spurious irq so that if we fail

> > enough times we'll shut off the irq at the irqchip. Things are going bad

> > if the write fails.

> Here bit confusing. Could You please suggest How to go ahead on this?


Sorry. I think it is fine as is.
diff mbox series

Patch

diff --git a/sound/soc/qcom/lpass-platform.c b/sound/soc/qcom/lpass-platform.c
index f9df76d37858..1a0a4b0b1a03 100644
--- a/sound/soc/qcom/lpass-platform.c
+++ b/sound/soc/qcom/lpass-platform.c
@@ -749,6 +749,12 @@  static irqreturn_t lpass_platform_lpaif_irq(int irq, void *data)
 		}
 	}
 
+	rv = regmap_write(drvdata->lpaif_map, LPAIF_IRQCLEAR_REG(v, LPAIF_IRQ_PORT_HOST), 0x0);
+	if (rv) {
+		pr_err("error writing to irqstat reg: %d\n", rv);
+		return IRQ_NONE;
+	}
+
 	return IRQ_HANDLED;
 }