Merge tag 'asoc-v6.9' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie...
[linux-2.6-microblaze.git] / sound / soc / meson / axg-toddr.c
index 1a0be17..e03a6e2 100644 (file)
@@ -5,6 +5,7 @@
 
 /* This driver implements the frontend capture DAI of AXG based SoCs */
 
+#include <linux/bitfield.h>
 #include <linux/clk.h>
 #include <linux/regmap.h>
 #include <linux/module.h>
 #define CTRL0_TODDR_EXT_SIGNED         BIT(29)
 #define CTRL0_TODDR_PP_MODE            BIT(28)
 #define CTRL0_TODDR_SYNC_CH            BIT(27)
-#define CTRL0_TODDR_TYPE_MASK          GENMASK(15, 13)
-#define CTRL0_TODDR_TYPE(x)            ((x) << 13)
-#define CTRL0_TODDR_MSB_POS_MASK       GENMASK(12, 8)
-#define CTRL0_TODDR_MSB_POS(x)         ((x) << 8)
-#define CTRL0_TODDR_LSB_POS_MASK       GENMASK(7, 3)
-#define CTRL0_TODDR_LSB_POS(x)         ((x) << 3)
+#define CTRL0_TODDR_TYPE               GENMASK(15, 13)
+#define CTRL0_TODDR_MSB_POS            GENMASK(12, 8)
+#define CTRL0_TODDR_LSB_POS            GENMASK(7, 3)
 #define CTRL1_TODDR_FORCE_FINISH       BIT(25)
 #define CTRL1_SEL_SHIFT                        28
 
@@ -76,12 +74,12 @@ static int axg_toddr_dai_hw_params(struct snd_pcm_substream *substream,
        width = params_width(params);
 
        regmap_update_bits(fifo->map, FIFO_CTRL0,
-                          CTRL0_TODDR_TYPE_MASK |
-                          CTRL0_TODDR_MSB_POS_MASK |
-                          CTRL0_TODDR_LSB_POS_MASK,
-                          CTRL0_TODDR_TYPE(type) |
-                          CTRL0_TODDR_MSB_POS(TODDR_MSB_POS) |
-                          CTRL0_TODDR_LSB_POS(TODDR_MSB_POS - (width - 1)));
+                          CTRL0_TODDR_TYPE |
+                          CTRL0_TODDR_MSB_POS |
+                          CTRL0_TODDR_LSB_POS,
+                          FIELD_PREP(CTRL0_TODDR_TYPE, type) |
+                          FIELD_PREP(CTRL0_TODDR_MSB_POS, TODDR_MSB_POS) |
+                          FIELD_PREP(CTRL0_TODDR_LSB_POS, TODDR_MSB_POS - (width - 1)));
 
        return 0;
 }
@@ -131,7 +129,9 @@ static struct snd_soc_dai_driver axg_toddr_dai_drv = {
                .stream_name    = "Capture",
                .channels_min   = 1,
                .channels_max   = AXG_FIFO_CH_MAX,
-               .rates          = AXG_FIFO_RATES,
+               .rates          = SNDRV_PCM_RATE_CONTINUOUS,
+               .rate_min       = 5515,
+               .rate_max       = 384000,
                .formats        = AXG_FIFO_FORMATS,
        },
        .ops            = &axg_toddr_ops,
@@ -226,7 +226,9 @@ static struct snd_soc_dai_driver g12a_toddr_dai_drv = {
                .stream_name    = "Capture",
                .channels_min   = 1,
                .channels_max   = AXG_FIFO_CH_MAX,
-               .rates          = AXG_FIFO_RATES,
+               .rates          = SNDRV_PCM_RATE_CONTINUOUS,
+               .rate_min       = 5515,
+               .rate_max       = 384000,
                .formats        = AXG_FIFO_FORMATS,
        },
        .ops            = &g12a_toddr_ops,