Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 594680ea authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown
Browse files

ASoC: pcm3168a: add hw constraint for channel



LEFT_J / I2S only can use TDM.
This patch adds channel constraint for it.

Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 38096889
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -484,6 +484,7 @@ static int pcm3168a_startup(struct snd_pcm_substream *substream,
	bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
	unsigned int fmt;
	unsigned int sample_min;
	unsigned int channel_max;

	if (tx)
		fmt = pcm3168a->dac_fmt;
@@ -496,19 +497,38 @@ static int pcm3168a_startup(struct snd_pcm_substream *substream,
	 * RIGHT_J : 24 / 16
	 * LEFT_J  : 24
	 * I2S     : 24
	 *
	 * TDM available
	 *
	 * I2S
	 * LEFT_J
	 */
	switch (fmt) {
	case PCM3168A_FMT_RIGHT_J:
		sample_min  = 16;
		channel_max =  2;
		break;
	case PCM3168A_FMT_LEFT_J:
		sample_min  = 24;
		channel_max =  8;
		break;
	case PCM3168A_FMT_I2S:
		sample_min  = 24;
		channel_max =  8;
		break;
	default:
		sample_min  = 24;
		channel_max =  2;
	}

	snd_pcm_hw_constraint_minmax(substream->runtime,
				     SNDRV_PCM_HW_PARAM_SAMPLE_BITS,
				     sample_min, 32);

	snd_pcm_hw_constraint_minmax(substream->runtime,
				     SNDRV_PCM_HW_PARAM_CHANNELS,
				     2, channel_max);

	return 0;
}
static const struct snd_soc_dai_ops pcm3168a_dac_dai_ops = {