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

Sharma, Shashank shashank.sharma at intel.com
Wed Apr 6 13:02:03 UTC 2016


Regards
Shashank
>>
>> 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.
Thanks Jani, will have a look.
>
>>
>> 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;
>


More information about the Intel-gfx mailing list