Commit 7d90c8e6 authored by Sascha Hauer's avatar Sascha Hauer Committed by Mark Brown

ASoC: tlv320adcx140: Fix tx_mask check

The tx_mask check doesn't reflect what the driver and the chip support.

The check currently checks for exactly two slots being enabled. The
tlv320adcx140 supports anything between one and eight channels, so relax
the check accordingly.

The tlv320adcx140 supports arbitrary tx_mask settings, but the driver
currently only supports adjacent slots beginning with the first slot,
so extend the check to check that the first slot is being used and that
there are no holes in the tx_mask.

Leave a comment to make it's the driver that limits the tx_mask
settings, not the chip itself.

While at it remove the set-but-unused struct adcx140p_priv::tdm_delay
field.
Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
Link: https://lore.kernel.org/r/20220624105716.2579539-1-s.hauer@pengutronix.deSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 9e51ac6e
...@@ -33,7 +33,6 @@ struct adcx140_priv { ...@@ -33,7 +33,6 @@ struct adcx140_priv {
bool micbias_vg; bool micbias_vg;
unsigned int dai_fmt; unsigned int dai_fmt;
unsigned int tdm_delay;
unsigned int slot_width; unsigned int slot_width;
}; };
...@@ -792,12 +791,13 @@ static int adcx140_set_dai_tdm_slot(struct snd_soc_dai *codec_dai, ...@@ -792,12 +791,13 @@ static int adcx140_set_dai_tdm_slot(struct snd_soc_dai *codec_dai,
{ {
struct snd_soc_component *component = codec_dai->component; struct snd_soc_component *component = codec_dai->component;
struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(component); struct adcx140_priv *adcx140 = snd_soc_component_get_drvdata(component);
unsigned int lsb;
/* TDM based on DSP mode requires slots to be adjacent */ /*
lsb = __ffs(tx_mask); * The chip itself supports arbitrary masks, but the driver currently
if ((lsb + 1) != __fls(tx_mask)) { * only supports adjacent slots beginning at the first slot.
dev_err(component->dev, "Invalid mask, slots must be adjacent\n"); */
if (tx_mask != GENMASK(__fls(tx_mask), 0)) {
dev_err(component->dev, "Only lower adjacent slots are supported\n");
return -EINVAL; return -EINVAL;
} }
...@@ -812,7 +812,6 @@ static int adcx140_set_dai_tdm_slot(struct snd_soc_dai *codec_dai, ...@@ -812,7 +812,6 @@ static int adcx140_set_dai_tdm_slot(struct snd_soc_dai *codec_dai,
return -EINVAL; return -EINVAL;
} }
adcx140->tdm_delay = lsb;
adcx140->slot_width = slot_width; adcx140->slot_width = slot_width;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment