Loading drivers/gpu/drm/msm/dp/dp_display.c +2 −1 Original line number Diff line number Diff line Loading @@ -494,7 +494,8 @@ static int dp_display_process_hpd_high(struct dp_display_private *dp) if (!dp->dp_display.connector) return 0; rc = dp->panel->read_sink_caps(dp->panel, dp->dp_display.connector); rc = dp->panel->read_sink_caps(dp->panel, dp->dp_display.connector, dp->usbpd->multi_func); if (rc) { if (rc == -ETIMEDOUT) { pr_err("Sink cap read failed, skip notification\n"); Loading drivers/gpu/drm/msm/dp/dp_panel.c +7 −3 Original line number Diff line number Diff line Loading @@ -104,7 +104,7 @@ static const u8 vendor_name[8] = {81, 117, 97, 108, 99, 111, 109, 109}; static const u8 product_desc[16] = {83, 110, 97, 112, 100, 114, 97, 103, 111, 110, 0, 0, 0, 0, 0, 0}; static int dp_panel_read_dpcd(struct dp_panel *dp_panel) static int dp_panel_read_dpcd(struct dp_panel *dp_panel, bool multi_func) { int rlen, rc = 0; struct dp_panel_private *panel; Loading Loading @@ -176,6 +176,10 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel) link_info->num_lanes = dp_panel->dpcd[DP_MAX_LANE_COUNT] & DP_MAX_LANE_COUNT_MASK; if (multi_func) link_info->num_lanes = min_t(unsigned int, link_info->num_lanes, 2); pr_debug("lane_count=%d\n", link_info->num_lanes); if (drm_dp_enhanced_frame_cap(dpcd)) Loading Loading @@ -303,7 +307,7 @@ static int dp_panel_read_edid(struct dp_panel *dp_panel, } static int dp_panel_read_sink_caps(struct dp_panel *dp_panel, struct drm_connector *connector) struct drm_connector *connector, bool multi_func) { int rc = 0; struct dp_panel_private *panel; Loading @@ -315,7 +319,7 @@ static int dp_panel_read_sink_caps(struct dp_panel *dp_panel, panel = container_of(dp_panel, struct dp_panel_private, dp_panel); rc = dp_panel_read_dpcd(dp_panel); rc = dp_panel_read_dpcd(dp_panel, multi_func); if (rc || !is_link_rate_valid(drm_dp_link_rate_to_bw_code( dp_panel->link_info.rate)) || !is_lane_count_valid( dp_panel->link_info.num_lanes) || Loading drivers/gpu/drm/msm/dp/dp_panel.h +1 −1 Original line number Diff line number Diff line Loading @@ -80,7 +80,7 @@ struct dp_panel { int (*deinit)(struct dp_panel *dp_panel); int (*timing_cfg)(struct dp_panel *dp_panel); int (*read_sink_caps)(struct dp_panel *dp_panel, struct drm_connector *connector); struct drm_connector *connector, bool multi_func); u32 (*get_min_req_link_rate)(struct dp_panel *dp_panel); u32 (*get_mode_bpp)(struct dp_panel *dp_panel, u32 mode_max_bpp, u32 mode_pclk_khz); Loading Loading
drivers/gpu/drm/msm/dp/dp_display.c +2 −1 Original line number Diff line number Diff line Loading @@ -494,7 +494,8 @@ static int dp_display_process_hpd_high(struct dp_display_private *dp) if (!dp->dp_display.connector) return 0; rc = dp->panel->read_sink_caps(dp->panel, dp->dp_display.connector); rc = dp->panel->read_sink_caps(dp->panel, dp->dp_display.connector, dp->usbpd->multi_func); if (rc) { if (rc == -ETIMEDOUT) { pr_err("Sink cap read failed, skip notification\n"); Loading
drivers/gpu/drm/msm/dp/dp_panel.c +7 −3 Original line number Diff line number Diff line Loading @@ -104,7 +104,7 @@ static const u8 vendor_name[8] = {81, 117, 97, 108, 99, 111, 109, 109}; static const u8 product_desc[16] = {83, 110, 97, 112, 100, 114, 97, 103, 111, 110, 0, 0, 0, 0, 0, 0}; static int dp_panel_read_dpcd(struct dp_panel *dp_panel) static int dp_panel_read_dpcd(struct dp_panel *dp_panel, bool multi_func) { int rlen, rc = 0; struct dp_panel_private *panel; Loading Loading @@ -176,6 +176,10 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel) link_info->num_lanes = dp_panel->dpcd[DP_MAX_LANE_COUNT] & DP_MAX_LANE_COUNT_MASK; if (multi_func) link_info->num_lanes = min_t(unsigned int, link_info->num_lanes, 2); pr_debug("lane_count=%d\n", link_info->num_lanes); if (drm_dp_enhanced_frame_cap(dpcd)) Loading Loading @@ -303,7 +307,7 @@ static int dp_panel_read_edid(struct dp_panel *dp_panel, } static int dp_panel_read_sink_caps(struct dp_panel *dp_panel, struct drm_connector *connector) struct drm_connector *connector, bool multi_func) { int rc = 0; struct dp_panel_private *panel; Loading @@ -315,7 +319,7 @@ static int dp_panel_read_sink_caps(struct dp_panel *dp_panel, panel = container_of(dp_panel, struct dp_panel_private, dp_panel); rc = dp_panel_read_dpcd(dp_panel); rc = dp_panel_read_dpcd(dp_panel, multi_func); if (rc || !is_link_rate_valid(drm_dp_link_rate_to_bw_code( dp_panel->link_info.rate)) || !is_lane_count_valid( dp_panel->link_info.num_lanes) || Loading
drivers/gpu/drm/msm/dp/dp_panel.h +1 −1 Original line number Diff line number Diff line Loading @@ -80,7 +80,7 @@ struct dp_panel { int (*deinit)(struct dp_panel *dp_panel); int (*timing_cfg)(struct dp_panel *dp_panel); int (*read_sink_caps)(struct dp_panel *dp_panel, struct drm_connector *connector); struct drm_connector *connector, bool multi_func); u32 (*get_min_req_link_rate)(struct dp_panel *dp_panel); u32 (*get_mode_bpp)(struct dp_panel *dp_panel, u32 mode_max_bpp, u32 mode_pclk_khz); Loading