diff options
Diffstat (limited to 'drivers/gpu/drm/msm/dp/dp_panel.c')
| -rw-r--r-- | drivers/gpu/drm/msm/dp/dp_panel.c | 22 | 
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/gpu/drm/msm/dp/dp_panel.c b/drivers/gpu/drm/msm/dp/dp_panel.c index 1800d8963f8a..42d52510ffd4 100644 --- a/drivers/gpu/drm/msm/dp/dp_panel.c +++ b/drivers/gpu/drm/msm/dp/dp_panel.c @@ -20,6 +20,27 @@ struct dp_panel_private {  	bool aux_cfg_update_done;  }; +static void dp_panel_read_psr_cap(struct dp_panel_private *panel) +{ +	ssize_t rlen; +	struct dp_panel *dp_panel; + +	dp_panel = &panel->dp_panel; + +	/* edp sink */ +	if (dp_panel->dpcd[DP_EDP_CONFIGURATION_CAP]) { +		rlen = drm_dp_dpcd_read(panel->aux, DP_PSR_SUPPORT, +				&dp_panel->psr_cap, sizeof(dp_panel->psr_cap)); +		if (rlen == sizeof(dp_panel->psr_cap)) { +			drm_dbg_dp(panel->drm_dev, +				"psr version: 0x%x, psr_cap: 0x%x\n", +				dp_panel->psr_cap.version, +				dp_panel->psr_cap.capabilities); +		} else +			DRM_ERROR("failed to read psr info, rlen=%zd\n", rlen); +	} +} +  static int dp_panel_read_dpcd(struct dp_panel *dp_panel)  {  	int rc = 0; @@ -107,6 +128,7 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel)  		}  	} +	dp_panel_read_psr_cap(panel);  end:  	return rc;  }  |