]> www.infradead.org Git - users/willy/xarray.git/commitdiff
ASoC: meson: axg-iface: set continuous rates
authorJerome Brunet <jbrunet@baylibre.com>
Fri, 20 Sep 2024 17:22:05 +0000 (19:22 +0200)
committerMark Brown <broonie@kernel.org>
Sun, 29 Sep 2024 23:10:55 +0000 (01:10 +0200)
The axg TDM HW does not depend on a selected set of rates.
The hardware itself, just takes an input clock and work with it, regardless
of its rate. In this way, the rates TDM can take are continuous.

What might force the use of specific rate are the PLL available as clock
and/or the codecs facing the TDM HW. Either way, this constraint does not
belong in the TDM interface driver.

Allow any rate as far as TDM is concerned by setting
SNDRV_PCM_RATE_CONTINUOUS with an interval it has been tested with.

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Link: https://patch.msgid.link/20240920-asoc-axg-iface-continuous-v1-1-6075d7db0e61@baylibre.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/meson/axg-tdm-interface.c
sound/soc/meson/axg-tdm.h

index 62057c71f742e68e4555428281157ebb265b1cc2..09103eef2a9797cf6311acb300129173db0c5a95 100644 (file)
@@ -442,14 +442,18 @@ static const struct snd_soc_dai_driver axg_tdm_iface_dai_drv[] = {
                        .stream_name    = "Playback",
                        .channels_min   = 1,
                        .channels_max   = AXG_TDM_CHANNEL_MAX,
-                       .rates          = AXG_TDM_RATES,
+                       .rates          = SNDRV_PCM_RATE_CONTINUOUS,
+                       .rate_min       = 5512,
+                       .rate_max       = 768000,
                        .formats        = AXG_TDM_FORMATS,
                },
                .capture = {
                        .stream_name    = "Capture",
                        .channels_min   = 1,
                        .channels_max   = AXG_TDM_CHANNEL_MAX,
-                       .rates          = AXG_TDM_RATES,
+                       .rates          = SNDRV_PCM_RATE_CONTINUOUS,
+                       .rate_min       = 5512,
+                       .rate_max       = 768000,
                        .formats        = AXG_TDM_FORMATS,
                },
                .id = TDM_IFACE_PAD,
@@ -461,7 +465,9 @@ static const struct snd_soc_dai_driver axg_tdm_iface_dai_drv[] = {
                        .stream_name    = "Loopback",
                        .channels_min   = 1,
                        .channels_max   = AXG_TDM_CHANNEL_MAX,
-                       .rates          = AXG_TDM_RATES,
+                       .rates          = SNDRV_PCM_RATE_CONTINUOUS,
+                       .rate_min       = 5512,
+                       .rate_max       = 768000,
                        .formats        = AXG_TDM_FORMATS,
                },
                .id = TDM_IFACE_LOOPBACK,
index 1a17f546ce6e80ac6b1354f8e85e29f4ed6b61fd..acfcd48f8a00280d861cd6f5ec8f638d1a0b43e2 100644 (file)
@@ -15,8 +15,6 @@
 
 #define AXG_TDM_NUM_LANES      4
 #define AXG_TDM_CHANNEL_MAX    128
-#define AXG_TDM_RATES          (SNDRV_PCM_RATE_5512 |          \
-                                SNDRV_PCM_RATE_8000_768000)
 #define AXG_TDM_FORMATS                (SNDRV_PCM_FMTBIT_S8 |          \
                                 SNDRV_PCM_FMTBIT_S16_LE |      \
                                 SNDRV_PCM_FMTBIT_S20_LE |      \