diff options
Diffstat (limited to 'sound/soc/meson/axg-fifo.c')
| -rw-r--r-- | sound/soc/meson/axg-fifo.c | 25 | 
1 files changed, 13 insertions, 12 deletions
diff --git a/sound/soc/meson/axg-fifo.c b/sound/soc/meson/axg-fifo.c index 65541fdb0038..bebee0ca8e38 100644 --- a/sound/soc/meson/axg-fifo.c +++ b/sound/soc/meson/axg-fifo.c @@ -3,6 +3,7 @@  // Copyright (c) 2018 BayLibre, SAS.  // Author: Jerome Brunet <[email protected]> +#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);  |