summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Guiriec <s-guiriec@ti.com>2010-11-18 15:31:10 -0600
committerLeed Aguilar <leed.aguilar@ti.com>2010-11-22 15:20:41 -0600
commite4d2c285d4943b744359dfcf3ad494e9f2f0c35b (patch)
tree361fa8b0a7407618df5627ccc51fc0569e553aae
parent527dbd25aea7e76b4589a6e848b12e0e7e5e9734 (diff)
ASoC: ABE DSP: Protect abe irq handlerandroid-2.6.32-2.2-omap4.8v1
ABE irq handler can be called when streams have already been closed, so it's required to explicitly protect that code within pm_runtime get/put calls. Signed-off-by: Sebastien Guiriec <s-guiriec@ti.com>
-rw-r--r--sound/soc/omap/omap-abe-dsp.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sound/soc/omap/omap-abe-dsp.c b/sound/soc/omap/omap-abe-dsp.c
index afbdcf1b67c..ec2106d9ad0 100644
--- a/sound/soc/omap/omap-abe-dsp.c
+++ b/sound/soc/omap/omap-abe-dsp.c
@@ -183,9 +183,15 @@ static void abe_irq_pingpong_subroutine(void)
static irqreturn_t abe_irq_handler(int irq, void *dev_id)
{
+ /* TODO: do not use abe global structure to assign pdev */
+ struct platform_device *pdev = abe->pdev;
+
/* TODO: handle underruns/overruns/errors */
+ pm_runtime_get_sync(&pdev->dev);
abe_irq_clear();
abe_irq_processing();
+ pm_runtime_put_sync(&pdev->dev);
+
return IRQ_HANDLED;
}