bool idle_pc_supported;
        struct mutex rc_lock;
        enum dpu_enc_rc_states rc_state;
-       struct kthread_delayed_work delayed_off_work;
+       struct delayed_work delayed_off_work;
        struct kthread_work vsync_event_work;
        struct msm_display_topology topology;
        bool mode_set_complete;
 {
        struct dpu_encoder_virt *dpu_enc;
        struct msm_drm_private *priv;
-       struct msm_drm_thread *disp_thread;
        bool is_vid_mode = false;
 
        if (!drm_enc || !drm_enc->dev || !drm_enc->dev->dev_private ||
        is_vid_mode = dpu_enc->disp_info.capabilities &
                                                MSM_DISPLAY_CAP_VID_MODE;
 
-       if (drm_enc->crtc->index >= ARRAY_SIZE(priv->disp_thread)) {
-               DPU_ERROR("invalid crtc index\n");
-               return -EINVAL;
-       }
-       disp_thread = &priv->disp_thread[drm_enc->crtc->index];
-
        /*
         * when idle_pc is not supported, process only KICKOFF, STOP and MODESET
         * events and return early for other events (ie wb display).
        switch (sw_event) {
        case DPU_ENC_RC_EVENT_KICKOFF:
                /* cancel delayed off work, if any */
-               if (kthread_cancel_delayed_work_sync(
-                               &dpu_enc->delayed_off_work))
+               if (cancel_delayed_work_sync(&dpu_enc->delayed_off_work))
                        DPU_DEBUG_ENC(dpu_enc, "sw_event:%d, work cancelled\n",
                                        sw_event);
 
                        return 0;
                }
 
-               kthread_queue_delayed_work(
-                       &disp_thread->worker,
-                       &dpu_enc->delayed_off_work,
-                       msecs_to_jiffies(dpu_enc->idle_timeout));
+               queue_delayed_work(priv->wq, &dpu_enc->delayed_off_work,
+                                  msecs_to_jiffies(dpu_enc->idle_timeout));
 
                trace_dpu_enc_rc(DRMID(drm_enc), sw_event,
                                 dpu_enc->idle_pc_supported, dpu_enc->rc_state,
 
        case DPU_ENC_RC_EVENT_PRE_STOP:
                /* cancel delayed off work, if any */
-               if (kthread_cancel_delayed_work_sync(
-                               &dpu_enc->delayed_off_work))
+               if (cancel_delayed_work_sync(&dpu_enc->delayed_off_work))
                        DPU_DEBUG_ENC(dpu_enc, "sw_event:%d, work cancelled\n",
                                        sw_event);
 
        }
 }
 
-static void dpu_encoder_off_work(struct kthread_work *work)
+static void dpu_encoder_off_work(struct work_struct *work)
 {
        struct dpu_encoder_virt *dpu_enc = container_of(work,
                        struct dpu_encoder_virt, delayed_off_work.work);
 
 
        mutex_init(&dpu_enc->rc_lock);
-       kthread_init_delayed_work(&dpu_enc->delayed_off_work,
+       INIT_DELAYED_WORK(&dpu_enc->delayed_off_work,
                        dpu_encoder_off_work);
        dpu_enc->idle_timeout = IDLE_TIMEOUT;