linux-doc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: "Kuninori Morimoto" <kuninori.morimoto.gx@renesas.com>,
	"Amadeusz Sławiński" <amadeuszx.slawinski@linux.intel.com>,
	"Alexandre Belloni" <alexandre.belloni@bootlin.com>,
	"Alper Nebi Yasak" <alpernebiyasak@gmail.com>,
	"AngeloGioacchino Del Regno"
	<angelogioacchino.delregno@collabora.com>,
	"Banajit Goswami" <bgoswami@quicinc.com>,
	"Bard Liao" <yung-chuan.liao@linux.intel.com>,
	"Brent Lu" <brent.lu@intel.com>,
	"Cezary Rojewski" <cezary.rojewski@intel.com>,
	"Charles Keepax" <ckeepax@opensource.cirrus.com>,
	"Claudiu Beznea" <claudiu.beznea@tuxon.dev>,
	"Cristian Ciocaltea" <cristian.ciocaltea@collabora.com>,
	"Daniel Baluta" <daniel.baluta@nxp.com>,
	"Hans de Goede" <hdegoede@redhat.com>,
	"Jaroslav Kysela" <perex@perex.cz>,
	"Jerome Brunet" <jbrunet@baylibre.com>,
	"Jiawei Wang" <me@jwang.link>, "Jonathan Corbet" <corbet@lwn.net>,
	"Kai Vehmanen" <kai.vehmanen@linux.intel.com>,
	"Kevin Hilman" <khilman@baylibre.com>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Mark Brown" <broonie@kernel.org>,
	"Maso Huang" <maso.huang@mediatek.com>,
	"Matthias Brugger" <matthias.bgg@gmail.com>,
	"Neil Armstrong" <neil.armstrong@linaro.org>,
	"Nicolas Ferre" <nicolas.ferre@microchip.com>,
	"Peter Ujfalusi" <peter.ujfalusi@linux.intel.com>,
	"Ranjani Sridharan" <ranjani.sridharan@linux.intel.com>,
	"Sascha Hauer" <s.hauer@pengutronix.de>,
	"Shawn Guo" <shawnguo@kernel.org>,
	"Shengjiu Wang" <shengjiu.wang@gmail.com>,
	"Srinivas Kandagatla" <srinivas.kandagatla@linaro.org>,
	"Sylwester Nawrocki" <s.nawrocki@samsung.com>,
	"Takashi Iwai" <tiwai@suse.com>, "Vinod Koul" <vkoul@kernel.org>,
	"Xiubo Li" <Xiubo.Lee@gmail.com>,
	alsa-devel@alsa-project.org, imx@lists.linux.dev,
	linux-doc@vger.kernel.org, linux-sound@vger.kernel.org
Subject: Re: [PATCH v3 01/23] ASoC: soc-pcm: cleanup soc_get_playback_capture()
Date: Thu, 18 Apr 2024 11:20:23 -0500	[thread overview]
Message-ID: <a1f63065-6d8a-404f-b4be-331d829f802f@linux.intel.com> (raw)
In-Reply-To: <87frvj8g2v.wl-kuninori.morimoto.gx@renesas.com>


> (X) part is for DPCM, and it checks playback/capture availability
> if dai_link has dpcm_playback/capture flag (a)(b).
> This availability check should be available not only for DPCM, but for
> all connections. But it is not mandatory option. Let's name it as
> assertion.

I don't follow the 'not mandatory option'. Why not make these
'assertions' mandatory? What happens in case the the option is not present?

> In case of having assertion flag, non specific side will be disabled.

Not following the wording, multiple negatives and not clear on what
'side' refers to (direction or DPCM/non-DPCM).

> For example if it has playback_assertion but not have capture_assertion,
> capture will be force disabled.
> 
> 	dpcm_playback -> playabck_assertion = 1
> 
> 	dpcm_capture  -> capture_assertion  = 1
> 
> 	playback_only -> playback_assertion = 1
> 	                 capture_assertion  = 0
> 
> 	capture_only  -> playback_assertion = 0
> 	                 capture_assertion  = 1
> 
> By expanding this assertion to all connections, we can use same code
> for all connections, this means code can be more cleanup.

I see a contradiction between "expanding the assertion to all
connections" and "not mandatory".

> Current validation check on DPCM ignores Codec DAI, but there is no
> reason to do it.  We should check both CPU/Codec in all connection.

"there's no reason to do so" ?

> This patch expands validation check to all cases.
> 
> 	[CPU/xxxx]-[yyyy/Codec]
> 	                 *****
> 
> In many case (not all case), above [xxxx][yyyy] part are "dummy" DAI
> which is always valid for both playback/capture.
> But unfortunately DPCM BE Codec (**** part) had been no validation
> check before, and some Codec driver doesn't have necessary settings for
> it. This means all cases validation check breaks compatibility on some
> vender's drivers. Thus this patch temporary uses dummy DAI at BPCM BE

vendor

> Codec part, and avoid compatibility error. But it should be removed in
> the future.
> 
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
>  include/sound/soc.h |   9 +++
>  sound/soc/soc-pcm.c | 143 +++++++++++++++++++++++++-------------------
>  2 files changed, 92 insertions(+), 60 deletions(-)
> 
> diff --git a/include/sound/soc.h b/include/sound/soc.h
> index 0376f7e4c15d..e604d74f6e33 100644
> --- a/include/sound/soc.h
> +++ b/include/sound/soc.h
> @@ -809,6 +809,15 @@ struct snd_soc_dai_link {
>  	unsigned int dpcm_capture:1;
>  	unsigned int dpcm_playback:1;
>  
> +	/*
> +	 * Capture / Playback support assertion. Having assertion flag is not mandatory.
> +	 * In case of having assertion flag, non specific side will be disabled.

again the 'not mandatory' and 'non specific side will be disabled' are
confusing.


> +	/*
> +	 * Assertion check
> +	 *
> +	 * playback_assertion = 0	No assertion check.
> +	 * capture_assertion  = 0	ASoC will use detected playback/capture as-is.
> +	 *				No playback, No capture will be error.

did you mean "this combination will be handled as an error" ?

It's probably best to have a different presentation, to avoid
confusions. Using multiple lines without a separator isn't great.

Suggested example:

playback_assertion = 0 capture_assertion  = 0
this combination will be handled as an error

playback_assertion = 1 capture_assertion  = 0
the DAIs in this dailink must support playback.
ASoC will disable capture.
In other words "playback_only"


> +	 *
> +	 * playback_assertion = 1	DAI must playback available. ASoC will disable capture.
> +	 * capture_assertion  = 0	In other words "playback_only"
> +	 *
> +	 * playback_assertion = 0	DAI must capture available. ASoC will disable playback.
> +	 * capture_assertion  = 1	In other words "capture_only"
> +	 *
> +	 * playback_assertion = 1	DAI must both playback/capture available.
> +	 * capture_assertion  = 1

nit-pick: the 'must X available' does not read well, 'must support X' is
probably what you meant.

> +	 */
> +	if (dai_link->playback_assertion) {
> +		if (!has_playback) {
> +			dev_err(rtd->dev, "%s playback assertion check error\n", dai_link->stream_name);

"invalid playback_assertion" ?

> +			return -EINVAL;
> +		}
> +		/* makes it plyaback only */

typo: playback

> +		if (!dai_link->capture_assertion)
> +			has_capture = 0;
> +	}
> +	if (dai_link->capture_assertion) {
> +		if (!has_capture) {
> +			dev_err(rtd->dev, "%s capture assertion check error\n", dai_link->stream_name);
> +			return -EINVAL;
> +		}
> +		/* makes it capture only */
> +		if (!dai_link->playback_assertion)
> +			has_playback = 0;
> +	}

we probably want a dev_ log when the has_playback/capture is overridden?

>  
> +	/*
> +	 * Detect Mismatch
> +	 */
>  	if (!has_playback && !has_capture) {
>  		dev_err(rtd->dev, "substream %s has no playback, no capture\n",
>  			dai_link->stream_name);
> -
>  		return -EINVAL;
>  	}
>  

  reply	other threads:[~2024-04-18 16:29 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-18  4:11 [PATCH v3 00/23] ASoC: Replace dpcm_playback/capture to playback/capture_assertion Kuninori Morimoto
2024-04-18  4:12 ` [PATCH v3 01/23] ASoC: soc-pcm: cleanup soc_get_playback_capture() Kuninori Morimoto
2024-04-18 16:20   ` Pierre-Louis Bossart [this message]
2024-04-19  1:09     ` Kuninori Morimoto
2024-04-19 13:17       ` Pierre-Louis Bossart
2024-04-22  4:46         ` Kuninori Morimoto
2024-04-22 20:12           ` Pierre-Louis Bossart
2024-04-23  4:56             ` Kuninori Morimoto
2024-04-18  4:12 ` [PATCH v3 02/23] ASoC: soc-pcm: indicate warning if DPCM BE Codec has no settings Kuninori Morimoto
2024-04-18  4:12 ` [PATCH v3 03/23] ASoC: soc-dai: remove snd_soc_dai_link_set_capabilities() Kuninori Morimoto
2024-04-18  4:12 ` [PATCH v3 04/23] ASoC: amd: Replace dpcm_playback/capture to playback/capture_assertion Kuninori Morimoto
2024-04-18  4:13 ` [PATCH v3 05/23] ASoC: fsl: " Kuninori Morimoto
2024-04-18  4:13 ` [PATCH v3 06/23] ASoC: sof: " Kuninori Morimoto
2024-04-18  4:13 ` [PATCH v3 07/23] ASoC: meson: " Kuninori Morimoto
2024-04-18  4:13 ` [PATCH v3 08/23] ASoC: Intel: " Kuninori Morimoto
2024-04-18  4:13 ` [PATCH v3 09/23] ASoC: mediatek: " Kuninori Morimoto
2024-04-18  4:13 ` [PATCH v3 10/23] ASoC: soc-core: " Kuninori Morimoto
2024-04-18  4:14 ` [PATCH v3 11/23] ASoC: soc-topology: " Kuninori Morimoto
2024-04-18  4:14 ` [PATCH v3 12/23] ASoC: soc-compress: " Kuninori Morimoto
2024-04-18  4:14 ` [PATCH v3 13/23] ASoC: Intel: avs: boards: " Kuninori Morimoto
2024-04-18  4:14 ` [PATCH v3 14/23] ASoC: ti: Replace playback/capture_only " Kuninori Morimoto
2024-04-18  4:14 ` [PATCH v3 15/23] ASoC: amd: " Kuninori Morimoto
2024-04-18  4:14 ` [PATCH v3 16/23] ASoC: fsl: " Kuninori Morimoto
2024-04-18  4:14 ` [PATCH v3 17/23] ASoC: mxs: " Kuninori Morimoto
2024-04-18  4:15 ` [PATCH v3 18/23] ASoC: atmel: " Kuninori Morimoto
2024-04-18  4:15 ` [PATCH v3 19/23] ASoC: Intel: " Kuninori Morimoto
2024-04-18 11:19   ` Amadeusz Sławiński
2024-04-18 16:26     ` Pierre-Louis Bossart
2024-04-19  7:31       ` Amadeusz Sławiński
2024-04-18  4:15 ` [PATCH v3 20/23] ASoC: samsung: " Kuninori Morimoto
2024-04-18  4:15 ` [PATCH v3 21/23] ASoC: generic: " Kuninori Morimoto
2024-04-18  4:15 ` [PATCH v3 22/23] ASoC: soc-pcm: remove dpcm_playback/capture and playback/capture_only Kuninori Morimoto
2024-04-18  4:15 ` [PATCH v3 23/23] ASoC: doc: Replace dpcm_playback/capture to playback/capture_assertion Kuninori Morimoto
2024-04-22 21:10 ` [PATCH v3 00/23] ASoC: " Pierre-Louis Bossart

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=a1f63065-6d8a-404f-b4be-331d829f802f@linux.intel.com \
    --to=pierre-louis.bossart@linux.intel.com \
    --cc=Xiubo.Lee@gmail.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=alpernebiyasak@gmail.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=amadeuszx.slawinski@linux.intel.com \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=bgoswami@quicinc.com \
    --cc=brent.lu@intel.com \
    --cc=broonie@kernel.org \
    --cc=cezary.rojewski@intel.com \
    --cc=ckeepax@opensource.cirrus.com \
    --cc=claudiu.beznea@tuxon.dev \
    --cc=corbet@lwn.net \
    --cc=cristian.ciocaltea@collabora.com \
    --cc=daniel.baluta@nxp.com \
    --cc=hdegoede@redhat.com \
    --cc=imx@lists.linux.dev \
    --cc=jbrunet@baylibre.com \
    --cc=kai.vehmanen@linux.intel.com \
    --cc=khilman@baylibre.com \
    --cc=kuninori.morimoto.gx@renesas.com \
    --cc=lgirdwood@gmail.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=maso.huang@mediatek.com \
    --cc=matthias.bgg@gmail.com \
    --cc=me@jwang.link \
    --cc=neil.armstrong@linaro.org \
    --cc=nicolas.ferre@microchip.com \
    --cc=perex@perex.cz \
    --cc=peter.ujfalusi@linux.intel.com \
    --cc=ranjani.sridharan@linux.intel.com \
    --cc=s.hauer@pengutronix.de \
    --cc=s.nawrocki@samsung.com \
    --cc=shawnguo@kernel.org \
    --cc=shengjiu.wang@gmail.com \
    --cc=srinivas.kandagatla@linaro.org \
    --cc=tiwai@suse.com \
    --cc=vkoul@kernel.org \
    --cc=yung-chuan.liao@linux.intel.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).