mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 05:11:48 +00:00
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: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
b99305d201
commit
701172dca1
@ -644,10 +644,14 @@ 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,
|
/*
|
||||||
rsnd_ssi_interrupt,
|
* SSI might be called again as PIO fallback
|
||||||
IRQF_SHARED,
|
* It is easy to manual handling for IRQ request/free
|
||||||
dev_name(dev), mod);
|
*/
|
||||||
|
ret = request_irq(ssi->irq,
|
||||||
|
rsnd_ssi_interrupt,
|
||||||
|
IRQF_SHARED,
|
||||||
|
dev_name(dev), mod);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user