#define SUN8I_SYS_SR_CTRL                              0x018
 #define SUN8I_SYS_SR_CTRL_AIF1_FS                      12
 #define SUN8I_SYS_SR_CTRL_AIF2_FS                      8
-#define SUN8I_AIF1CLK_CTRL                             0x040
-#define SUN8I_AIF1CLK_CTRL_AIF1_MSTR_MOD               15
-#define SUN8I_AIF1CLK_CTRL_AIF1_CLK_INV                        13
-#define SUN8I_AIF1CLK_CTRL_AIF1_BCLK_DIV               9
-#define SUN8I_AIF1CLK_CTRL_AIF1_LRCK_DIV               6
-#define SUN8I_AIF1CLK_CTRL_AIF1_WORD_SIZ               4
-#define SUN8I_AIF1CLK_CTRL_AIF1_DATA_FMT               2
+#define SUN8I_AIF_CLK_CTRL(n)                          (0x040 * (1 + (n)))
+#define SUN8I_AIF_CLK_CTRL_MSTR_MOD                    15
+#define SUN8I_AIF_CLK_CTRL_CLK_INV                     13
+#define SUN8I_AIF_CLK_CTRL_BCLK_DIV                    9
+#define SUN8I_AIF_CLK_CTRL_LRCK_DIV                    6
+#define SUN8I_AIF_CLK_CTRL_WORD_SIZ                    4
+#define SUN8I_AIF_CLK_CTRL_DATA_FMT                    2
 #define SUN8I_AIF1_ADCDAT_CTRL                         0x044
 #define SUN8I_AIF1_ADCDAT_CTRL_AIF1_AD0L_ENA           15
 #define SUN8I_AIF1_ADCDAT_CTRL_AIF1_AD0R_ENA           14
 #define SUN8I_SYSCLK_CTL_AIF2CLK_SRC_MASK      GENMASK(5, 4)
 #define SUN8I_SYS_SR_CTRL_AIF1_FS_MASK         GENMASK(15, 12)
 #define SUN8I_SYS_SR_CTRL_AIF2_FS_MASK         GENMASK(11, 8)
-#define SUN8I_AIF1CLK_CTRL_AIF1_CLK_INV_MASK   GENMASK(14, 13)
-#define SUN8I_AIF1CLK_CTRL_AIF1_BCLK_DIV_MASK  GENMASK(12, 9)
-#define SUN8I_AIF1CLK_CTRL_AIF1_LRCK_DIV_MASK  GENMASK(8, 6)
-#define SUN8I_AIF1CLK_CTRL_AIF1_WORD_SIZ_MASK  GENMASK(5, 4)
-#define SUN8I_AIF1CLK_CTRL_AIF1_DATA_FMT_MASK  GENMASK(3, 2)
+#define SUN8I_AIF_CLK_CTRL_CLK_INV_MASK                GENMASK(14, 13)
+#define SUN8I_AIF_CLK_CTRL_BCLK_DIV_MASK       GENMASK(12, 9)
+#define SUN8I_AIF_CLK_CTRL_LRCK_DIV_MASK       GENMASK(8, 6)
+#define SUN8I_AIF_CLK_CTRL_WORD_SIZ_MASK       GENMASK(5, 4)
+#define SUN8I_AIF_CLK_CTRL_DATA_FMT_MASK       GENMASK(3, 2)
 
 #define SUN8I_CODEC_PASSTHROUGH_SAMPLE_RATE 48000
 
        default:
                return -EINVAL;
        }
-       regmap_update_bits(scodec->regmap, SUN8I_AIF1CLK_CTRL,
-                          BIT(SUN8I_AIF1CLK_CTRL_AIF1_MSTR_MOD),
-                          value << SUN8I_AIF1CLK_CTRL_AIF1_MSTR_MOD);
+
+       regmap_update_bits(scodec->regmap, SUN8I_AIF_CLK_CTRL(dai->id),
+                          BIT(SUN8I_AIF_CLK_CTRL_MSTR_MOD),
+                          value << SUN8I_AIF_CLK_CTRL_MSTR_MOD);
 
        /* DAI format */
        switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
        default:
                return -EINVAL;
        }
-       regmap_update_bits(scodec->regmap, SUN8I_AIF1CLK_CTRL,
-                          SUN8I_AIF1CLK_CTRL_AIF1_DATA_FMT_MASK,
-                          format << SUN8I_AIF1CLK_CTRL_AIF1_DATA_FMT);
+
+       regmap_update_bits(scodec->regmap, SUN8I_AIF_CLK_CTRL(dai->id),
+                          SUN8I_AIF_CLK_CTRL_DATA_FMT_MASK,
+                          format << SUN8I_AIF_CLK_CTRL_DATA_FMT);
 
        /* clock inversion */
        switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
                invert ^= scodec->quirks->lrck_inversion;
        }
 
-       regmap_update_bits(scodec->regmap, SUN8I_AIF1CLK_CTRL,
-                          SUN8I_AIF1CLK_CTRL_AIF1_CLK_INV_MASK,
-                          invert << SUN8I_AIF1CLK_CTRL_AIF1_CLK_INV);
+       regmap_update_bits(scodec->regmap, SUN8I_AIF_CLK_CTRL(dai->id),
+                          SUN8I_AIF_CLK_CTRL_CLK_INV_MASK,
+                          invert << SUN8I_AIF_CLK_CTRL_CLK_INV);
 
        return 0;
 }
                return -EINVAL;
        }
 
-       regmap_update_bits(scodec->regmap, SUN8I_AIF1CLK_CTRL,
-                          SUN8I_AIF1CLK_CTRL_AIF1_WORD_SIZ_MASK,
-                          word_size << SUN8I_AIF1CLK_CTRL_AIF1_WORD_SIZ);
+       regmap_update_bits(scodec->regmap, SUN8I_AIF_CLK_CTRL(dai->id),
+                          SUN8I_AIF_CLK_CTRL_WORD_SIZ_MASK,
+                          word_size << SUN8I_AIF_CLK_CTRL_WORD_SIZ);
 
        /* LRCK divider (BCLK/LRCK ratio) */
        lrck_div_order = sun8i_codec_get_lrck_div_order(slots, slot_width);
        if (lrck_div_order < 0)
                return lrck_div_order;
 
-       regmap_update_bits(scodec->regmap, SUN8I_AIF1CLK_CTRL,
-                          SUN8I_AIF1CLK_CTRL_AIF1_LRCK_DIV_MASK,
-                          (lrck_div_order - 4) << SUN8I_AIF1CLK_CTRL_AIF1_LRCK_DIV);
+       regmap_update_bits(scodec->regmap, SUN8I_AIF_CLK_CTRL(dai->id),
+                          SUN8I_AIF_CLK_CTRL_LRCK_DIV_MASK,
+                          (lrck_div_order - 4) << SUN8I_AIF_CLK_CTRL_LRCK_DIV);
 
        /* BCLK divider (SYSCLK/BCLK ratio) */
        bclk_div = sun8i_codec_get_bclk_div(sysclk_rate, lrck_div_order, sample_rate);
        if (bclk_div < 0)
                return bclk_div;
 
-       regmap_update_bits(scodec->regmap, SUN8I_AIF1CLK_CTRL,
-                          SUN8I_AIF1CLK_CTRL_AIF1_BCLK_DIV_MASK,
-                          bclk_div << SUN8I_AIF1CLK_CTRL_AIF1_BCLK_DIV);
+       regmap_update_bits(scodec->regmap, SUN8I_AIF_CLK_CTRL(dai->id),
+                          SUN8I_AIF_CLK_CTRL_BCLK_DIV_MASK,
+                          bclk_div << SUN8I_AIF_CLK_CTRL_BCLK_DIV);
 
        /*
         * SYSCLK rate