Loading drivers/gpu/drm/msm/sde/sde_encoder.c +10 −2 Original line number Diff line number Diff line Loading @@ -273,6 +273,7 @@ struct sde_encoder_virt { struct kthread_work input_event_work; struct kthread_work esd_trigger_work; struct input_handler *input_handler; bool input_handler_registered; struct msm_display_topology topology; bool vblank_enabled; bool idle_pc_restore; Loading Loading @@ -807,6 +808,7 @@ void sde_encoder_destroy(struct drm_encoder *drm_enc) if (sde_enc->input_handler) { kfree(sde_enc->input_handler); sde_enc->input_handler = NULL; sde_enc->input_handler_registered = false; } kfree(sde_enc); Loading Loading @@ -3024,6 +3026,7 @@ static int _sde_encoder_input_handler( input_handler->private = sde_enc; sde_enc->input_handler = input_handler; sde_enc->input_handler_registered = false; return rc; } Loading Loading @@ -3187,13 +3190,16 @@ static void sde_encoder_virt_enable(struct drm_encoder *drm_enc) } /* register input handler if not already registered */ if (sde_enc->input_handler && !msm_is_mode_seamless_dms(cur_mode) && if (sde_enc->input_handler && !sde_enc->input_handler_registered && !msm_is_mode_seamless_dms(cur_mode) && !msm_is_mode_seamless_dyn_clk(cur_mode)) { ret = _sde_encoder_input_handler_register( sde_enc->input_handler); if (ret) SDE_ERROR( "input handler registration failed, rc = %d\n", ret); else sde_enc->input_handler_registered = true; } if (!(msm_is_mode_seamless_vrr(cur_mode) Loading Loading @@ -3295,8 +3301,10 @@ static void sde_encoder_virt_disable(struct drm_encoder *drm_enc) /* wait for idle */ sde_encoder_wait_for_event(drm_enc, MSM_ENC_TX_COMPLETE); if (sde_enc->input_handler) if (sde_enc->input_handler && sde_enc->input_handler_registered) { input_unregister_handler(sde_enc->input_handler); sde_enc->input_handler_registered = false; } /* * For primary command mode and video mode encoders, execute the Loading Loading
drivers/gpu/drm/msm/sde/sde_encoder.c +10 −2 Original line number Diff line number Diff line Loading @@ -273,6 +273,7 @@ struct sde_encoder_virt { struct kthread_work input_event_work; struct kthread_work esd_trigger_work; struct input_handler *input_handler; bool input_handler_registered; struct msm_display_topology topology; bool vblank_enabled; bool idle_pc_restore; Loading Loading @@ -807,6 +808,7 @@ void sde_encoder_destroy(struct drm_encoder *drm_enc) if (sde_enc->input_handler) { kfree(sde_enc->input_handler); sde_enc->input_handler = NULL; sde_enc->input_handler_registered = false; } kfree(sde_enc); Loading Loading @@ -3024,6 +3026,7 @@ static int _sde_encoder_input_handler( input_handler->private = sde_enc; sde_enc->input_handler = input_handler; sde_enc->input_handler_registered = false; return rc; } Loading Loading @@ -3187,13 +3190,16 @@ static void sde_encoder_virt_enable(struct drm_encoder *drm_enc) } /* register input handler if not already registered */ if (sde_enc->input_handler && !msm_is_mode_seamless_dms(cur_mode) && if (sde_enc->input_handler && !sde_enc->input_handler_registered && !msm_is_mode_seamless_dms(cur_mode) && !msm_is_mode_seamless_dyn_clk(cur_mode)) { ret = _sde_encoder_input_handler_register( sde_enc->input_handler); if (ret) SDE_ERROR( "input handler registration failed, rc = %d\n", ret); else sde_enc->input_handler_registered = true; } if (!(msm_is_mode_seamless_vrr(cur_mode) Loading Loading @@ -3295,8 +3301,10 @@ static void sde_encoder_virt_disable(struct drm_encoder *drm_enc) /* wait for idle */ sde_encoder_wait_for_event(drm_enc, MSM_ENC_TX_COMPLETE); if (sde_enc->input_handler) if (sde_enc->input_handler && sde_enc->input_handler_registered) { input_unregister_handler(sde_enc->input_handler); sde_enc->input_handler_registered = false; } /* * For primary command mode and video mode encoders, execute the Loading