Message ID | 87d1b9y3sk.wl%kuninori.morimoto.gx@renesas.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 8cd8a186eb30c87e0b855cf4823034472413914e |
Headers | show |
Hi > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > > If SSI uses shared pin, some SSI will be used as parent SSI. > Then, normal SSI's remove and Parent SSI's remove > (these are same SSI) will be called when unbind or remove timing. > In this case, free_irq() will be called twice. > This patch solve this issue. > > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > Tested-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> > --- This was Reported-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> Mark, please let me know if v2 was required > sound/soc/sh/rcar/ssi.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c > index 5960042..e23fcab 100644 > --- a/sound/soc/sh/rcar/ssi.c > +++ b/sound/soc/sh/rcar/ssi.c > @@ -726,6 +726,11 @@ static int rsnd_ssi_dma_remove(struct rsnd_mod *mod, > struct rsnd_priv *priv) > { > struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); > + struct rsnd_mod *ssi_parent_mod = rsnd_io_to_mod_ssip(io); > + > + /* Do nothing for SSI parent mod */ > + if (ssi_parent_mod == mod) > + return 0; > > /* PIO will request IRQ again */ > free_irq(ssi->irq, mod); > -- > 1.9.1 >
diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c index 5960042..e23fcab 100644 --- a/sound/soc/sh/rcar/ssi.c +++ b/sound/soc/sh/rcar/ssi.c @@ -726,6 +726,11 @@ static int rsnd_ssi_dma_remove(struct rsnd_mod *mod, struct rsnd_priv *priv) { struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); + struct rsnd_mod *ssi_parent_mod = rsnd_io_to_mod_ssip(io); + + /* Do nothing for SSI parent mod */ + if (ssi_parent_mod == mod) + return 0; /* PIO will request IRQ again */ free_irq(ssi->irq, mod);