{
        struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
        enum pipe pipe = crtc->pipe;
-       u32 val;
+       u32 val = 0;
+
+       if (DISPLAY_VER(dev_priv) >= 12) {
+               val |= MBUS_DBOX_B2B_TRANSACTIONS_MAX(16);
+               val |= MBUS_DBOX_B2B_TRANSACTIONS_DELAY(1);
+               val |= MBUS_DBOX_REGULATE_B2B_TRANSACTIONS_EN;
+       }
 
        /* Wa_22010947358:adl-p */
        if (IS_ALDERLAKE_P(dev_priv))
-               val = joined_mbus ? MBUS_DBOX_A_CREDIT(6) : MBUS_DBOX_A_CREDIT(4);
+               val |= joined_mbus ? MBUS_DBOX_A_CREDIT(6) :
+                                    MBUS_DBOX_A_CREDIT(4);
        else
-               val = MBUS_DBOX_A_CREDIT(2);
+               val |= MBUS_DBOX_A_CREDIT(2);
 
        if (DISPLAY_VER(dev_priv) >= 12) {
                val |= MBUS_DBOX_BW_CREDIT(2);
 
 #define MBUS_ABOX_BT_CREDIT_POOL1_MASK (0x1F << 0)
 #define MBUS_ABOX_BT_CREDIT_POOL1(x)   ((x) << 0)
 
-#define _PIPEA_MBUS_DBOX_CTL           0x7003C
-#define _PIPEB_MBUS_DBOX_CTL           0x7103C
-#define PIPE_MBUS_DBOX_CTL(pipe)       _MMIO_PIPE(pipe, _PIPEA_MBUS_DBOX_CTL, \
-                                                  _PIPEB_MBUS_DBOX_CTL)
-#define MBUS_DBOX_BW_CREDIT_MASK       (3 << 14)
-#define MBUS_DBOX_BW_CREDIT(x)         ((x) << 14)
-#define MBUS_DBOX_B_CREDIT_MASK                (0x1F << 8)
-#define MBUS_DBOX_B_CREDIT(x)          ((x) << 8)
-#define MBUS_DBOX_A_CREDIT_MASK                (0xF << 0)
-#define MBUS_DBOX_A_CREDIT(x)          ((x) << 0)
+#define _PIPEA_MBUS_DBOX_CTL                   0x7003C
+#define _PIPEB_MBUS_DBOX_CTL                   0x7103C
+#define PIPE_MBUS_DBOX_CTL(pipe)               _MMIO_PIPE(pipe, _PIPEA_MBUS_DBOX_CTL, \
+                                                          _PIPEB_MBUS_DBOX_CTL)
+#define MBUS_DBOX_B2B_TRANSACTIONS_MAX_MASK    REG_GENMASK(24, 20) /* tgl+ */
+#define MBUS_DBOX_B2B_TRANSACTIONS_MAX(x)      REG_FIELD_PREP(MBUS_DBOX_B2B_TRANSACTIONS_MAX_MASK, x)
+#define MBUS_DBOX_B2B_TRANSACTIONS_DELAY_MASK  REG_GENMASK(19, 17) /* tgl+ */
+#define MBUS_DBOX_B2B_TRANSACTIONS_DELAY(x)    REG_FIELD_PREP(MBUS_DBOX_B2B_TRANSACTIONS_DELAY_MASK, x)
+#define MBUS_DBOX_REGULATE_B2B_TRANSACTIONS_EN REG_BIT(16) /* tgl+ */
+#define MBUS_DBOX_BW_CREDIT_MASK               REG_GENMASK(15, 14)
+#define MBUS_DBOX_BW_CREDIT(x)                 REG_FIELD_PREP(MBUS_DBOX_BW_CREDIT_MASK, x)
+#define MBUS_DBOX_B_CREDIT_MASK                        REG_GENMASK(12, 8)
+#define MBUS_DBOX_B_CREDIT(x)                  REG_FIELD_PREP(MBUS_DBOX_B_CREDIT_MASK, x)
+#define MBUS_DBOX_A_CREDIT_MASK                        REG_GENMASK(3, 0)
+#define MBUS_DBOX_A_CREDIT(x)                  REG_FIELD_PREP(MBUS_DBOX_A_CREDIT_MASK, x)
 
 #define MBUS_UBOX_CTL                  _MMIO(0x4503C)
 #define MBUS_BBOX_CTL_S1               _MMIO(0x45040)