]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ASoC: Intel: catpt: Expose correct bit depth to userspace
authorAmadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Tue, 9 Sep 2025 09:28:29 +0000 (11:28 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Sep 2025 09:13:48 +0000 (11:13 +0200)
[ Upstream commit 690aa09b1845c0d5c3c29dabd50a9d0488c97c48 ]

Currently wrong bit depth is exposed in hw params, causing clipped
volume during playback. Expose correct parameters.

Fixes: a126750fc865 ("ASoC: Intel: catpt: PCM operations")
Reported-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Tested-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Message-ID: <20250909092829.375953-1-amadeuszx.slawinski@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/soc/intel/catpt/pcm.c

index 81a2f0339e0552851ac2aa218a1745e06e2c122c..ff1fa01acb85b28736abf43181dc576accb1b770 100644 (file)
@@ -568,8 +568,9 @@ static const struct snd_pcm_hardware catpt_pcm_hardware = {
                                  SNDRV_PCM_INFO_RESUME |
                                  SNDRV_PCM_INFO_NO_PERIOD_WAKEUP,
        .formats                = SNDRV_PCM_FMTBIT_S16_LE |
-                                 SNDRV_PCM_FMTBIT_S24_LE |
                                  SNDRV_PCM_FMTBIT_S32_LE,
+       .subformats             = SNDRV_PCM_SUBFMTBIT_MSBITS_24 |
+                                 SNDRV_PCM_SUBFMTBIT_MSBITS_MAX,
        .period_bytes_min       = PAGE_SIZE,
        .period_bytes_max       = CATPT_BUFFER_MAX_SIZE / CATPT_PCM_PERIODS_MIN,
        .periods_min            = CATPT_PCM_PERIODS_MIN,
@@ -699,14 +700,18 @@ static struct snd_soc_dai_driver dai_drivers[] = {
                .channels_min = 2,
                .channels_max = 2,
                .rates = SNDRV_PCM_RATE_48000,
-               .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE,
+               .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE,
+               .subformats = SNDRV_PCM_SUBFMTBIT_MSBITS_24 |
+                             SNDRV_PCM_SUBFMTBIT_MSBITS_MAX,
        },
        .capture = {
                .stream_name = "Analog Capture",
                .channels_min = 2,
                .channels_max = 4,
                .rates = SNDRV_PCM_RATE_48000,
-               .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE,
+               .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE,
+               .subformats = SNDRV_PCM_SUBFMTBIT_MSBITS_24 |
+                             SNDRV_PCM_SUBFMTBIT_MSBITS_MAX,
        },
 },
 {
@@ -718,7 +723,9 @@ static struct snd_soc_dai_driver dai_drivers[] = {
                .channels_min = 2,
                .channels_max = 2,
                .rates = SNDRV_PCM_RATE_8000_192000,
-               .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE,
+               .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE,
+               .subformats = SNDRV_PCM_SUBFMTBIT_MSBITS_24 |
+                             SNDRV_PCM_SUBFMTBIT_MSBITS_MAX,
        },
 },
 {
@@ -730,7 +737,9 @@ static struct snd_soc_dai_driver dai_drivers[] = {
                .channels_min = 2,
                .channels_max = 2,
                .rates = SNDRV_PCM_RATE_8000_192000,
-               .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE,
+               .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE,
+               .subformats = SNDRV_PCM_SUBFMTBIT_MSBITS_24 |
+                             SNDRV_PCM_SUBFMTBIT_MSBITS_MAX,
        },
 },
 {
@@ -742,7 +751,9 @@ static struct snd_soc_dai_driver dai_drivers[] = {
                .channels_min = 2,
                .channels_max = 2,
                .rates = SNDRV_PCM_RATE_48000,
-               .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE,
+               .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE,
+               .subformats = SNDRV_PCM_SUBFMTBIT_MSBITS_24 |
+                             SNDRV_PCM_SUBFMTBIT_MSBITS_MAX,
        },
 },
 {