33// Copyright (c) 2018 BayLibre, SAS.
44// Author: Jerome Brunet <jbrunet@baylibre.com>
55
6+ #include <linux/bitfield.h>
67#include <linux/clk.h>
78#include <linux/of_irq.h>
89#include <linux/of_platform.h>
@@ -145,8 +146,8 @@ int axg_fifo_pcm_hw_params(struct snd_soc_component *component,
145146 /* Enable irq if necessary */
146147 irq_en = runtime -> no_period_wakeup ? 0 : FIFO_INT_COUNT_REPEAT ;
147148 regmap_update_bits (fifo -> map , FIFO_CTRL0 ,
148- CTRL0_INT_EN ( FIFO_INT_COUNT_REPEAT ) ,
149- CTRL0_INT_EN ( irq_en ));
149+ CTRL0_INT_EN ,
150+ FIELD_PREP ( CTRL0_INT_EN , irq_en ));
150151
151152 return 0 ;
152153}
@@ -176,9 +177,9 @@ int axg_fifo_pcm_hw_free(struct snd_soc_component *component,
176177{
177178 struct axg_fifo * fifo = axg_fifo_data (ss );
178179
179- /* Disable the block count irq */
180+ /* Disable irqs */
180181 regmap_update_bits (fifo -> map , FIFO_CTRL0 ,
181- CTRL0_INT_EN ( FIFO_INT_COUNT_REPEAT ) , 0 );
182+ CTRL0_INT_EN , 0 );
182183
183184 return 0 ;
184185}
@@ -187,13 +188,13 @@ EXPORT_SYMBOL_GPL(axg_fifo_pcm_hw_free);
187188static void axg_fifo_ack_irq (struct axg_fifo * fifo , u8 mask )
188189{
189190 regmap_update_bits (fifo -> map , FIFO_CTRL1 ,
190- CTRL1_INT_CLR ( FIFO_INT_MASK ) ,
191- CTRL1_INT_CLR ( mask ));
191+ CTRL1_INT_CLR ,
192+ FIELD_PREP ( CTRL1_INT_CLR , mask ));
192193
193194 /* Clear must also be cleared */
194195 regmap_update_bits (fifo -> map , FIFO_CTRL1 ,
195- CTRL1_INT_CLR ( FIFO_INT_MASK ) ,
196- 0 );
196+ CTRL1_INT_CLR ,
197+ FIELD_PREP ( CTRL1_INT_CLR , 0 ) );
197198}
198199
199200static 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)
204205
205206 regmap_read (fifo -> map , FIFO_STATUS1 , & status );
206207
207- status = STATUS1_INT_STS ( status ) & FIFO_INT_MASK ;
208+ status = FIELD_GET ( STATUS1_INT_STS , status );
208209 if (status & FIFO_INT_COUNT_REPEAT )
209210 snd_pcm_period_elapsed (ss );
210211 else
@@ -254,15 +255,15 @@ int axg_fifo_pcm_open(struct snd_soc_component *component,
254255
255256 /* Setup status2 so it reports the memory pointer */
256257 regmap_update_bits (fifo -> map , FIFO_CTRL1 ,
257- CTRL1_STATUS2_SEL_MASK ,
258- CTRL1_STATUS2_SEL ( STATUS2_SEL_DDR_READ ));
258+ CTRL1_STATUS2_SEL ,
259+ FIELD_PREP ( CTRL1_STATUS2_SEL , STATUS2_SEL_DDR_READ ));
259260
260261 /* Make sure the dma is initially disabled */
261262 __dma_enable (fifo , false);
262263
263264 /* Disable irqs until params are ready */
264265 regmap_update_bits (fifo -> map , FIFO_CTRL0 ,
265- CTRL0_INT_EN ( FIFO_INT_MASK ) , 0 );
266+ CTRL0_INT_EN , 0 );
266267
267268 /* Clear any pending interrupt */
268269 axg_fifo_ack_irq (fifo , FIFO_INT_MASK );
0 commit comments