[PATCH 19/24] drm/i915: detect digital outputs on Haswell

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 26 Apr 2012 15:21:14 -0300
Eugeni Dodonov <eugeni.dodonov at intel.com> wrote:

> Digital port detection on Haswell is indicated by the presence of a bit in
> DDI_BUF_CTL for port A, and by a different register for ports B, C and D.
> So we check for those bits during the initialization time and let the hdmi
> function know about those.
> 
> Note that this bit does not indicates whether the output is DP or HDMI.
> However, the DDI buffers can be programmed in a way that is shared between
> DP/HDMI and FDI/HDMI except for PORT E.
> 
> So for now, we detect those digital outputs as being HDMI, but proper DP
> support is still pending.
> 
> Note that DDI A can only drive eDP, so we do not handle it here for hdmi
> initialization.
> 
> v2: simplify Haswell handling logic
> 
> v3: use generic function for handling digital outputs.
> 
> Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_ddi.c     |   29 +++++++++++++++++++++++++++++
>  drivers/gpu/drm/i915/intel_display.c |   21 ++++++++++++++++++++-
>  drivers/gpu/drm/i915/intel_drv.h     |    1 +
>  3 files changed, 50 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index 93436caa..cd6fbaa 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -230,3 +230,32 @@ void ddi_fdi_link_train(struct drm_crtc *crtc)
>  	if (IS_HASWELL(dev))
>  		hsw_fdi_link_train(crtc);
>  }
> +
> +/* For DDI connections, it is possible to support different outputs over the
> + * same DDI port, such as HDMI or DP or even VGA via FDI. So we don't know by
> + * the time the output is detected what exactly is on the other end of it. This
> + * function aims at providing support for this detection and proper output
> + * configuration.
> + */
> +void intel_ddi_init(struct drm_device *dev, enum port port)
> +{
> +	/* For now, we don't do any proper output detection and assume that we
> +	 * handle HDMI only */
> +
> +	switch(port){
> +	case PORT_A:
> +		/* We don't handle eDP and DP yet */
> +		DRM_DEBUG_DRIVER("Found digital output on DDI port A\n");
> +		break;
> +	/* Assume that the  ports B, C and D are working in HDMI mode for now */
> +	case PORT_B:
> +	case PORT_C:
> +	case PORT_D:
> +		intel_hdmi_init(dev, DDI_BUF_CTL(port));
> +		break;
> +	default:
> +		DRM_DEBUG_DRIVER("No handlers defined for port %d, skipping DDI initialization\n",
> +				port);
> +		break;
> +	}
> +}

We really really need to get the port detection working on HSW using
the VBT.

-- 
Jesse Barnes, Intel Open Source Technology Center


[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux