]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: atmel: Change manual bitfield manipulation to use FIELD_PREP()
authorGabriel Jacob Perin <gabrieljp@usp.br>
Tue, 21 Apr 2026 19:31:13 +0000 (16:31 -0300)
committerMark Brown <broonie@kernel.org>
Sun, 26 Apr 2026 21:53:32 +0000 (06:53 +0900)
Co-developed-by: Carlos Alberto Marques Rabelo <carlos.albmr@usp.br>
Signed-off-by: Carlos Alberto Marques Rabelo <carlos.albmr@usp.br>
Signed-off-by: Gabriel Jacob Perin <gabrieljp@usp.br>
Link: https://patch.msgid.link/20260421193113.1060213-1-gabrieljp@usp.br
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/atmel/atmel-classd.c

index 1f8c60d2de823fa3f12a58f1338020afdbdacccf..6693bdcbb8f582c9fd996ca29acadc19a76b1900 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/regmap.h>
+#include <linux/bitfield.h>
 #include <linux/string_choices.h>
 #include <sound/core.h>
 #include <sound/dmaengine_pcm.h>
@@ -236,34 +237,34 @@ static int atmel_classd_component_probe(struct snd_soc_component *component)
        u32 mask, val;
 
        mask = CLASSD_MR_PWMTYP_MASK;
-       val = pdata->pwm_type << CLASSD_MR_PWMTYP_SHIFT;
+       val = FIELD_PREP(CLASSD_MR_PWMTYP_MASK, pdata->pwm_type);
 
        mask |= CLASSD_MR_NON_OVERLAP_MASK;
        if (pdata->non_overlap_enable) {
-               val |= (CLASSD_MR_NON_OVERLAP_EN
-                       << CLASSD_MR_NON_OVERLAP_SHIFT);
+               val |= FIELD_PREP(CLASSD_MR_NON_OVERLAP_MASK,
+                               CLASSD_MR_NON_OVERLAP_EN);
 
                mask |= CLASSD_MR_NOVR_VAL_MASK;
                switch (pdata->non_overlap_time) {
                case 5:
-                       val |= (CLASSD_MR_NOVR_VAL_5NS
-                               << CLASSD_MR_NOVR_VAL_SHIFT);
+                       val |= FIELD_PREP(CLASSD_MR_NOVR_VAL_MASK,
+                                       CLASSD_MR_NOVR_VAL_5NS);
                        break;
                case 10:
-                       val |= (CLASSD_MR_NOVR_VAL_10NS
-                               << CLASSD_MR_NOVR_VAL_SHIFT);
+                       val |= FIELD_PREP(CLASSD_MR_NOVR_VAL_MASK,
+                                       CLASSD_MR_NOVR_VAL_10NS);
                        break;
                case 15:
-                       val |= (CLASSD_MR_NOVR_VAL_15NS
-                               << CLASSD_MR_NOVR_VAL_SHIFT);
+                       val |= FIELD_PREP(CLASSD_MR_NOVR_VAL_MASK,
+                                       CLASSD_MR_NOVR_VAL_15NS);
                        break;
                case 20:
-                       val |= (CLASSD_MR_NOVR_VAL_20NS
-                               << CLASSD_MR_NOVR_VAL_SHIFT);
+                       val |= FIELD_PREP(CLASSD_MR_NOVR_VAL_MASK,
+                                       CLASSD_MR_NOVR_VAL_20NS);
                        break;
                default:
-                       val |= (CLASSD_MR_NOVR_VAL_10NS
-                               << CLASSD_MR_NOVR_VAL_SHIFT);
+                       val |= FIELD_PREP(CLASSD_MR_NOVR_VAL_MASK,
+                                       CLASSD_MR_NOVR_VAL_10NS);
                        dev_warn(component->dev,
                                "non-overlapping value %d is invalid, the default value 10 is specified\n",
                                pdata->non_overlap_time);
@@ -370,8 +371,10 @@ atmel_classd_cpu_dai_hw_params(struct snd_pcm_substream *substream,
                return ret;
 
        mask = CLASSD_INTPMR_DSP_CLK_FREQ_MASK | CLASSD_INTPMR_FRAME_MASK;
-       val = (sample_rates[best].dsp_clk << CLASSD_INTPMR_DSP_CLK_FREQ_SHIFT)
-       | (sample_rates[best].sample_rate << CLASSD_INTPMR_FRAME_SHIFT);
+       val = FIELD_PREP(CLASSD_INTPMR_DSP_CLK_FREQ_MASK,
+                       sample_rates[best].dsp_clk) |
+               FIELD_PREP(CLASSD_INTPMR_FRAME_MASK,
+                       sample_rates[best].sample_rate);
 
        snd_soc_component_update_bits(component, CLASSD_INTPMR, mask, val);
 
@@ -395,8 +398,8 @@ static int atmel_classd_cpu_dai_prepare(struct snd_pcm_substream *substream,
 
        snd_soc_component_update_bits(component, CLASSD_MR,
                                CLASSD_MR_LEN_MASK | CLASSD_MR_REN_MASK,
-                               (CLASSD_MR_LEN_DIS << CLASSD_MR_LEN_SHIFT)
-                               |(CLASSD_MR_REN_DIS << CLASSD_MR_REN_SHIFT));
+                               FIELD_PREP(CLASSD_MR_LEN_MASK, CLASSD_MR_LEN_DIS) |
+                               FIELD_PREP(CLASSD_MR_REN_MASK, CLASSD_MR_REN_DIS));
 
        return 0;
 }
@@ -418,8 +421,8 @@ static int atmel_classd_cpu_dai_trigger(struct snd_pcm_substream *substream,
        case SNDRV_PCM_TRIGGER_STOP:
        case SNDRV_PCM_TRIGGER_SUSPEND:
        case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-               val = (CLASSD_MR_LEN_DIS << CLASSD_MR_LEN_SHIFT)
-                       | (CLASSD_MR_REN_DIS << CLASSD_MR_REN_SHIFT);
+               val = FIELD_PREP(CLASSD_MR_LEN_MASK, CLASSD_MR_LEN_DIS) |
+                       FIELD_PREP(CLASSD_MR_REN_MASK, CLASSD_MR_REN_DIS);
                break;
        default:
                return -EINVAL;