[Intel-gfx] [PATCH 12/12] DO_NOT_MERGE: drm/i915: Hack to enable lspcon initialization

Jani Nikula jani.nikula at linux.intel.com
Wed Apr 6 12:18:16 UTC 2016


On Mon, 04 Apr 2016, Shashank Sharma <shashank.sharma at intel.com> wrote:
> This patch adds a hack to enable lspcon on GEN9 devices.
> This should not be merged, and the hack must be replaced
> by proper VBT parsing logic.
>
> Expecting this patch to enable lspcon bits in VBT:
> https://lists.freedesktop.org/archives/intel-gfx/2016-March/089541.html

FYI, an updated version of that patch has been pushed now.

BR,
Jani.

>
> Signed-off-by: Shashank Sharma <shashank.sharma at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_ddi.c    | 15 +++++++++++++++
>  drivers/gpu/drm/i915/intel_drv.h    |  4 ++++
>  drivers/gpu/drm/i915/intel_lspcon.c | 10 ++++++++++
>  3 files changed, 29 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index 91654ff..f6c2869 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -2169,6 +2169,21 @@ void intel_ddi_init(struct drm_device *dev, enum port port)
>  	intel_encoder->crtc_mask = (1 << 0) | (1 << 1) | (1 << 2);
>  	intel_encoder->cloneable = 0;
>  
> +
> +	/* Check if LSPCON is configured on this port */
> +	if (is_lspcon_present_on_port(dev_priv, intel_dig_port->port)) {
> +		if (!intel_lspcon_init_connector(intel_dig_port)) {
> +			DRM_DEBUG_KMS("LSPCON configured for port %c\n",
> +				port_name(intel_dig_port->port));
> +			return;
> +		} else {
> +			DRM_ERROR("Can't set LSPCON(port %c), falling to DP/HDMI\n",
> +				port_name(intel_dig_port->port));
> +			init_dp = true;
> +			init_hdmi = true;
> +		}
> +	}
> +
>  	if (init_dp) {
>  		if (!intel_ddi_init_dp_connector(intel_dig_port))
>  			goto err;
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index a6ec946..922852c 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -1345,6 +1345,10 @@ void intel_dsi_init(struct drm_device *dev);
>  /* intel_dvo.c */
>  void intel_dvo_init(struct drm_device *dev);
>  
> +/* intel_lspcon.c */
> +int intel_lspcon_init_connector(struct intel_digital_port *intel_dig_port);
> +bool is_lspcon_present_on_port(struct drm_i915_private * dev_priv,
> +		enum port port);
>  
>  /* legacy fbdev emulation in intel_fbdev.c */
>  #ifdef CONFIG_DRM_FBDEV_EMULATION
> diff --git a/drivers/gpu/drm/i915/intel_lspcon.c b/drivers/gpu/drm/i915/intel_lspcon.c
> index 20f90e0..96e4c71 100644
> --- a/drivers/gpu/drm/i915/intel_lspcon.c
> +++ b/drivers/gpu/drm/i915/intel_lspcon.c
> @@ -397,6 +397,16 @@ static const struct drm_connector_helper_funcs lspcon_connector_helper_funcs = {
>  	.best_encoder = intel_best_encoder,
>  };
>  
> +bool is_lspcon_present_on_port(struct drm_i915_private *dev_priv, enum port port)
> +{
> +	/*
> +	* TODO: HACK
> +	* Replace this with proper VBT child dev config check
> +	* logic once that patch is available in tree
> +	*/
> +	return IS_GEN9(dev_priv->dev) && (port == PORT_B);
> +}
> +
>  int intel_lspcon_init_connector(struct intel_digital_port *intel_dig_port)
>  {
>  	int ret;

-- 
Jani Nikula, Intel Open Source Technology Center


More information about the Intel-gfx mailing list