lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 102/667] ASoC: tscs454: Add endianness flag in snd_soc_component_driver
    Date
    From: Charles Keepax <ckeepax@opensource.cirrus.com>

    [ Upstream commit ff69ec96b87dccb3a29edef8cec5d4fefbbc2055 ]

    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. It is worth noting this changes the behaviour of S24_LE to
    use a word length of 24 rather than 32. This would appear to be a
    correction since the fact S24_LE is stored as 32 bits should not be
    presented over the bus.

    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20220504170905.332415-26-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/soc/codecs/tscs454.c | 12 ++++++------
    1 file changed, 6 insertions(+), 6 deletions(-)

    diff --git a/sound/soc/codecs/tscs454.c b/sound/soc/codecs/tscs454.c
    index 43220bb36701..c27ca9a273e1 100644
    --- a/sound/soc/codecs/tscs454.c
    +++ b/sound/soc/codecs/tscs454.c
    @@ -3120,18 +3120,17 @@ static int set_aif_sample_format(struct snd_soc_component *component,
    unsigned int width;
    int ret;

    - switch (format) {
    - case SNDRV_PCM_FORMAT_S16_LE:
    + switch (snd_pcm_format_width(format)) {
    + case 16:
    width = FV_WL_16;
    break;
    - case SNDRV_PCM_FORMAT_S20_3LE:
    + case 20:
    width = FV_WL_20;
    break;
    - case SNDRV_PCM_FORMAT_S24_3LE:
    + case 24:
    width = FV_WL_24;
    break;
    - case SNDRV_PCM_FORMAT_S24_LE:
    - case SNDRV_PCM_FORMAT_S32_LE:
    + case 32:
    width = FV_WL_32;
    break;
    default:
    @@ -3326,6 +3325,7 @@ static const struct snd_soc_component_driver soc_component_dev_tscs454 = {
    .num_dapm_routes = ARRAY_SIZE(tscs454_intercon),
    .controls = tscs454_snd_controls,
    .num_controls = ARRAY_SIZE(tscs454_snd_controls),
    + .endianness = 1,
    };

    #define TSCS454_RATES SNDRV_PCM_RATE_8000_96000
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-07 20:37    [W:4.025 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site