uint32_t controller_id)
 {
        unsigned int backlight_8_bit = 0;
-       uint32_t rampingBoundary = 0xFFFF;
        uint32_t s2;
 
        if (backlight_pwm_u16_16 & 0x10000)
                // Take MSB of fractional part since backlight is not max
                backlight_8_bit = (backlight_pwm_u16_16 >> 8) & 0xFF;
 
-       /* set ramping boundary */
-       REG_WRITE(MASTER_COMM_DATA_REG1, rampingBoundary);
-
-       /* setDMCUParam_Pipe */
-       REG_UPDATE_2(MASTER_COMM_CMD_REG,
-                       MASTER_COMM_CMD_REG_BYTE0, MCP_ABM_PIPE_SET,
-                       MASTER_COMM_CMD_REG_BYTE1, controller_id);
-
-       /* notifyDMCUMsg */
-       REG_UPDATE(MASTER_COMM_CNTL_REG, MASTER_COMM_INTERRUPT, 1);
-
        /* waitDMCUReadyForCmd */
        REG_WAIT(MASTER_COMM_CNTL_REG, MASTER_COMM_INTERRUPT,
                        0, 1, 80000);
        return true;
 }
 
-static bool dce_abm_immediate_disable(struct abm *abm)
+static bool dce_abm_set_pipe(struct abm *abm, uint32_t controller_id)
 {
        struct dce_abm *abm_dce = TO_DCE_ABM(abm);
+       uint32_t rampingBoundary = 0xFFFF;
 
        REG_WAIT(MASTER_COMM_CNTL_REG, MASTER_COMM_INTERRUPT, 0,
                        1, 80000);
 
-       /* setDMCUParam_ABMLevel */
+       /* set ramping boundary */
+       REG_WRITE(MASTER_COMM_DATA_REG1, rampingBoundary);
+
+       /* setDMCUParam_Pipe */
        REG_UPDATE_2(MASTER_COMM_CMD_REG,
                        MASTER_COMM_CMD_REG_BYTE0, MCP_ABM_PIPE_SET,
-                       MASTER_COMM_CMD_REG_BYTE1, MCP_DISABLE_ABM_IMMEDIATELY);
+                       MASTER_COMM_CMD_REG_BYTE1, controller_id);
 
        /* notifyDMCUMsg */
        REG_UPDATE(MASTER_COMM_CNTL_REG, MASTER_COMM_INTERRUPT, 1);
 
+       return true;
+}
+
+static bool dce_abm_immediate_disable(struct abm *abm)
+{
+       struct dce_abm *abm_dce = TO_DCE_ABM(abm);
+
+       dce_abm_set_pipe(abm, MCP_DISABLE_ABM_IMMEDIATELY);
+
        abm->stored_backlight_registers.BL_PWM_CNTL =
                REG_READ(BL_PWM_CNTL);
        abm->stored_backlight_registers.BL_PWM_CNTL2 =
        .abm_init = dce_abm_init,
        .set_abm_level = dce_abm_set_level,
        .init_backlight = dce_abm_init_backlight,
+       .set_pipe = dce_abm_set_pipe,
        .set_backlight_level_pwm = dce_abm_set_backlight_level_pwm,
        .get_current_backlight = dce_abm_get_current_backlight,
        .get_target_backlight = dce_abm_get_target_backlight,