Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 69e06f9f authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "disp: msm: dsi: avoid TE status check based on rechecks count"

parents b76d65a7 db67b18a
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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++) {
+3 −9
Original line number Diff line number Diff line
@@ -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
@@ -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;

@@ -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;
+4 −12
Original line number Diff line number Diff line
@@ -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
@@ -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) {
@@ -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;
+13 −8
Original line number Diff line number Diff line
@@ -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);
@@ -4689,7 +4695,6 @@ static int _sde_kms_register_events(struct msm_kms *kms,
		break;
	}

	sde_vm_unlock(sde_kms);
	return ret;
}