diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2014-11-27 03:02:43 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2014-12-03 13:51:39 -0500 |
commit | 97463e193654574e1533f71359d91d9d2fdb3571 (patch) | |
tree | 4ea066abfdd9d893d29844eb496312901d700c1d /sound/soc/sh/rcar/ssi.c | |
parent | 56ba98acc398883324c0e70dc8aee1dc53eb2331 (diff) |
ASoC: rsnd: add .fallback callback
Current R-Car sound has PIO fallback support if it couldn't use DMA.
This fallback is done in .remove callback, but, it should have
.fallback callback. Otherwise, normal .remove callback will have
strange behavior. This patch adds .fallback callback.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/sh/rcar/ssi.c')
-rw-r--r-- | sound/soc/sh/rcar/ssi.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c index 346d3dc66d73..e03e70b4f843 100644 --- a/sound/soc/sh/rcar/ssi.c +++ b/sound/soc/sh/rcar/ssi.c | |||
@@ -465,11 +465,17 @@ static int rsnd_ssi_dma_probe(struct rsnd_mod *mod, | |||
465 | static int rsnd_ssi_dma_remove(struct rsnd_mod *mod, | 465 | static int rsnd_ssi_dma_remove(struct rsnd_mod *mod, |
466 | struct rsnd_dai *rdai) | 466 | struct rsnd_dai *rdai) |
467 | { | 467 | { |
468 | rsnd_dma_quit(rsnd_mod_to_priv(mod), rsnd_mod_to_dma(mod)); | ||
469 | |||
470 | return 0; | ||
471 | } | ||
472 | |||
473 | static int rsnd_ssi_fallback(struct rsnd_mod *mod, | ||
474 | struct rsnd_dai *rdai) | ||
475 | { | ||
468 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | 476 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); |
469 | struct device *dev = rsnd_priv_to_dev(priv); | 477 | struct device *dev = rsnd_priv_to_dev(priv); |
470 | 478 | ||
471 | rsnd_dma_quit(rsnd_mod_to_priv(mod), rsnd_mod_to_dma(mod)); | ||
472 | |||
473 | /* | 479 | /* |
474 | * fallback to PIO | 480 | * fallback to PIO |
475 | * | 481 | * |
@@ -541,6 +547,7 @@ static struct rsnd_mod_ops rsnd_ssi_dma_ops = { | |||
541 | .quit = rsnd_ssi_quit, | 547 | .quit = rsnd_ssi_quit, |
542 | .start = rsnd_ssi_dma_start, | 548 | .start = rsnd_ssi_dma_start, |
543 | .stop = rsnd_ssi_dma_stop, | 549 | .stop = rsnd_ssi_dma_stop, |
550 | .fallback = rsnd_ssi_fallback, | ||
544 | }; | 551 | }; |
545 | 552 | ||
546 | /* | 553 | /* |