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

Commit 9af82895 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "drm/msm/sde: print timeline status information for fence_timeout"

parents 5a861724 2a3c37a8
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -1059,6 +1059,19 @@ static int sde_connector_atomic_get_property(struct drm_connector *connector,
	return rc;
}

void sde_conn_timeline_status(struct drm_connector *conn)
{
	struct sde_connector *c_conn;

	if (!conn) {
		SDE_ERROR("invalid connector\n");
		return;
	}

	c_conn = to_sde_connector(conn);
	sde_fence_timeline_status(&c_conn->retire_fence, &conn->base);
}

void sde_connector_prepare_fence(struct drm_connector *connector)
{
	if (!connector) {
+5 −0
Original line number Diff line number Diff line
@@ -643,4 +643,9 @@ int sde_connector_helper_reset_custom_properties(
int sde_connector_get_mode_info(struct drm_connector_state *conn_state,
	struct msm_mode_info *mode_info);

/**
 * sde_conn_timeline_status - current buffer timeline status
 * conn: Pointer to drm_connector struct
 */
void sde_conn_timeline_status(struct drm_connector *conn);
#endif /* _SDE_CONNECTOR_H_ */
+13 −0
Original line number Diff line number Diff line
@@ -1854,6 +1854,19 @@ static int _sde_crtc_set_dest_scaler_lut(struct sde_crtc *sde_crtc,
	return ret;
}

void sde_crtc_timeline_status(struct drm_crtc *crtc)
{
	struct sde_crtc *sde_crtc;

	if (!crtc) {
		SDE_ERROR("invalid crtc\n");
		return;
	}

	sde_crtc = to_sde_crtc(crtc);
	sde_fence_timeline_status(&sde_crtc->output_fence, &crtc->base);
}

/**
 * sde_crtc_secure_ctrl - Initiates the operations to swtich  between secure
 *                       and non-secure mode
+5 −0
Original line number Diff line number Diff line
@@ -724,4 +724,9 @@ int sde_crtc_secure_ctrl(struct drm_crtc *crtc, bool post_commit);
int sde_crtc_helper_reset_custom_properties(struct drm_crtc *crtc,
		struct drm_crtc_state *crtc_state);

/**
 * sde_crtc_timeline_status - current buffer timeline status
 * @crtc: Pointer to crtc
 */
void sde_crtc_timeline_status(struct drm_crtc *crtc);
#endif /* _SDE_CRTC_H_ */
+27 −0
Original line number Diff line number Diff line
@@ -402,3 +402,30 @@ void sde_fence_signal(struct sde_fence_context *ctx, ktime_t ts,

	_sde_fence_trigger(ctx, ts);
}

void sde_fence_timeline_status(struct sde_fence_context *ctx,
					struct drm_mode_object *drm_obj)
{
	char *obj_name;

	if (!ctx || !drm_obj) {
		SDE_ERROR("invalid input params\n");
		return;
	}

	switch (drm_obj->type) {
	case DRM_MODE_OBJECT_CRTC:
		obj_name = "crtc";
		break;
	case DRM_MODE_OBJECT_CONNECTOR:
		obj_name = "connector";
		break;
	default:
		obj_name = "unknown";
		break;
	}

	SDE_ERROR("drm obj:%s id:%d type:0x%x done_count:%d commit_count:%d\n",
		obj_name, drm_obj->id, drm_obj->type, ctx->done_count,
		ctx->commit_count);
}
Loading