Loading msm/dp/dp_debug.c +10 −0 Original line number Original line Diff line number Diff line Loading @@ -1933,6 +1933,16 @@ static int dp_debug_init(struct dp_debug *dp_debug) goto error_remove_dir; goto error_remove_dir; } } file = debugfs_create_bool("hdcp_wait_sink_sync", 0644, dir, &debug->dp_debug.hdcp_wait_sink_sync); if (IS_ERR_OR_NULL(file)) { rc = PTR_ERR(file); pr_err("[%s] debugfs hdcp_wait_sink_sync failed, rc=%d\n", DEBUG_NAME, rc); goto error_remove_dir; } file = debugfs_create_bool("dsc_feature_enable", 0644, dir, file = debugfs_create_bool("dsc_feature_enable", 0644, dir, &debug->parser->dsc_feature_enable); &debug->parser->dsc_feature_enable); if (IS_ERR_OR_NULL(file)) { if (IS_ERR_OR_NULL(file)) { Loading msm/dp/dp_debug.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,7 @@ /** /** * struct dp_debug * struct dp_debug * @debug_en: specifies whether debug mode enabled * @debug_en: specifies whether debug mode enabled * @hdcp_wait_sink_sync: used to wait for sink synchronization before HDCP auth * @vdisplay: used to filter out vdisplay value * @vdisplay: used to filter out vdisplay value * @hdisplay: used to filter out hdisplay value * @hdisplay: used to filter out hdisplay value * @vrefresh: used to filter out vrefresh value * @vrefresh: used to filter out vrefresh value Loading @@ -28,6 +29,7 @@ struct dp_debug { bool sim_mode; bool sim_mode; bool psm_enabled; bool psm_enabled; bool hdcp_disabled; bool hdcp_disabled; bool hdcp_wait_sink_sync; int aspect_ratio; int aspect_ratio; int vdisplay; int vdisplay; int hdisplay; int hdisplay; Loading msm/dp/dp_display.c +10 −6 Original line number Original line Diff line number Diff line Loading @@ -324,13 +324,17 @@ static void dp_display_hdcp_cb_work(struct work_struct *work) dp->hdcp_delayed_off = false; dp->hdcp_delayed_off = false; } } drm_dp_dpcd_readb(dp->aux->drm_aux, DP_SINK_STATUS, &sink_status); if (dp->debug->hdcp_wait_sink_sync) { sink_status &= (DP_RECEIVE_PORT_0_STATUS | DP_RECEIVE_PORT_1_STATUS); 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) { if (sink_status < 1) { pr_debug("Sink not synchronized. Queuing again then exiting\n"); pr_debug("Sink not synchronized. Queuing again then exiting\n"); queue_delayed_work(dp->wq, &dp->hdcp_cb_work, HZ); queue_delayed_work(dp->wq, &dp->hdcp_cb_work, HZ); return; return; } } } status = &dp->link->hdcp_status; status = &dp->link->hdcp_status; Loading Loading
msm/dp/dp_debug.c +10 −0 Original line number Original line Diff line number Diff line Loading @@ -1933,6 +1933,16 @@ static int dp_debug_init(struct dp_debug *dp_debug) goto error_remove_dir; goto error_remove_dir; } } file = debugfs_create_bool("hdcp_wait_sink_sync", 0644, dir, &debug->dp_debug.hdcp_wait_sink_sync); if (IS_ERR_OR_NULL(file)) { rc = PTR_ERR(file); pr_err("[%s] debugfs hdcp_wait_sink_sync failed, rc=%d\n", DEBUG_NAME, rc); goto error_remove_dir; } file = debugfs_create_bool("dsc_feature_enable", 0644, dir, file = debugfs_create_bool("dsc_feature_enable", 0644, dir, &debug->parser->dsc_feature_enable); &debug->parser->dsc_feature_enable); if (IS_ERR_OR_NULL(file)) { if (IS_ERR_OR_NULL(file)) { Loading
msm/dp/dp_debug.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,7 @@ /** /** * struct dp_debug * struct dp_debug * @debug_en: specifies whether debug mode enabled * @debug_en: specifies whether debug mode enabled * @hdcp_wait_sink_sync: used to wait for sink synchronization before HDCP auth * @vdisplay: used to filter out vdisplay value * @vdisplay: used to filter out vdisplay value * @hdisplay: used to filter out hdisplay value * @hdisplay: used to filter out hdisplay value * @vrefresh: used to filter out vrefresh value * @vrefresh: used to filter out vrefresh value Loading @@ -28,6 +29,7 @@ struct dp_debug { bool sim_mode; bool sim_mode; bool psm_enabled; bool psm_enabled; bool hdcp_disabled; bool hdcp_disabled; bool hdcp_wait_sink_sync; int aspect_ratio; int aspect_ratio; int vdisplay; int vdisplay; int hdisplay; int hdisplay; Loading
msm/dp/dp_display.c +10 −6 Original line number Original line Diff line number Diff line Loading @@ -324,13 +324,17 @@ static void dp_display_hdcp_cb_work(struct work_struct *work) dp->hdcp_delayed_off = false; dp->hdcp_delayed_off = false; } } drm_dp_dpcd_readb(dp->aux->drm_aux, DP_SINK_STATUS, &sink_status); if (dp->debug->hdcp_wait_sink_sync) { sink_status &= (DP_RECEIVE_PORT_0_STATUS | DP_RECEIVE_PORT_1_STATUS); 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) { if (sink_status < 1) { pr_debug("Sink not synchronized. Queuing again then exiting\n"); pr_debug("Sink not synchronized. Queuing again then exiting\n"); queue_delayed_work(dp->wq, &dp->hdcp_cb_work, HZ); queue_delayed_work(dp->wq, &dp->hdcp_cb_work, HZ); return; return; } } } status = &dp->link->hdcp_status; status = &dp->link->hdcp_status; Loading