Loading drivers/gpu/drm/msm/sde/sde_connector.c +13 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading drivers/gpu/drm/msm/sde/sde_connector.h +5 −0 Original line number Diff line number Diff line Loading @@ -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_ */ drivers/gpu/drm/msm/sde/sde_crtc.c +13 −0 Original line number Diff line number Diff line Loading @@ -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 Loading drivers/gpu/drm/msm/sde/sde_crtc.h +5 −0 Original line number Diff line number Diff line Loading @@ -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_ */ drivers/gpu/drm/msm/sde/sde_fence.c +27 −0 Original line number Diff line number Diff line Loading @@ -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
drivers/gpu/drm/msm/sde/sde_connector.c +13 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading
drivers/gpu/drm/msm/sde/sde_connector.h +5 −0 Original line number Diff line number Diff line Loading @@ -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_ */
drivers/gpu/drm/msm/sde/sde_crtc.c +13 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
drivers/gpu/drm/msm/sde/sde_crtc.h +5 −0 Original line number Diff line number Diff line Loading @@ -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_ */
drivers/gpu/drm/msm/sde/sde_fence.c +27 −0 Original line number Diff line number Diff line Loading @@ -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); }