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-fifo.c
index 65541fd..bebee0c 100644 (file)
@@ -3,6 +3,7 @@
 // Copyright (c) 2018 BayLibre, SAS.
 // Author: Jerome Brunet <jbrunet@baylibre.com>
 
+#include <linux/bitfield.h>
 #include <linux/clk.h>
 #include <linux/of_irq.h>
 #include <linux/of_platform.h>
@@ -145,8 +146,8 @@ int axg_fifo_pcm_hw_params(struct snd_soc_component *component,
        /* Enable irq if necessary  */
        irq_en = runtime->no_period_wakeup ? 0 : FIFO_INT_COUNT_REPEAT;
        regmap_update_bits(fifo->map, FIFO_CTRL0,
-                          CTRL0_INT_EN(FIFO_INT_COUNT_REPEAT),
-                          CTRL0_INT_EN(irq_en));
+                          CTRL0_INT_EN,
+                          FIELD_PREP(CTRL0_INT_EN, irq_en));
 
        return 0;
 }
@@ -176,9 +177,9 @@ int axg_fifo_pcm_hw_free(struct snd_soc_component *component,
 {
        struct axg_fifo *fifo = axg_fifo_data(ss);
 
-       /* Disable the block count irq */
+       /* Disable irqs */
        regmap_update_bits(fifo->map, FIFO_CTRL0,
-                          CTRL0_INT_EN(FIFO_INT_COUNT_REPEAT), 0);
+                          CTRL0_INT_EN, 0);
 
        return 0;
 }
@@ -187,13 +188,13 @@ EXPORT_SYMBOL_GPL(axg_fifo_pcm_hw_free);
 static void axg_fifo_ack_irq(struct axg_fifo *fifo, u8 mask)
 {
        regmap_update_bits(fifo->map, FIFO_CTRL1,
-                          CTRL1_INT_CLR(FIFO_INT_MASK),
-                          CTRL1_INT_CLR(mask));
+                          CTRL1_INT_CLR,
+                          FIELD_PREP(CTRL1_INT_CLR, mask));
 
        /* Clear must also be cleared */
        regmap_update_bits(fifo->map, FIFO_CTRL1,
-                          CTRL1_INT_CLR(FIFO_INT_MASK),
-                          0);
+                          CTRL1_INT_CLR,
+                          FIELD_PREP(CTRL1_INT_CLR, 0));
 }
 
 static irqreturn_t axg_fifo_pcm_irq_block(int irq, void *dev_id)
@@ -204,7 +205,7 @@ static irqreturn_t axg_fifo_pcm_irq_block(int irq, void *dev_id)
 
        regmap_read(fifo->map, FIFO_STATUS1, &status);
 
-       status = STATUS1_INT_STS(status) & FIFO_INT_MASK;
+       status = FIELD_GET(STATUS1_INT_STS, status);
        if (status & FIFO_INT_COUNT_REPEAT)
                snd_pcm_period_elapsed(ss);
        else
@@ -254,15 +255,15 @@ int axg_fifo_pcm_open(struct snd_soc_component *component,
 
        /* Setup status2 so it reports the memory pointer */
        regmap_update_bits(fifo->map, FIFO_CTRL1,
-                          CTRL1_STATUS2_SEL_MASK,
-                          CTRL1_STATUS2_SEL(STATUS2_SEL_DDR_READ));
+                          CTRL1_STATUS2_SEL,
+                          FIELD_PREP(CTRL1_STATUS2_SEL, STATUS2_SEL_DDR_READ));
 
        /* Make sure the dma is initially disabled */
        __dma_enable(fifo, false);
 
        /* Disable irqs until params are ready */
        regmap_update_bits(fifo->map, FIFO_CTRL0,
-                          CTRL0_INT_EN(FIFO_INT_MASK), 0);
+                          CTRL0_INT_EN, 0);
 
        /* Clear any pending interrupt */
        axg_fifo_ack_irq(fifo, FIFO_INT_MASK);