aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/sound/soc/codecs/tlv320adc3xxx.c
diff options
context:
space:
mode:
authorCharles Keepax <ckeepax@opensource.cirrus.com>2022-05-04 18:08:51 +0100
committerMark Brown <broonie@kernel.org>2022-05-09 12:46:38 +0100
commitf5e0084b5beed00f11fb7cd1e90b8b91fcd06e9f (patch)
tree6763344309e386e5718b15d3ab9e06d3831761c8 /sound/soc/codecs/tlv320adc3xxx.c
parentASoC: rt9120: Add endianness flag in snd_soc_component_driver (diff)
downloadwireguard-linux-f5e0084b5beed00f11fb7cd1e90b8b91fcd06e9f.tar.xz
wireguard-linux-f5e0084b5beed00f11fb7cd1e90b8b91fcd06e9f.zip
ASoC: tlv320adc3xxx: Add endianness flag in snd_soc_component_driver
The endianness flag is used on the CODEC side to specify an ambivalence to endian, typically because it is lost over the hardware link. This device receives audio over an I2S DAI and as such should have endianness applied. A fixup is also required to use the width directly rather than relying on the format in hw_params, now both little and big endian would be supported. Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220504170905.332415-25-ckeepax@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/codecs/tlv320adc3xxx.c')
-rw-r--r--sound/soc/codecs/tlv320adc3xxx.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/sound/soc/codecs/tlv320adc3xxx.c b/sound/soc/codecs/tlv320adc3xxx.c
index a5e9f80cfa32..82532ad00c3c 100644
--- a/sound/soc/codecs/tlv320adc3xxx.c
+++ b/sound/soc/codecs/tlv320adc3xxx.c
@@ -1152,20 +1152,20 @@ static int adc3xxx_hw_params(struct snd_pcm_substream *substream,
return i;
/* select data word length */
- switch (params_format(params)) {
- case SNDRV_PCM_FORMAT_S16_LE:
+ switch (params_width(params)) {
+ case 16:
iface_len = ADC3XXX_IFACE_16BITS;
width = 16;
break;
- case SNDRV_PCM_FORMAT_S20_3LE:
+ case 20:
iface_len = ADC3XXX_IFACE_20BITS;
width = 20;
break;
- case SNDRV_PCM_FORMAT_S24_LE:
+ case 24:
iface_len = ADC3XXX_IFACE_24BITS;
width = 24;
break;
- case SNDRV_PCM_FORMAT_S32_LE:
+ case 32:
iface_len = ADC3XXX_IFACE_32BITS;
width = 32;
break;
@@ -1335,6 +1335,7 @@ static const struct snd_soc_component_driver soc_component_dev_adc3xxx = {
.num_dapm_widgets = ARRAY_SIZE(adc3xxx_dapm_widgets),
.dapm_routes = adc3xxx_intercon,
.num_dapm_routes = ARRAY_SIZE(adc3xxx_intercon),
+ .endianness = 1,
};
static const struct i2c_device_id adc3xxx_i2c_id[] = {