ASoC: DACplus - fix 16bit sample support in clock consumer mode
authorJoerg Schambacher <joerg@hifiberry.com>
Thu, 1 Feb 2024 16:32:44 +0000 (17:32 +0100)
committerDom Cobley <popcornmix@gmail.com>
Mon, 19 Feb 2024 11:35:35 +0000 (11:35 +0000)
The former code did not adjust the physical sample width when
in clock consumer mode and has taken the fixed 32 bit default.
This has caused the audio to be played at half its frequency due to
the fixed bclk_ratio of 64.

Signed-off-by: Joerg Schambacher <joerg@hifiberry.com>
sound/soc/bcm/hifiberry_dacplus.c

index 1d89854..621f393 100644 (file)
@@ -279,13 +279,11 @@ static int snd_rpi_hifiberry_dacplus_hw_params(
        int ret = 0;
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        int channels = params_channels(params);
-       int width = 32;
+       int width = snd_pcm_format_physical_width(params_format(params));
 
        if (snd_rpi_hifiberry_is_dacpro) {
                struct snd_soc_component *component = asoc_rtd_to_codec(rtd, 0)->component;
 
-               width = snd_pcm_format_physical_width(params_format(params));
-
                snd_rpi_hifiberry_dacplus_set_sclk(component,
                        params_rate(params));