[Intel-gfx] [PATCH 19/24] drm/i915: detect digital outputs on Haswell
Jesse Barnes
jbarnes at virtuousgeek.org
Tue May 1 02:27:50 CEST 2012
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
More information about the Intel-gfx
mailing list