forked from mirrors/linux
		
	drm/i915: Disable PSR in Apple panels
i915 yet don't support PSR in Apple panels, so lets keep it disabled
while we work on that.
v2: Renamed DP_DPCD_QUIRK_PSR_NOT_CURRENTLY_SUPPORTED to
DP_DPCD_QUIRK_NO_PSR (Ville)
v3:
Adding documentation to DP_DPCD_QUIRK_NO_PSR(Dhinakaran and Jani)
Fixed typo in comment of the new quirk entry(Jani)
Fixes: 598c6cfe06 (drm/i915/psr: Enable PSR1 on gen-9+ HW)
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181204003403.23361-1-jose.souza@intel.com
			
			
This commit is contained in:
		
							parent
							
								
									0819936247
								
							
						
					
					
						commit
						7c5c641a93
					
				
					 3 changed files with 15 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -1273,6 +1273,8 @@ static const struct dpcd_quirk dpcd_quirk_list[] = {
 | 
			
		|||
	{ OUI(0x00, 0x22, 0xb9), DEVICE_ID_ANY, true, BIT(DP_DPCD_QUIRK_CONSTANT_N) },
 | 
			
		||||
	/* LG LP140WF6-SPM1 eDP panel */
 | 
			
		||||
	{ OUI(0x00, 0x22, 0xb9), DEVICE_ID('s', 'i', 'v', 'a', 'r', 'T'), false, BIT(DP_DPCD_QUIRK_CONSTANT_N) },
 | 
			
		||||
	/* Apple panels need some additional handling to support PSR */
 | 
			
		||||
	{ OUI(0x00, 0x10, 0xfa), DEVICE_ID_ANY, false, BIT(DP_DPCD_QUIRK_NO_PSR) }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#undef OUI
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -274,10 +274,16 @@ void intel_psr_init_dpcd(struct intel_dp *intel_dp)
 | 
			
		|||
	DRM_DEBUG_KMS("eDP panel supports PSR version %x\n",
 | 
			
		||||
		      intel_dp->psr_dpcd[0]);
 | 
			
		||||
 | 
			
		||||
	if (drm_dp_has_quirk(&intel_dp->desc, DP_DPCD_QUIRK_NO_PSR)) {
 | 
			
		||||
		DRM_DEBUG_KMS("PSR support not currently available for this panel\n");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!(intel_dp->edp_dpcd[1] & DP_EDP_SET_POWER_CAP)) {
 | 
			
		||||
		DRM_DEBUG_KMS("Panel lacks power state control, PSR cannot be enabled\n");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	dev_priv->psr.sink_support = true;
 | 
			
		||||
	dev_priv->psr.sink_sync_latency =
 | 
			
		||||
		intel_dp_get_sink_sync_latency(intel_dp);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1365,6 +1365,13 @@ enum drm_dp_quirk {
 | 
			
		|||
	 * to 16 bits. So will give a constant value (0x8000) for compatability.
 | 
			
		||||
	 */
 | 
			
		||||
	DP_DPCD_QUIRK_CONSTANT_N,
 | 
			
		||||
	/**
 | 
			
		||||
	 * @DP_DPCD_QUIRK_NO_PSR
 | 
			
		||||
	 *
 | 
			
		||||
	 * The device does not support PSR even if reports that it supports or
 | 
			
		||||
	 * driver still need to implement proper handling for such device.
 | 
			
		||||
	 */
 | 
			
		||||
	DP_DPCD_QUIRK_NO_PSR,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue