[PATCH 4/8] ASoC: soc-pcm: add soc_pcm_care_symmetry()

Mark Brown broonie at kernel.org
Tue Mar 2 14:10:51 CET 2021


On Tue, Mar 02, 2021 at 10:48:07AM +0900, Kuninori Morimoto wrote:

> -static bool soc_pcm_has_symmetry(struct snd_pcm_substream *substream)
> +static void soc_pcm_care_symmetry(struct snd_pcm_substream *substream)
>  {
>  	struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
>  	struct snd_soc_dai_link *link = rtd->dai_link;
> @@ -423,7 +423,8 @@ static bool soc_pcm_has_symmetry(struct snd_pcm_substream *substream)
>  			dai->driver->symmetric_channels ||
>  			dai->driver->symmetric_sample_bits;
>  
> -	return symmetry;
> +	if (symmetry)
> +		substream->runtime->hw.info |= SNDRV_PCM_INFO_JOINT_DUPLEX;

The idea makes sense but I'm not sure about the name here - perhaps
soc_pcm_update_symmetry() might work better?  It's not super clear but
does look more natural.

>  }
>  
>  static void soc_pcm_set_msb(struct snd_pcm_substream *substream, int bits)
> @@ -735,8 +736,7 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
>  	/* Check that the codec and cpu DAIs are compatible */
>  	soc_pcm_init_runtime_hw(substream);
>  
> -	if (soc_pcm_has_symmetry(substream))
> -		runtime->hw.info |= SNDRV_PCM_INFO_JOINT_DUPLEX;
> +	soc_pcm_care_symmetry(substream);
>  
>  	ret = -EINVAL;
>  	if (!runtime->hw.rates) {
> @@ -1681,8 +1681,7 @@ static int dpcm_apply_symmetry(struct snd_pcm_substream *fe_substream,
>  	int i;
>  
>  	/* apply symmetry for FE */
> -	if (soc_pcm_has_symmetry(fe_substream))
> -		fe_substream->runtime->hw.info |= SNDRV_PCM_INFO_JOINT_DUPLEX;
> +	soc_pcm_care_symmetry(fe_substream);
>  
>  	for_each_rtd_cpu_dais (fe, i, fe_cpu_dai) {
>  		/* Symmetry only applies if we've got an active stream. */
> @@ -1707,8 +1706,7 @@ static int dpcm_apply_symmetry(struct snd_pcm_substream *fe_substream,
>  		if (rtd->dai_link->be_hw_params_fixup)
>  			continue;
>  
> -		if (soc_pcm_has_symmetry(be_substream))
> -			be_substream->runtime->hw.info |= SNDRV_PCM_INFO_JOINT_DUPLEX;
> +		soc_pcm_care_symmetry(be_substream);
>  
>  		/* Symmetry only applies if we've got an active stream. */
>  		for_each_rtd_dais(rtd, i, dai) {
> -- 
> 2.25.1
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20210302/2ca27106/attachment-0001.sig>


More information about the Alsa-devel mailing list