diff options
author | Sebastien Guiriec <s-guiriec@ti.com> | 2010-11-18 15:31:10 -0600 |
---|---|---|
committer | Leed Aguilar <leed.aguilar@ti.com> | 2010-11-22 15:20:41 -0600 |
commit | e4d2c285d4943b744359dfcf3ad494e9f2f0c35b (patch) | |
tree | 361fa8b0a7407618df5627ccc51fc0569e553aae | |
parent | 527dbd25aea7e76b4589a6e848b12e0e7e5e9734 (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.c | 6 |
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; } |