* [PATCH v4 0/3] ASoC: grace time for DPCM cleanup
@ 2024-05-23 2:11 Kuninori Morimoto
2024-05-23 2:12 ` [PATCH v4 1/3] ASoC: soc-pcm: Indicate warning if dpcm_playback/capture were used for availability limition Kuninori Morimoto
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Kuninori Morimoto @ 2024-05-23 2:11 UTC (permalink / raw)
To: "Amadeusz Sławiński", Alexandre Belloni,
Alper Nebi Yasak, AngeloGioacchino Del Regno, Banajit Goswami,
Bard Liao, Brent Lu, Cezary Rojewski, Charles Keepax,
Claudiu Beznea, Cristian Ciocaltea, Daniel Baluta, Hans de Goede,
Jaroslav Kysela, Jerome Brunet, Jiawei Wang, Jonathan Corbet,
Kai Vehmanen, Kevin Hilman, Liam Girdwood, Mark Brown, Maso Huang,
Matthias Brugger, Neil Armstrong, Nicolas Ferre, Peter Ujfalusi,
Pierre-Louis Bossart, Ranjani Sridharan, Sascha Hauer, Shawn Guo,
Shengjiu Wang, Srinivas Kandagatla, Sylwester Nawrocki,
Takashi Iwai, Vinod Koul, Xiubo Li, alsa-devel, imx, linux-doc,
linux-sound
Hi Mark, Pierre-Louis, Jerome
Cc each ASoC driver maintainer
This is v4 of DPCM cleanup
As we discussed in [1], we don't need to use dpcm_playback/capture flag,
so we remove it. But we have been using it for 10 years, some driver might
get damage. The most likely case is that the device/driver can use both
playback/capture, but have only one flag, and not using xxx_only flag.
[1/3] patch indicates warning in such case.
These adds grace time for DPCM cleanup.
I'm not sure when dpcm_xxx will be removed, and Codec check bypass will be
error, but maybe v6.11 or v6.12 ?
Please check each driver by that time.
Previous patch-set try to check both CPU and Codec in DPCM, but we noticed
that there are some special DAI which we can't handle today [2]. So I will
escape it in this patch-set.
[1] https://lore.kernel.org/r/87edaym2cg.wl-kuninori.morimoto.gx@renesas.com
[2] https://lore.kernel.org/all/3e67d62d-fe08-4f55-ab5b-ece8a57154f9@linux.intel.com/
Link: https://lore.kernel.org/r/87edaym2cg.wl-kuninori.morimoto.gx@renesas.com
Link: https://lore.kernel.org/r/87wmo6dyxg.wl-kuninori.morimoto.gx@renesas.com
Link: https://lore.kernel.org/r/87msole5wc.wl-kuninori.morimoto.gx@renesas.com
v3 -> v4
- don't check Codec on DPCM
- include Jerome's dpcm_xxx update patch
v2 -> v3
- tidyup typo (reuqsts -> requests)
- add Tested-by on git-log
v1 -> v2
- tidyup Codec check warning output condition
Jerome Brunet (1):
ASoC: amlogic: do not use dpcm_playback/capture flags
Kuninori Morimoto (2):
ASoC: soc-pcm: Indicate warning if dpcm_playback/capture were used for availability limition
ASoC: remove snd_soc_dai_link_set_capabilities()
include/sound/soc-dai.h | 1 -
include/sound/soc.h | 1 +
sound/soc/fsl/imx-card.c | 3 --
sound/soc/generic/audio-graph-card.c | 2 -
sound/soc/generic/audio-graph-card2.c | 2 -
sound/soc/generic/simple-card.c | 2 -
sound/soc/meson/axg-card.c | 11 +++--
sound/soc/meson/gx-card.c | 1 -
sound/soc/meson/meson-card-utils.c | 4 +-
sound/soc/qcom/common.c | 1 -
sound/soc/soc-dai.c | 38 ----------------
sound/soc/soc-pcm.c | 65 +++++++++++++++------------
12 files changed, 45 insertions(+), 86 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v4 1/3] ASoC: soc-pcm: Indicate warning if dpcm_playback/capture were used for availability limition
2024-05-23 2:11 [PATCH v4 0/3] ASoC: grace time for DPCM cleanup Kuninori Morimoto
@ 2024-05-23 2:12 ` Kuninori Morimoto
2024-05-23 2:12 ` [PATCH v4 2/3] ASoC: remove snd_soc_dai_link_set_capabilities() Kuninori Morimoto
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Kuninori Morimoto @ 2024-05-23 2:12 UTC (permalink / raw)
To: "Amadeusz Sławiński", Alexandre Belloni,
Alper Nebi Yasak, AngeloGioacchino Del Regno, Banajit Goswami,
Bard Liao, Brent Lu, Cezary Rojewski, Charles Keepax,
Claudiu Beznea, Cristian Ciocaltea, Daniel Baluta, Hans de Goede,
Jaroslav Kysela, Jerome Brunet, Jiawei Wang, Jonathan Corbet,
Kai Vehmanen, Kevin Hilman, Liam Girdwood, Mark Brown, Maso Huang,
Matthias Brugger, Neil Armstrong, Nicolas Ferre, Peter Ujfalusi,
Pierre-Louis Bossart, Ranjani Sridharan, Sascha Hauer, Shawn Guo,
Shengjiu Wang, Srinivas Kandagatla, Sylwester Nawrocki,
Takashi Iwai, Vinod Koul, Xiubo Li, alsa-devel, imx, linux-doc,
linux-sound
I have been wondering why DPCM needs special flag (= dpcm_playback/capture)
to use it. Below is the history why it was added to ASoC.
(A) In beginning, there was no dpcm_xxx flag on ASoC.
It checks channels_min for DPCM, same as current non-DPCM.
Let's name it as "validation check" here.
if (rtd->dai_link->dynamic || rtd->dai_link->no_pcm) {
if (cpu_dai->driver->playback.channels_min)
playback = 1;
if (cpu_dai->driver->capture.channels_min)
capture = 1;
(B) commit 1e9de42f4324 ("ASoC: dpcm: Explicitly set BE DAI link supported
stream directions") force to use dpcm_xxx flag on DPCM. According to
this commit log, this is because "Some BE dummy DAI doesn't set
channels_min for playback/capture". But we don't know which DAI is it,
and not know why it can't/don't have channels_min. Let's name it as
"no_chan_DAI" here. According to the code and git-log, it is used as
DCPM-BE and is CPU DAI. I think the correct solution was set
channels_min on "no_chan_DAI" side, not update ASoC framework side. But
everything is under smoke today.
if (rtd->dai_link->dynamic || rtd->dai_link->no_pcm) {
playback = rtd->dai_link->dpcm_playback;
capture = rtd->dai_link->dpcm_capture;
(C) commit 9b5db059366a ("ASoC: soc-pcm: dpcm: Only allow playback/capture
if supported") checks channels_min (= validation check) again. Because
DPCM availability was handled by dpcm_xxx flag at that time, but some
Sound Card set it even though it wasn't available. Clearly there's
a contradiction here. I think correct solution was update Sound Card
side instead of ASoC framework. Sound Card side will be updated to
handle this issue later (commit 25612477d20b ("ASoC: soc-dai: set
dai_link dpcm_ flags with a helper"))
if (rtd->dai_link->dynamic || rtd->dai_link->no_pcm) {
...
playback = rtd->dai_link->dpcm_playback &&
snd_soc_dai_stream_valid(cpu_dai, ...);
capture = rtd->dai_link->dpcm_capture &&
snd_soc_dai_stream_valid(cpu_dai, ...);
This (C) patch should have broken "no_chan_DAI" which doesn't have
channels_min, but there was no such report during this 4 years.
Possibilities case are as follows
- No one is using "no_chan_DAI"
- "no_chan_DAI" is no longer exist : was removed ?
- "no_chan_DAI" is no longer exist : has channels_min ?
Because of these history, this dpcm_xxx is unneeded flag today. But because
we have been used it for 10 years since (B), it may have been used
differently. For example some DAI available both playback/capture, but it
set dpcm_playback flag only, in this case dpcm_xxx flag is used as
availability limitation. We can use playback_only flag instead in this
case, but it is very difficult to find such DAI today.
Let's add grace time to remove dpcm_playback/capture flag.
This patch don't use dpcm_xxx flag anymore, and indicates warning to use
xxx_only flag if both playback/capture were available but using only
one of dpcm_xxx flag, and not using xxx_only flag.
Link: https://lore.kernel.org/r/87edaym2cg.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tested-by: Jerome Brunet <jbrunet@baylibre.com>
---
include/sound/soc.h | 1 +
sound/soc/soc-pcm.c | 65 ++++++++++++++++++++++++++-------------------
2 files changed, 38 insertions(+), 28 deletions(-)
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 33671437ee89..2a3da1d91377 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -815,6 +815,7 @@ struct snd_soc_dai_link {
/* This DAI link can route to other DAI links at runtime (Frontend)*/
unsigned int dynamic:1;
+ /* REMOVE ME */
/* DPCM capture and Playback support */
unsigned int dpcm_capture:1;
unsigned int dpcm_playback:1;
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
index 711b2f49ed88..c4d80cad5982 100644
--- a/sound/soc/soc-pcm.c
+++ b/sound/soc/soc-pcm.c
@@ -2795,6 +2795,7 @@ static int soc_get_playback_capture(struct snd_soc_pcm_runtime *rtd,
{
struct snd_soc_dai_link *dai_link = rtd->dai_link;
struct snd_soc_dai *cpu_dai;
+ struct snd_soc_dai_link_ch_map *ch_maps;
int has_playback = 0;
int has_capture = 0;
int i;
@@ -2805,43 +2806,51 @@ static int soc_get_playback_capture(struct snd_soc_pcm_runtime *rtd,
}
if (dai_link->dynamic || dai_link->no_pcm) {
- int stream;
- if (dai_link->dpcm_playback) {
- stream = SNDRV_PCM_STREAM_PLAYBACK;
+ for_each_rtd_ch_maps(rtd, i, ch_maps) {
+ cpu_dai = snd_soc_rtd_to_cpu(rtd, ch_maps->cpu);
- for_each_rtd_cpu_dais(rtd, i, cpu_dai) {
- if (snd_soc_dai_stream_valid(cpu_dai, stream)) {
- has_playback = 1;
- break;
- }
- }
- if (!has_playback) {
- dev_err(rtd->card->dev,
- "No CPU DAIs support playback for stream %s\n",
- dai_link->stream_name);
- return -EINVAL;
- }
+ if (snd_soc_dai_stream_valid(cpu_dai, SNDRV_PCM_STREAM_PLAYBACK))
+ has_playback = 1;
+
+ if (snd_soc_dai_stream_valid(cpu_dai, SNDRV_PCM_STREAM_CAPTURE))
+ has_capture = 1;
}
- if (dai_link->dpcm_capture) {
- stream = SNDRV_PCM_STREAM_CAPTURE;
- for_each_rtd_cpu_dais(rtd, i, cpu_dai) {
- if (snd_soc_dai_stream_valid(cpu_dai, stream)) {
- has_capture = 1;
- break;
- }
+ /*
+ * REMOVE ME
+ *
+ * dpcm_xxx flag will be removed soon, Indicates warning if dpcm_xxx flag was used
+ * as availability limition
+ */
+ if (has_playback && has_capture) {
+ if ( dai_link->dpcm_playback &&
+ !dai_link->dpcm_capture &&
+ !dai_link->playback_only) {
+ dev_warn(rtd->card->dev,
+ "both playback/capture are available,"
+ " but not using playback_only flag (%s)\n",
+ dai_link->stream_name);
+ dev_warn(rtd->card->dev,
+ "dpcm_playback/capture are no longer needed,"
+ " please use playback/capture_only instead\n");
+ has_capture = 0;
}
- if (!has_capture) {
- dev_err(rtd->card->dev,
- "No CPU DAIs support capture for stream %s\n",
- dai_link->stream_name);
- return -EINVAL;
+ if (!dai_link->dpcm_playback &&
+ dai_link->dpcm_capture &&
+ !dai_link->capture_only) {
+ dev_warn(rtd->card->dev,
+ "both playback/capture are available,"
+ " but not using capture_only flag (%s)\n",
+ dai_link->stream_name);
+ dev_warn(rtd->card->dev,
+ "dpcm_playback/capture are no longer needed,"
+ " please use playback/capture_only instead\n");
+ has_playback = 0;
}
}
} else {
- struct snd_soc_dai_link_ch_map *ch_maps;
struct snd_soc_dai *codec_dai;
/* Adapt stream for codec2codec links */
--
2.25.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v4 2/3] ASoC: remove snd_soc_dai_link_set_capabilities()
2024-05-23 2:11 [PATCH v4 0/3] ASoC: grace time for DPCM cleanup Kuninori Morimoto
2024-05-23 2:12 ` [PATCH v4 1/3] ASoC: soc-pcm: Indicate warning if dpcm_playback/capture were used for availability limition Kuninori Morimoto
@ 2024-05-23 2:12 ` Kuninori Morimoto
2024-05-23 2:13 ` [PATCH v4 3/3] ASoC: amlogic: do not use dpcm_playback/capture flags Kuninori Morimoto
2024-05-23 22:43 ` [PATCH v4 0/3] ASoC: grace time for DPCM cleanup Pierre-Louis Bossart
3 siblings, 0 replies; 6+ messages in thread
From: Kuninori Morimoto @ 2024-05-23 2:12 UTC (permalink / raw)
To: "Amadeusz Sławiński", Alexandre Belloni,
Alper Nebi Yasak, AngeloGioacchino Del Regno, Banajit Goswami,
Bard Liao, Brent Lu, Cezary Rojewski, Charles Keepax,
Claudiu Beznea, Cristian Ciocaltea, Daniel Baluta, Hans de Goede,
Jaroslav Kysela, Jerome Brunet, Jiawei Wang, Jonathan Corbet,
Kai Vehmanen, Kevin Hilman, Liam Girdwood, Mark Brown, Maso Huang,
Matthias Brugger, Neil Armstrong, Nicolas Ferre, Peter Ujfalusi,
Pierre-Louis Bossart, Ranjani Sridharan, Sascha Hauer, Shawn Guo,
Shengjiu Wang, Srinivas Kandagatla, Sylwester Nawrocki,
Takashi Iwai, Vinod Koul, Xiubo Li, alsa-devel, imx, linux-doc,
linux-sound
dpcm_xxx flags are no longer needed.
We need to use xxx_only flags instead if needed, but
snd_soc_dai_link_set_capabilities() user adds dpcm_xxx if playback/catpure
were available. Thus converting dpcm_xxx to xxx_only is not needed.
Just remove it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tested-by: Jerome Brunet <jbrunet@baylibre.com>
---
include/sound/soc-dai.h | 1 -
sound/soc/fsl/imx-card.c | 3 ---
sound/soc/generic/audio-graph-card.c | 2 --
sound/soc/generic/audio-graph-card2.c | 2 --
sound/soc/generic/simple-card.c | 2 --
sound/soc/meson/axg-card.c | 1 -
sound/soc/meson/gx-card.c | 1 -
sound/soc/qcom/common.c | 1 -
sound/soc/soc-dai.c | 38 ---------------------------
9 files changed, 51 deletions(-)
diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h
index adcd8719d343..69ba1a628eab 100644
--- a/include/sound/soc-dai.h
+++ b/include/sound/soc-dai.h
@@ -219,7 +219,6 @@ void snd_soc_dai_resume(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);
-void snd_soc_dai_link_set_capabilities(struct snd_soc_dai_link *dai_link);
void snd_soc_dai_action(struct snd_soc_dai *dai,
int stream, int action);
static inline void snd_soc_dai_activate(struct snd_soc_dai *dai,
diff --git a/sound/soc/fsl/imx-card.c b/sound/soc/fsl/imx-card.c
index 0e18ccabe28c..98b37dd2b901 100644
--- a/sound/soc/fsl/imx-card.c
+++ b/sound/soc/fsl/imx-card.c
@@ -650,9 +650,6 @@ static int imx_card_parse_of(struct imx_card_data *data)
link->ops = &imx_aif_ops;
}
- if (link->no_pcm || link->dynamic)
- snd_soc_dai_link_set_capabilities(link);
-
/* Get dai fmt */
ret = simple_util_parse_daifmt(dev, np, codec,
NULL, &link->dai_fmt);
diff --git a/sound/soc/generic/audio-graph-card.c b/sound/soc/generic/audio-graph-card.c
index 83e3ba773fbd..714ce1f4a061 100644
--- a/sound/soc/generic/audio-graph-card.c
+++ b/sound/soc/generic/audio-graph-card.c
@@ -246,8 +246,6 @@ static int graph_dai_link_of_dpcm(struct simple_util_priv *priv,
graph_parse_convert(dev, ep, &dai_props->adata);
- snd_soc_dai_link_set_capabilities(dai_link);
-
ret = graph_link_init(priv, cpu_ep, codec_ep, li, dai_name);
li->link++;
diff --git a/sound/soc/generic/audio-graph-card2.c b/sound/soc/generic/audio-graph-card2.c
index 81e84095107e..6aeb578891f6 100644
--- a/sound/soc/generic/audio-graph-card2.c
+++ b/sound/soc/generic/audio-graph-card2.c
@@ -925,8 +925,6 @@ int audio_graph2_link_dpcm(struct simple_util_priv *priv,
graph_parse_convert(ep, dai_props); /* at node of <dpcm> */
graph_parse_convert(rep, dai_props); /* at node of <CPU/Codec> */
- snd_soc_dai_link_set_capabilities(dai_link);
-
graph_link_init(priv, rport, li, is_cpu);
err:
of_node_put(ep);
diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c
index 9c79ff6a568f..5e66812ffadf 100644
--- a/sound/soc/generic/simple-card.c
+++ b/sound/soc/generic/simple-card.c
@@ -276,8 +276,6 @@ static int simple_dai_link_of_dpcm(struct simple_util_priv *priv,
simple_parse_convert(dev, np, &dai_props->adata);
- snd_soc_dai_link_set_capabilities(dai_link);
-
ret = simple_link_init(priv, node, codec, li, prefix, dai_name);
out_put_node:
diff --git a/sound/soc/meson/axg-card.c b/sound/soc/meson/axg-card.c
index 8c5605c1e34e..09aa36e94c85 100644
--- a/sound/soc/meson/axg-card.c
+++ b/sound/soc/meson/axg-card.c
@@ -339,7 +339,6 @@ static int axg_card_add_link(struct snd_soc_card *card, struct device_node *np,
dai_link->num_c2c_params = 1;
} else {
dai_link->no_pcm = 1;
- snd_soc_dai_link_set_capabilities(dai_link);
if (axg_card_cpu_is_tdm_iface(dai_link->cpus->of_node))
ret = axg_card_parse_tdm(card, np, index);
}
diff --git a/sound/soc/meson/gx-card.c b/sound/soc/meson/gx-card.c
index f1539e542638..7edca3e49c8f 100644
--- a/sound/soc/meson/gx-card.c
+++ b/sound/soc/meson/gx-card.c
@@ -107,7 +107,6 @@ static int gx_card_add_link(struct snd_soc_card *card, struct device_node *np,
dai_link->num_c2c_params = 1;
} else {
dai_link->no_pcm = 1;
- snd_soc_dai_link_set_capabilities(dai_link);
/* Check if the cpu is the i2s encoder and parse i2s data */
if (gx_card_cpu_identify(dai_link->cpus, "I2S Encoder"))
ret = gx_card_parse_i2s(card, np, index);
diff --git a/sound/soc/qcom/common.c b/sound/soc/qcom/common.c
index 3d02aa3844f2..11cbcb588336 100644
--- a/sound/soc/qcom/common.c
+++ b/sound/soc/qcom/common.c
@@ -145,7 +145,6 @@ int qcom_snd_parse_of(struct snd_soc_card *card)
if (platform || !codec) {
/* DPCM */
- snd_soc_dai_link_set_capabilities(link);
link->ignore_suspend = 1;
link->nonatomic = 1;
}
diff --git a/sound/soc/soc-dai.c b/sound/soc/soc-dai.c
index fefe394dce72..f8e46bec6f80 100644
--- a/sound/soc/soc-dai.c
+++ b/sound/soc/soc-dai.c
@@ -479,44 +479,6 @@ bool snd_soc_dai_stream_valid(struct snd_soc_dai *dai, int dir)
return stream->channels_min;
}
-/*
- * snd_soc_dai_link_set_capabilities() - set dai_link properties based on its DAIs
- */
-void snd_soc_dai_link_set_capabilities(struct snd_soc_dai_link *dai_link)
-{
- bool supported[SNDRV_PCM_STREAM_LAST + 1];
- int direction;
-
- for_each_pcm_streams(direction) {
- struct snd_soc_dai_link_component *cpu;
- struct snd_soc_dai_link_component *codec;
- struct snd_soc_dai *dai;
- bool supported_cpu = false;
- bool supported_codec = false;
- int i;
-
- for_each_link_cpus(dai_link, i, cpu) {
- dai = snd_soc_find_dai_with_mutex(cpu);
- if (dai && snd_soc_dai_stream_valid(dai, direction)) {
- supported_cpu = true;
- break;
- }
- }
- for_each_link_codecs(dai_link, i, codec) {
- dai = snd_soc_find_dai_with_mutex(codec);
- if (dai && snd_soc_dai_stream_valid(dai, direction)) {
- supported_codec = true;
- break;
- }
- }
- supported[direction] = supported_cpu && supported_codec;
- }
-
- dai_link->dpcm_playback = supported[SNDRV_PCM_STREAM_PLAYBACK];
- dai_link->dpcm_capture = supported[SNDRV_PCM_STREAM_CAPTURE];
-}
-EXPORT_SYMBOL_GPL(snd_soc_dai_link_set_capabilities);
-
void snd_soc_dai_action(struct snd_soc_dai *dai,
int stream, int action)
{
--
2.25.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v4 3/3] ASoC: amlogic: do not use dpcm_playback/capture flags
2024-05-23 2:11 [PATCH v4 0/3] ASoC: grace time for DPCM cleanup Kuninori Morimoto
2024-05-23 2:12 ` [PATCH v4 1/3] ASoC: soc-pcm: Indicate warning if dpcm_playback/capture were used for availability limition Kuninori Morimoto
2024-05-23 2:12 ` [PATCH v4 2/3] ASoC: remove snd_soc_dai_link_set_capabilities() Kuninori Morimoto
@ 2024-05-23 2:13 ` Kuninori Morimoto
2024-05-23 22:43 ` [PATCH v4 0/3] ASoC: grace time for DPCM cleanup Pierre-Louis Bossart
3 siblings, 0 replies; 6+ messages in thread
From: Kuninori Morimoto @ 2024-05-23 2:13 UTC (permalink / raw)
To: "Amadeusz Sławiński", Alexandre Belloni,
Alper Nebi Yasak, AngeloGioacchino Del Regno, Banajit Goswami,
Bard Liao, Brent Lu, Cezary Rojewski, Charles Keepax,
Claudiu Beznea, Cristian Ciocaltea, Daniel Baluta, Hans de Goede,
Jaroslav Kysela, Jerome Brunet, Jiawei Wang, Jonathan Corbet,
Kai Vehmanen, Kevin Hilman, Liam Girdwood, Mark Brown, Maso Huang,
Matthias Brugger, Neil Armstrong, Nicolas Ferre, Peter Ujfalusi,
Pierre-Louis Bossart, Ranjani Sridharan, Sascha Hauer, Shawn Guo,
Shengjiu Wang, Srinivas Kandagatla, Sylwester Nawrocki,
Takashi Iwai, Vinod Koul, Xiubo Li, alsa-devel, imx, linux-doc,
linux-sound
From: Jerome Brunet <jbrunet@baylibre.com>
dpcm_playback/capture flags are being deprecated in ASoC.
Use playback/capture_only flags instead
Suggested-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/meson/axg-card.c | 10 +++++-----
sound/soc/meson/meson-card-utils.c | 4 ++--
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/sound/soc/meson/axg-card.c b/sound/soc/meson/axg-card.c
index 09aa36e94c85..646ab87afac2 100644
--- a/sound/soc/meson/axg-card.c
+++ b/sound/soc/meson/axg-card.c
@@ -132,7 +132,7 @@ static int axg_card_add_tdm_loopback(struct snd_soc_card *card,
lb->stream_name = lb->name;
lb->cpus->of_node = pad->cpus->of_node;
lb->cpus->dai_name = "TDM Loopback";
- lb->dpcm_capture = 1;
+ lb->capture_only = 1;
lb->no_pcm = 1;
lb->ops = &axg_card_tdm_be_ops;
lb->init = axg_card_tdm_dai_lb_init;
@@ -176,7 +176,7 @@ static int axg_card_parse_cpu_tdm_slots(struct snd_soc_card *card,
/* Disable playback is the interface has no tx slots */
if (!tx)
- link->dpcm_playback = 0;
+ link->capture_only = 1;
for (i = 0, rx = 0; i < AXG_TDM_NUM_LANES; i++) {
snprintf(propname, 32, "dai-tdm-slot-rx-mask-%d", i);
@@ -186,9 +186,9 @@ static int axg_card_parse_cpu_tdm_slots(struct snd_soc_card *card,
/* Disable capture is the interface has no rx slots */
if (!rx)
- link->dpcm_capture = 0;
+ link->playback_only = 1;
- /* ... but the interface should at least have one of them */
+ /* ... but the interface should at least have one direction */
if (!tx && !rx) {
dev_err(card->dev, "tdm link has no cpu slots\n");
return -EINVAL;
@@ -275,7 +275,7 @@ static int axg_card_parse_tdm(struct snd_soc_card *card,
return ret;
/* Add loopback if the pad dai has playback */
- if (link->dpcm_playback) {
+ if (!link->capture_only) {
ret = axg_card_add_tdm_loopback(card, index);
if (ret)
return ret;
diff --git a/sound/soc/meson/meson-card-utils.c b/sound/soc/meson/meson-card-utils.c
index ed6c7e2f609c..1a4ef124e4e2 100644
--- a/sound/soc/meson/meson-card-utils.c
+++ b/sound/soc/meson/meson-card-utils.c
@@ -186,9 +186,9 @@ int meson_card_set_fe_link(struct snd_soc_card *card,
link->dpcm_merged_rate = 1;
if (is_playback)
- link->dpcm_playback = 1;
+ link->playback_only = 1;
else
- link->dpcm_capture = 1;
+ link->capture_only = 1;
return meson_card_set_link_name(card, link, node, "fe");
}
--
2.25.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v4 0/3] ASoC: grace time for DPCM cleanup
2024-05-23 2:11 [PATCH v4 0/3] ASoC: grace time for DPCM cleanup Kuninori Morimoto
` (2 preceding siblings ...)
2024-05-23 2:13 ` [PATCH v4 3/3] ASoC: amlogic: do not use dpcm_playback/capture flags Kuninori Morimoto
@ 2024-05-23 22:43 ` Pierre-Louis Bossart
2024-05-23 23:24 ` Kuninori Morimoto
3 siblings, 1 reply; 6+ messages in thread
From: Pierre-Louis Bossart @ 2024-05-23 22:43 UTC (permalink / raw)
To: Kuninori Morimoto, Amadeusz Sławiński,
Alexandre Belloni, Alper Nebi Yasak, AngeloGioacchino Del Regno,
Banajit Goswami, Bard Liao, Brent Lu, Cezary Rojewski,
Charles Keepax, Claudiu Beznea, Cristian Ciocaltea, Daniel Baluta,
Hans de Goede, Jaroslav Kysela, Jerome Brunet, Jiawei Wang,
Jonathan Corbet, Kai Vehmanen, Kevin Hilman, Liam Girdwood,
Mark Brown, Maso Huang, Matthias Brugger, Neil Armstrong,
Nicolas Ferre, Peter Ujfalusi, Ranjani Sridharan, Sascha Hauer,
Shawn Guo, Shengjiu Wang, Srinivas Kandagatla, Sylwester Nawrocki,
Takashi Iwai, Vinod Koul, Xiubo Li, alsa-devel, imx, linux-doc,
linux-sound
Hi Morimoto-san,
> This is v4 of DPCM cleanup
>
> As we discussed in [1], we don't need to use dpcm_playback/capture flag,
> so we remove it. But we have been using it for 10 years, some driver might
> get damage. The most likely case is that the device/driver can use both
> playback/capture, but have only one flag, and not using xxx_only flag.
> [1/3] patch indicates warning in such case.
>
> These adds grace time for DPCM cleanup.
> I'm not sure when dpcm_xxx will be removed, and Codec check bypass will be
> error, but maybe v6.11 or v6.12 ?
We're already finding warnings on all Intel SoundWire platforms:
The DAIs are declared as supporting playback AND capture, but in
practice they can only support one direction at a time.
The direction is defined by the dailink when it includes specific DAIs.
So if you don't mind I'd prefer it if we shared a patch with you to be
included in a v5, to make sure at least the Intel platforms tested in CI
are all ok from Day1, otherwise we're going to get lots of noise
reported for no good reason.
Shouldn't take long.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v4 0/3] ASoC: grace time for DPCM cleanup
2024-05-23 22:43 ` [PATCH v4 0/3] ASoC: grace time for DPCM cleanup Pierre-Louis Bossart
@ 2024-05-23 23:24 ` Kuninori Morimoto
0 siblings, 0 replies; 6+ messages in thread
From: Kuninori Morimoto @ 2024-05-23 23:24 UTC (permalink / raw)
To: Pierre-Louis Bossart
Cc: Amadeusz Sławiński, Alexandre Belloni, Alper Nebi Yasak,
AngeloGioacchino Del Regno, Banajit Goswami, Bard Liao, Brent Lu,
Cezary Rojewski, Charles Keepax, Claudiu Beznea,
Cristian Ciocaltea, Daniel Baluta, Hans de Goede, Jaroslav Kysela,
Jerome Brunet, Jiawei Wang, Jonathan Corbet, Kai Vehmanen,
Kevin Hilman, Liam Girdwood, Mark Brown, Maso Huang,
Matthias Brugger, Neil Armstrong, Nicolas Ferre, Peter Ujfalusi,
Ranjani Sridharan, Sascha Hauer, Shawn Guo, Shengjiu Wang,
Srinivas Kandagatla, Sylwester Nawrocki, Takashi Iwai, Vinod Koul,
Xiubo Li, alsa-devel, imx, linux-doc, linux-sound
Hi Pierre-Louis
> We're already finding warnings on all Intel SoundWire platforms:
>
> The DAIs are declared as supporting playback AND capture, but in
> practice they can only support one direction at a time.
>
> The direction is defined by the dailink when it includes specific DAIs.
>
> So if you don't mind I'd prefer it if we shared a patch with you to be
> included in a v5, to make sure at least the Intel platforms tested in CI
> are all ok from Day1, otherwise we're going to get lots of noise
> reported for no good reason.
> Shouldn't take long.
Thank you for reporting. OK, no problem.
I will fixup pointed typo, and merge your patches into v5.
Thank you for your help !!
Best regards
---
Renesas Electronics
Ph.D. Kuninori Morimoto
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-05-23 23:24 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-23 2:11 [PATCH v4 0/3] ASoC: grace time for DPCM cleanup Kuninori Morimoto
2024-05-23 2:12 ` [PATCH v4 1/3] ASoC: soc-pcm: Indicate warning if dpcm_playback/capture were used for availability limition Kuninori Morimoto
2024-05-23 2:12 ` [PATCH v4 2/3] ASoC: remove snd_soc_dai_link_set_capabilities() Kuninori Morimoto
2024-05-23 2:13 ` [PATCH v4 3/3] ASoC: amlogic: do not use dpcm_playback/capture flags Kuninori Morimoto
2024-05-23 22:43 ` [PATCH v4 0/3] ASoC: grace time for DPCM cleanup Pierre-Louis Bossart
2024-05-23 23:24 ` Kuninori Morimoto
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox