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

Unverified Commit db658f40 authored by Andreas Dannenberg's avatar Andreas Dannenberg Committed by Mark Brown
Browse files

ASoC: codecs: tas5720: add TAS5722 TDM slot width setting support



Unlike the TAS5720, the TAS5722 can be configured to utilize 16-bit wide
slots in TDM mode. This can help easing audio clocking/frequency
requirements.

Signed-off-by: default avatarAndreas Dannenberg <dannenberg@ti.com>
Signed-off-by: default avatarAndrew F. Davis <afd@ti.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent ec94c177
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -152,6 +152,7 @@ static int tas5720_set_dai_tdm_slot(struct snd_soc_dai *dai,
				    int slots, int slot_width)
{
	struct snd_soc_component *component = dai->component;
	struct tas5720_data *tas5720 = snd_soc_component_get_drvdata(component);
	unsigned int first_slot;
	int ret;

@@ -185,6 +186,20 @@ static int tas5720_set_dai_tdm_slot(struct snd_soc_dai *dai,
	if (ret < 0)
		goto error_snd_soc_component_update_bits;

	/* Configure TDM slot width. This is only applicable to TAS5722. */
	switch (tas5720->devtype) {
	case TAS5722:
		ret = snd_soc_component_update_bits(component, TAS5722_DIGITAL_CTRL2_REG,
						    TAS5722_TDM_SLOT_16B,
						    slot_width == 16 ?
						    TAS5722_TDM_SLOT_16B : 0);
		if (ret < 0)
			goto error_snd_soc_component_update_bits;
		break;
	default:
		break;
	}

	return 0;

error_snd_soc_component_update_bits: