All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
To: Mark Brown <broonie@kernel.org>
Cc: Linux-ALSA <alsa-devel@alsa-project.org>
Subject: [PATCH 15/16] ASoC: soc-dai: move snd_soc_dai_stream_valid() to soc-dai.c
Date: 22 Jul 2019 10:36:16 +0900	[thread overview]
Message-ID: <87ftmyhmzz.wl-kuninori.morimoto.gx@renesas.com> (raw)
In-Reply-To: <8736iyj1yr.wl-kuninori.morimoto.gx@renesas.com>

From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

snd_soc_dai_stream_valid() is function to check stream validity.
But, some code is using it, some code are checking stream->channels_min
directly. Doing samethings by different method is confusable.
This patch uses same funcntion for same purpose.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 include/sound/soc-dai.h  |  1 +
 sound/soc/soc-compress.c |  9 ++++-----
 sound/soc/soc-dai.c      | 18 ++++++++++++++++++
 sound/soc/soc-pcm.c      | 39 ++++++++++-----------------------------
 4 files changed, 33 insertions(+), 34 deletions(-)

diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h
index 0f8b095..dc48fe0 100644
--- a/include/sound/soc-dai.h
+++ b/include/sound/soc-dai.h
@@ -168,6 +168,7 @@ int snd_soc_dai_probe(struct snd_soc_dai *dai);
 int snd_soc_dai_remove(struct snd_soc_dai *dai);
 int snd_soc_dai_compress_new(struct snd_soc_dai *dai,
 			     struct snd_soc_pcm_runtime *rtd, int num);
+bool snd_soc_dai_stream_valid(struct snd_soc_dai *dai, int stream);
 
 struct snd_soc_dai_ops {
 	/*
diff --git a/sound/soc/soc-compress.c b/sound/soc/soc-compress.c
index ddef4ff..2892110 100644
--- a/sound/soc/soc-compress.c
+++ b/sound/soc/soc-compress.c
@@ -872,14 +872,13 @@ int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num)
 	}
 
 	/* check client and interface hw capabilities */
-	if (codec_dai->driver->playback.channels_min)
+	if (snd_soc_dai_stream_valid(codec_dai, SNDRV_PCM_STREAM_PLAYBACK) &&
+	    snd_soc_dai_stream_valid(cpu_dai,   SNDRV_PCM_STREAM_PLAYBACK))
 		playback = 1;
-	if (codec_dai->driver->capture.channels_min)
+	if (snd_soc_dai_stream_valid(codec_dai, SNDRV_PCM_STREAM_CAPTURE) &&
+	    snd_soc_dai_stream_valid(cpu_dai,   SNDRV_PCM_STREAM_CAPTURE))
 		capture = 1;
 
-	capture = capture && cpu_dai->driver->capture.channels_min;
-	playback = playback && cpu_dai->driver->playback.channels_min;
-
 	/*
 	 * Compress devices are unidirectional so only one of the directions
 	 * should be set, check for that (xor)
diff --git a/sound/soc/soc-dai.c b/sound/soc/soc-dai.c
index e6f161b..1c7f638 100644
--- a/sound/soc/soc-dai.c
+++ b/sound/soc/soc-dai.c
@@ -387,3 +387,21 @@ int snd_soc_dai_compress_new(struct snd_soc_dai *dai,
 		return dai->driver->compress_new(rtd, num);
 	return -ENOTSUPP;
 }
+
+/*
+ * snd_soc_dai_stream_valid() - check if a DAI supports the given stream
+ *
+ * Returns true if the DAI supports the indicated stream type.
+ */
+bool snd_soc_dai_stream_valid(struct snd_soc_dai *dai, int dir)
+{
+	struct snd_soc_pcm_stream *stream;
+
+	if (dir == SNDRV_PCM_STREAM_PLAYBACK)
+		stream = &dai->driver->playback;
+	else
+		stream = &dai->driver->capture;
+
+	/* If the codec specifies any channels at all, it supports the stream */
+	return stream->channels_min;
+}
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
index f313772..fabeac1 100644
--- a/sound/soc/soc-pcm.c
+++ b/sound/soc/soc-pcm.c
@@ -29,24 +29,6 @@
 
 #define DPCM_MAX_BE_USERS	8
 
-/*
- * snd_soc_dai_stream_valid() - check if a DAI supports the given stream
- *
- * Returns true if the DAI supports the indicated stream type.
- */
-static bool snd_soc_dai_stream_valid(struct snd_soc_dai *dai, int stream)
-{
-	struct snd_soc_pcm_stream *codec_stream;
-
-	if (stream == SNDRV_PCM_STREAM_PLAYBACK)
-		codec_stream = &dai->driver->playback;
-	else
-		codec_stream = &dai->driver->capture;
-
-	/* If the codec specifies any channels at all, it supports the stream */
-	return codec_stream->channels_min;
-}
-
 /**
  * snd_soc_runtime_activate() - Increment active count for PCM runtime components
  * @rtd: ASoC PCM runtime that is activated
@@ -2688,8 +2670,8 @@ static int soc_dpcm_fe_runtime_update(struct snd_soc_pcm_runtime *fe, int new)
 		new ? "new" : "old", fe->dai_link->name);
 
 	/* skip if FE doesn't have playback capability */
-	if (!fe->cpu_dai->driver->playback.channels_min ||
-	    !fe->codec_dai->driver->playback.channels_min)
+	if (!snd_soc_dai_stream_valid(fe->cpu_dai,   SNDRV_PCM_STREAM_PLAYBACK) ||
+	    !snd_soc_dai_stream_valid(fe->codec_dai, SNDRV_PCM_STREAM_PLAYBACK))
 		goto capture;
 
 	/* skip if FE isn't currently playing */
@@ -2719,8 +2701,8 @@ static int soc_dpcm_fe_runtime_update(struct snd_soc_pcm_runtime *fe, int new)
 
 capture:
 	/* skip if FE doesn't have capture capability */
-	if (!fe->cpu_dai->driver->capture.channels_min ||
-	    !fe->codec_dai->driver->capture.channels_min)
+	if (!snd_soc_dai_stream_valid(fe->cpu_dai,   SNDRV_PCM_STREAM_CAPTURE) ||
+	    !snd_soc_dai_stream_valid(fe->codec_dai, SNDRV_PCM_STREAM_CAPTURE))
 		return 0;
 
 	/* skip if FE isn't currently capturing */
@@ -3030,14 +3012,13 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
 		capture = rtd->dai_link->dpcm_capture;
 	} else {
 		for_each_rtd_codec_dai(rtd, i, codec_dai) {
-			if (codec_dai->driver->playback.channels_min)
+			if (snd_soc_dai_stream_valid(codec_dai, SNDRV_PCM_STREAM_PLAYBACK) &&
+			    snd_soc_dai_stream_valid(cpu_dai,   SNDRV_PCM_STREAM_PLAYBACK))
 				playback = 1;
-			if (codec_dai->driver->capture.channels_min)
+			if (snd_soc_dai_stream_valid(codec_dai, SNDRV_PCM_STREAM_CAPTURE) &&
+			    snd_soc_dai_stream_valid(cpu_dai,   SNDRV_PCM_STREAM_CAPTURE))
 				capture = 1;
 		}
-
-		capture = capture && cpu_dai->driver->capture.channels_min;
-		playback = playback && cpu_dai->driver->playback.channels_min;
 	}
 
 	if (rtd->dai_link->playback_only) {
@@ -3375,11 +3356,11 @@ static ssize_t dpcm_state_read_file(struct file *file, char __user *user_buf,
 	if (!buf)
 		return -ENOMEM;
 
-	if (fe->cpu_dai->driver->playback.channels_min)
+	if (snd_soc_dai_stream_valid(fe->cpu_dai, SNDRV_PCM_STREAM_PLAYBACK))
 		offset += dpcm_show_state(fe, SNDRV_PCM_STREAM_PLAYBACK,
 					buf + offset, out_count - offset);
 
-	if (fe->cpu_dai->driver->capture.channels_min)
+	if (snd_soc_dai_stream_valid(fe->cpu_dai, SNDRV_PCM_STREAM_CAPTURE))
 		offset += dpcm_show_state(fe, SNDRV_PCM_STREAM_CAPTURE,
 					buf + offset, out_count - offset);
 
-- 
2.7.4

  parent reply	other threads:[~2019-07-22  1:36 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-22  1:27 [PATCH 00/16] ASoC: add soc-dai.c Kuninori Morimoto
2019-07-22  1:32 ` [PATCH 01/16] " Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: add soc-dai.c" to the asoc tree Mark Brown
2019-07-22  1:33 ` [PATCH 02/16] ASoC: soc-dai: mv soc_dai_hw_params() to soc-dai Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: soc-dai: mv soc_dai_hw_params() to soc-dai" to the asoc tree Mark Brown
2019-07-22  1:33 ` [PATCH 03/16] ASoC: soc-dai: add snd_soc_dai_hw_free() Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: soc-dai: add snd_soc_dai_hw_free()" to the asoc tree Mark Brown
2019-07-22  1:33 ` [PATCH 04/16] ASoC: soc-dai: add snd_soc_dai_startup() Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: soc-dai: add snd_soc_dai_startup()" to the asoc tree Mark Brown
2019-07-22  1:33 ` [PATCH 05/16] ASoC: soc-dai: add snd_soc_dai_shutdown() Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: soc-dai: add snd_soc_dai_shutdown()" to the asoc tree Mark Brown
2019-07-22  1:33 ` [PATCH 06/16] ASoC: soc-dai: add snd_soc_dai_prepare() Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: soc-dai: add snd_soc_dai_prepare()" to the asoc tree Mark Brown
2019-07-22  1:33 ` [PATCH 07/16] ASoC: soc-dai: add snd_soc_dai_trigger() Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: soc-dai: add snd_soc_dai_trigger()" to the asoc tree Mark Brown
2019-07-22  1:33 ` [PATCH 08/16] ASoC: soc-dai: add snd_soc_dai_bespoke_trigger() Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: soc-dai: add snd_soc_dai_bespoke_trigger()" to the asoc tree Mark Brown
2019-07-22  1:34 ` [PATCH 08/16] ASoC: soc-dai: add snd_soc_dai_bespoke_trigger() Kuninori Morimoto
2019-07-22  1:34 ` [PATCH 09/16] ASoC: soc-dai: add snd_soc_dai_delay() Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: soc-dai: add snd_soc_dai_delay()" to the asoc tree Mark Brown
2019-07-22  1:34 ` [PATCH 10/16] ASoC: soc-dai: add snd_soc_dai_suspend() Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: soc-dai: add snd_soc_dai_suspend()" to the asoc tree Mark Brown
2019-07-22  1:34 ` [PATCH 11/16] ASoC: soc-dai: add snd_soc_dai_resume() Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: soc-dai: add snd_soc_dai_resume()" to the asoc tree Mark Brown
2019-07-22  1:34 ` [PATCH 12/16] ASoC: soc-dai: add snd_soc_dai_probe() Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: soc-dai: add snd_soc_dai_probe()" to the asoc tree Mark Brown
2019-07-22  1:35 ` [PATCH 13/16] ASoC: soc-dai: add snd_soc_dai_remove() Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: soc-dai: add snd_soc_dai_remove()" to the asoc tree Mark Brown
2019-07-22  1:35 ` [PATCH 14/16] ASoC: soc-dai: add snd_soc_dai_compress_new() Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: soc-dai: add snd_soc_dai_compress_new()" to the asoc tree Mark Brown
2019-07-22  1:36 ` Kuninori Morimoto [this message]
2019-07-23 17:18   ` Applied "ASoC: soc-dai: move snd_soc_dai_stream_valid() to soc-dai.c" " Mark Brown
2019-07-22  1:36 ` [PATCH 16/16] ASoC: soc-core: use existing snd_soc_dai_digital_mute() Kuninori Morimoto
2019-07-23 17:18   ` Applied "ASoC: soc-core: use existing snd_soc_dai_digital_mute()" to the asoc tree Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ftmyhmzz.wl-kuninori.morimoto.gx@renesas.com \
    --to=kuninori.morimoto.gx@renesas.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.