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

Commit b9b044e2 authored by Romain Perier's avatar Romain Perier Committed by Mark Brown
Browse files

ASoC: es8328: Add support for slave mode



Currently, the function that changes the DAI format only supports master
mode. Trying to use a slave mode exits the function with -EINVAL and
leave the codec misconfigured. This commits adds support for enabling
the slave mode.

Signed-off-by: default avatarRomain Perier <romain.perier@collabora.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 5f166156
Loading
Loading
Loading
Loading
+14 −6
Original line number Diff line number Diff line
@@ -589,9 +589,21 @@ static int es8328_set_dai_fmt(struct snd_soc_dai *codec_dai,
	u8 dac_mode = 0;
	u8 adc_mode = 0;

	/* set master/slave audio interface */
	if ((fmt & SND_SOC_DAIFMT_MASTER_MASK) != SND_SOC_DAIFMT_CBM_CFM)
	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
	case SND_SOC_DAIFMT_CBM_CFM:
		/* Master serial port mode, with BCLK generated automatically */
		snd_soc_update_bits(codec, ES8328_MASTERMODE,
				    ES8328_MASTERMODE_MSC,
				    ES8328_MASTERMODE_MSC);
		break;
	case SND_SOC_DAIFMT_CBS_CFS:
		/* Slave serial port mode */
		snd_soc_update_bits(codec, ES8328_MASTERMODE,
				    ES8328_MASTERMODE_MSC, 0);
		break;
	default:
		return -EINVAL;
	}

	/* interface format */
	switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
@@ -620,10 +632,6 @@ static int es8328_set_dai_fmt(struct snd_soc_dai *codec_dai,
	snd_soc_update_bits(codec, ES8328_ADCCONTROL4,
			ES8328_ADCCONTROL4_ADCFORMAT_MASK, adc_mode);

	/* Master serial port mode, with BCLK generated automatically */
	snd_soc_update_bits(codec, ES8328_MASTERMODE,
			ES8328_MASTERMODE_MSC, ES8328_MASTERMODE_MSC);

	return 0;
}