aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/sh/rcar/ssi.c
diff options
context:
space:
mode:
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>2014-11-27 03:02:43 -0500
committerMark Brown <broonie@kernel.org>2014-12-03 13:51:39 -0500
commit97463e193654574e1533f71359d91d9d2fdb3571 (patch)
tree4ea066abfdd9d893d29844eb496312901d700c1d /sound/soc/sh/rcar/ssi.c
parent56ba98acc398883324c0e70dc8aee1dc53eb2331 (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.c11
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,
465static int rsnd_ssi_dma_remove(struct rsnd_mod *mod, 465static 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
473static 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/*