diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2016-03-07 06:08:33 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-03-07 08:41:54 +0100 |
commit | cbf1494fbcc80d363477af1efefb2380e7660a24 (patch) | |
tree | 0aa10c9ece476f52c5bd08a391f4c8e7d94c4c4d /sound/soc/sh/rcar/src.c | |
parent | ASoC: rsnd: rename rsnd_enable_sync_convert() to rsnd_src_sync_is_enabled() (diff) | |
download | linux-cbf1494fbcc80d363477af1efefb2380e7660a24.tar.xz linux-cbf1494fbcc80d363477af1efefb2380e7660a24.zip |
ASoC: rsnd: add rsnd_src_get_in/out_rate()
SRC will convert rate, and then, CMD and SSI want to know its
rate (= SRC.in / SRC.out) for each purpose.
Current driver is supporting only Playback, but SRC+Capture support
needs more flexibility.
This patch adds rsnd_src_get_in/out_rate() for it.
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/src.c')
-rw-r--r-- | sound/soc/sh/rcar/src.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/sound/soc/sh/rcar/src.c b/sound/soc/sh/rcar/src.c index 1d5aedb50213..d1a8741cc446 100644 --- a/sound/soc/sh/rcar/src.c +++ b/sound/soc/sh/rcar/src.c @@ -116,12 +116,26 @@ static u32 rsnd_src_convert_rate(struct rsnd_dai_stream *io, return convert_rate; } -unsigned int rsnd_src_get_ssi_rate(struct rsnd_priv *priv, - struct rsnd_dai_stream *io, - struct snd_pcm_runtime *runtime) +unsigned int rsnd_src_get_rate(struct rsnd_priv *priv, + struct rsnd_dai_stream *io, + int is_in) { struct rsnd_mod *src_mod = rsnd_io_to_mod_src(io); + struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); unsigned int rate = 0; + int is_play = rsnd_io_is_play(io); + + /* + * + * Playback + * runtime_rate -> [SRC] -> convert_rate + * + * Capture + * convert_rate -> [SRC] -> runtime_rate + */ + + if (is_play == is_in) + return runtime->rate; /* * return convert rate if SRC is used, |