Loading drivers/gpu/drm/msm/dp/dp_display.c +13 −4 Original line number Diff line number Diff line Loading @@ -291,7 +291,8 @@ static void dp_display_hdcp_deregister_stream(struct dp_display_private *dp, enum dp_stream_id stream_id) { if (dp->hdcp.ops->deregister_streams) { struct stream_info stream = {stream_id, 0}; struct stream_info stream = {stream_id, dp->active_panels[stream_id]->vcpi}; pr_debug("Deregistering stream within HDCP library"); dp->hdcp.ops->deregister_streams(dp->hdcp.data, 1, &stream); Loading @@ -307,12 +308,21 @@ static void dp_display_hdcp_cb_work(struct work_struct *work) void *data; int rc = 0; u32 hdcp_auth_state; u8 sink_status = 0; dp = container_of(dw, struct dp_display_private, hdcp_cb_work); if (!dp->power_on || !dp->is_connected || atomic_read(&dp->aborted)) return; drm_dp_dpcd_readb(dp->aux->drm_aux, DP_SINK_STATUS, &sink_status); sink_status &= (DP_RECEIVE_PORT_0_STATUS | DP_RECEIVE_PORT_1_STATUS); if (sink_status < 1) { pr_debug("Sink not synchronized. Queuing again then exiting\n"); queue_delayed_work(dp->wq, &dp->hdcp_cb_work, HZ); return; } status = &dp->link->hdcp_status; if (status->hdcp_state == HDCP_STATE_INACTIVE) { Loading Loading @@ -1679,9 +1689,8 @@ static int dp_display_pre_disable(struct dp_display *dp_display, void *panel) dp_display_hdcp_deregister_stream(dp, dp_panel->stream_id); for (i = DP_STREAM_0; i < DP_STREAM_MAX; i++) { if (i != dp_panel->stream_id) continue; if (dp->active_panels[i]) { if (i != dp_panel->stream_id && dp->active_panels[i]) { pr_debug("Streams are still active. Skip disabling HDCP\n"); goto stream; } Loading Loading
drivers/gpu/drm/msm/dp/dp_display.c +13 −4 Original line number Diff line number Diff line Loading @@ -291,7 +291,8 @@ static void dp_display_hdcp_deregister_stream(struct dp_display_private *dp, enum dp_stream_id stream_id) { if (dp->hdcp.ops->deregister_streams) { struct stream_info stream = {stream_id, 0}; struct stream_info stream = {stream_id, dp->active_panels[stream_id]->vcpi}; pr_debug("Deregistering stream within HDCP library"); dp->hdcp.ops->deregister_streams(dp->hdcp.data, 1, &stream); Loading @@ -307,12 +308,21 @@ static void dp_display_hdcp_cb_work(struct work_struct *work) void *data; int rc = 0; u32 hdcp_auth_state; u8 sink_status = 0; dp = container_of(dw, struct dp_display_private, hdcp_cb_work); if (!dp->power_on || !dp->is_connected || atomic_read(&dp->aborted)) return; drm_dp_dpcd_readb(dp->aux->drm_aux, DP_SINK_STATUS, &sink_status); sink_status &= (DP_RECEIVE_PORT_0_STATUS | DP_RECEIVE_PORT_1_STATUS); if (sink_status < 1) { pr_debug("Sink not synchronized. Queuing again then exiting\n"); queue_delayed_work(dp->wq, &dp->hdcp_cb_work, HZ); return; } status = &dp->link->hdcp_status; if (status->hdcp_state == HDCP_STATE_INACTIVE) { Loading Loading @@ -1679,9 +1689,8 @@ static int dp_display_pre_disable(struct dp_display *dp_display, void *panel) dp_display_hdcp_deregister_stream(dp, dp_panel->stream_id); for (i = DP_STREAM_0; i < DP_STREAM_MAX; i++) { if (i != dp_panel->stream_id) continue; if (dp->active_panels[i]) { if (i != dp_panel->stream_id && dp->active_panels[i]) { pr_debug("Streams are still active. Skip disabling HDCP\n"); goto stream; } Loading