Commit 701172dc authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown

ASoC: rsnd: don't use devm_request_irq() for SSI

SSI will use DMA mode, and migh be fallback to PIO mode.
Using devm_request_irq() makes its operation more complex when
it fallbacks to PIO mode.
Let's use manual request_irq()/free_irq()
Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent b99305d2
...@@ -644,7 +644,11 @@ static int rsnd_ssi_common_probe(struct rsnd_mod *mod, ...@@ -644,7 +644,11 @@ static int rsnd_ssi_common_probe(struct rsnd_mod *mod,
if (ret < 0) if (ret < 0)
return ret; return ret;
ret = devm_request_irq(dev, ssi->irq, /*
* SSI might be called again as PIO fallback
* It is easy to manual handling for IRQ request/free
*/
ret = request_irq(ssi->irq,
rsnd_ssi_interrupt, rsnd_ssi_interrupt,
IRQF_SHARED, IRQF_SHARED,
dev_name(dev), mod); dev_name(dev), mod);
...@@ -693,12 +697,9 @@ static int rsnd_ssi_dma_remove(struct rsnd_mod *mod, ...@@ -693,12 +697,9 @@ static int rsnd_ssi_dma_remove(struct rsnd_mod *mod,
struct rsnd_priv *priv) struct rsnd_priv *priv)
{ {
struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
struct device *dev = rsnd_priv_to_dev(priv);
int irq = ssi->irq;
/* PIO will request IRQ again */ /* PIO will request IRQ again */
if (ssi->dma) free_irq(ssi->irq, mod);
devm_free_irq(dev, irq, mod);
rsnd_dma_detach(mod, &ssi->dma); rsnd_dma_detach(mod, &ssi->dma);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment