Loading msm/dsi/dsi_display.c +3 −0 Original line number Diff line number Diff line Loading @@ -800,6 +800,9 @@ static int dsi_display_status_check_te(struct dsi_display *display, int rc = 1, i = 0; int const esd_te_timeout = msecs_to_jiffies(3*20); if (!rechecks) return rc; dsi_display_change_te_irq_status(display, true); for (i = 0; i < rechecks; i++) { Loading msm/sde/sde_encoder_phys_cmd.c +3 −9 Original line number Diff line number Diff line Loading @@ -23,8 +23,6 @@ #define to_sde_encoder_phys_cmd(x) \ container_of(x, struct sde_encoder_phys_cmd, base) #define PP_TIMEOUT_MAX_TRIALS 4 /* * Tearcheck sync start and continue thresholds are empirically found * based on common panels In the future, may want to allow panels to override Loading Loading @@ -507,7 +505,6 @@ static int _sde_encoder_phys_cmd_handle_ppdone_timeout( u32 frame_event = SDE_ENCODER_FRAME_EVENT_ERROR | SDE_ENCODER_FRAME_EVENT_SIGNAL_RELEASE_FENCE; struct drm_connector *conn; int event; u32 pending_kickoff_cnt; unsigned long lock_flags; Loading Loading @@ -553,14 +550,11 @@ static int _sde_encoder_phys_cmd_handle_ppdone_timeout( * if the recovery event is registered by user, don't panic * trigger panic on first timeout if no listener registered */ if (recovery_events) { event = cmd_enc->pp_timeout_report_cnt > PP_TIMEOUT_MAX_TRIALS ? SDE_RECOVERY_HARD_RESET : SDE_RECOVERY_CAPTURE; if (recovery_events) sde_connector_event_notify(conn, DRM_EVENT_SDE_HW_RECOVERY, sizeof(uint8_t), event); } else if (cmd_enc->pp_timeout_report_cnt) { sizeof(uint8_t), SDE_RECOVERY_CAPTURE); else if (cmd_enc->pp_timeout_report_cnt) SDE_DBG_DUMP("dsi_dbg_bus", "panic"); } /* request a ctl reset before the next kickoff */ phys_enc->enable_state = SDE_ENC_ERR_NEEDS_HW_RESET; Loading msm/sde/sde_encoder_phys_vid.c +4 −12 Original line number Diff line number Diff line Loading @@ -26,9 +26,6 @@ #define to_sde_encoder_phys_vid(x) \ container_of(x, struct sde_encoder_phys_vid, base) /* maximum number of consecutive kickoff errors */ #define KICKOFF_MAX_ERRORS 2 /* Poll time to do recovery during active region */ #define POLL_TIME_USEC_FOR_LN_CNT 500 #define MAX_POLL_CNT 10 Loading Loading @@ -931,7 +928,6 @@ static int sde_encoder_phys_vid_prepare_for_kickoff( struct sde_hw_ctl *ctl; bool recovery_events; struct drm_connector *conn; int event; int rc; if (!phys_enc || !params || !phys_enc->hw_ctl) { Loading Loading @@ -973,15 +969,11 @@ static int sde_encoder_phys_vid_prepare_for_kickoff( * if the recovery event is registered by user, don't panic * trigger panic on first timeout if no listener registered */ if (recovery_events) { event = vid_enc->error_count > KICKOFF_MAX_ERRORS ? SDE_RECOVERY_HARD_RESET : SDE_RECOVERY_CAPTURE; sde_connector_event_notify(conn, DRM_EVENT_SDE_HW_RECOVERY, sizeof(uint8_t), event); } else { if (recovery_events) sde_connector_event_notify(conn, DRM_EVENT_SDE_HW_RECOVERY, sizeof(uint8_t), SDE_RECOVERY_CAPTURE); else SDE_DBG_DUMP("panic"); } /* request a ctl reset before the next flush */ phys_enc->enable_state = SDE_ENC_ERR_NEEDS_HW_RESET; Loading msm/sde/sde_kms.c +13 −8 Original line number Diff line number Diff line Loading @@ -4669,18 +4669,24 @@ static int _sde_kms_register_events(struct msm_kms *kms, } sde_kms = to_sde_kms(kms); /* check vm ownership, if event registration requires HW access */ switch (obj->type) { case DRM_MODE_OBJECT_CRTC: vm_ops = sde_vm_get_ops(sde_kms); sde_vm_lock(sde_kms); if (vm_ops && vm_ops->vm_owns_hw && !vm_ops->vm_owns_hw(sde_kms)) { if (vm_ops && vm_ops->vm_owns_hw && !vm_ops->vm_owns_hw(sde_kms)) { sde_vm_unlock(sde_kms); DRM_INFO("HW is owned by other VM\n"); SDE_DEBUG("HW is owned by other VM\n"); return -EACCES; } switch (obj->type) { case DRM_MODE_OBJECT_CRTC: crtc = obj_to_crtc(obj); ret = sde_crtc_register_custom_event(sde_kms, crtc, event, en); sde_vm_unlock(sde_kms); break; case DRM_MODE_OBJECT_CONNECTOR: conn = obj_to_connector(obj); Loading @@ -4689,7 +4695,6 @@ static int _sde_kms_register_events(struct msm_kms *kms, break; } sde_vm_unlock(sde_kms); return ret; } Loading Loading
msm/dsi/dsi_display.c +3 −0 Original line number Diff line number Diff line Loading @@ -800,6 +800,9 @@ static int dsi_display_status_check_te(struct dsi_display *display, int rc = 1, i = 0; int const esd_te_timeout = msecs_to_jiffies(3*20); if (!rechecks) return rc; dsi_display_change_te_irq_status(display, true); for (i = 0; i < rechecks; i++) { Loading
msm/sde/sde_encoder_phys_cmd.c +3 −9 Original line number Diff line number Diff line Loading @@ -23,8 +23,6 @@ #define to_sde_encoder_phys_cmd(x) \ container_of(x, struct sde_encoder_phys_cmd, base) #define PP_TIMEOUT_MAX_TRIALS 4 /* * Tearcheck sync start and continue thresholds are empirically found * based on common panels In the future, may want to allow panels to override Loading Loading @@ -507,7 +505,6 @@ static int _sde_encoder_phys_cmd_handle_ppdone_timeout( u32 frame_event = SDE_ENCODER_FRAME_EVENT_ERROR | SDE_ENCODER_FRAME_EVENT_SIGNAL_RELEASE_FENCE; struct drm_connector *conn; int event; u32 pending_kickoff_cnt; unsigned long lock_flags; Loading Loading @@ -553,14 +550,11 @@ static int _sde_encoder_phys_cmd_handle_ppdone_timeout( * if the recovery event is registered by user, don't panic * trigger panic on first timeout if no listener registered */ if (recovery_events) { event = cmd_enc->pp_timeout_report_cnt > PP_TIMEOUT_MAX_TRIALS ? SDE_RECOVERY_HARD_RESET : SDE_RECOVERY_CAPTURE; if (recovery_events) sde_connector_event_notify(conn, DRM_EVENT_SDE_HW_RECOVERY, sizeof(uint8_t), event); } else if (cmd_enc->pp_timeout_report_cnt) { sizeof(uint8_t), SDE_RECOVERY_CAPTURE); else if (cmd_enc->pp_timeout_report_cnt) SDE_DBG_DUMP("dsi_dbg_bus", "panic"); } /* request a ctl reset before the next kickoff */ phys_enc->enable_state = SDE_ENC_ERR_NEEDS_HW_RESET; Loading
msm/sde/sde_encoder_phys_vid.c +4 −12 Original line number Diff line number Diff line Loading @@ -26,9 +26,6 @@ #define to_sde_encoder_phys_vid(x) \ container_of(x, struct sde_encoder_phys_vid, base) /* maximum number of consecutive kickoff errors */ #define KICKOFF_MAX_ERRORS 2 /* Poll time to do recovery during active region */ #define POLL_TIME_USEC_FOR_LN_CNT 500 #define MAX_POLL_CNT 10 Loading Loading @@ -931,7 +928,6 @@ static int sde_encoder_phys_vid_prepare_for_kickoff( struct sde_hw_ctl *ctl; bool recovery_events; struct drm_connector *conn; int event; int rc; if (!phys_enc || !params || !phys_enc->hw_ctl) { Loading Loading @@ -973,15 +969,11 @@ static int sde_encoder_phys_vid_prepare_for_kickoff( * if the recovery event is registered by user, don't panic * trigger panic on first timeout if no listener registered */ if (recovery_events) { event = vid_enc->error_count > KICKOFF_MAX_ERRORS ? SDE_RECOVERY_HARD_RESET : SDE_RECOVERY_CAPTURE; sde_connector_event_notify(conn, DRM_EVENT_SDE_HW_RECOVERY, sizeof(uint8_t), event); } else { if (recovery_events) sde_connector_event_notify(conn, DRM_EVENT_SDE_HW_RECOVERY, sizeof(uint8_t), SDE_RECOVERY_CAPTURE); else SDE_DBG_DUMP("panic"); } /* request a ctl reset before the next flush */ phys_enc->enable_state = SDE_ENC_ERR_NEEDS_HW_RESET; Loading
msm/sde/sde_kms.c +13 −8 Original line number Diff line number Diff line Loading @@ -4669,18 +4669,24 @@ static int _sde_kms_register_events(struct msm_kms *kms, } sde_kms = to_sde_kms(kms); /* check vm ownership, if event registration requires HW access */ switch (obj->type) { case DRM_MODE_OBJECT_CRTC: vm_ops = sde_vm_get_ops(sde_kms); sde_vm_lock(sde_kms); if (vm_ops && vm_ops->vm_owns_hw && !vm_ops->vm_owns_hw(sde_kms)) { if (vm_ops && vm_ops->vm_owns_hw && !vm_ops->vm_owns_hw(sde_kms)) { sde_vm_unlock(sde_kms); DRM_INFO("HW is owned by other VM\n"); SDE_DEBUG("HW is owned by other VM\n"); return -EACCES; } switch (obj->type) { case DRM_MODE_OBJECT_CRTC: crtc = obj_to_crtc(obj); ret = sde_crtc_register_custom_event(sde_kms, crtc, event, en); sde_vm_unlock(sde_kms); break; case DRM_MODE_OBJECT_CONNECTOR: conn = obj_to_connector(obj); Loading @@ -4689,7 +4695,6 @@ static int _sde_kms_register_events(struct msm_kms *kms, break; } sde_vm_unlock(sde_kms); return ret; } Loading