[Intel-gfx] [PATCH] drm/i915: read bpp from vbt only for older panels

Sivakumar Thulasimani sivakumar.thulasimani at intel.com
Thu Jul 30 03:23:15 PDT 2015



On 7/30/2015 3:27 PM, Jani Nikula wrote:
> On Thu, 30 Jul 2015, Sivakumar Thulasimani <sivakumar.thulasimani at intel.com> wrote:
>> From: "Thulasimani,Sivakumar" <sivakumar.thulasimani at intel.com>
>>
>> BPP bits defined in VBT should be used only on panels whose
>> edid version is 1.3 or older. EDID version 1.4 introduced offsets
>> where bpp is defined and hence should be preferred over any value
>> programmed in VBT.
> Should we actually look at the EDID bpp somewhere?
>> Signed-off-by: Sivakumar Thulasimani <sivakumar.thulasimani at intel.com>
>> ---
>>   drivers/gpu/drm/i915/intel_dp.c |   11 ++++++++++-
>>   1 file changed, 10 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>> index 44f8a32..898dc74 100644
>> --- a/drivers/gpu/drm/i915/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>> @@ -132,6 +132,7 @@ static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync);
>>   static void vlv_init_panel_power_sequencer(struct intel_dp *intel_dp);
>>   static void vlv_steal_power_sequencer(struct drm_device *dev,
>>   				      enum pipe pipe);
>> +static struct edid * intel_dp_get_edid(struct intel_dp *intel_dp);
>>   
>>   static int
>>   intel_dp_max_link_bw(struct intel_dp  *intel_dp)
>> @@ -1353,6 +1354,7 @@ intel_dp_compute_config(struct intel_encoder *encoder,
>>   	enum port port = dp_to_dig_port(intel_dp)->port;
>>   	struct intel_crtc *intel_crtc = to_intel_crtc(pipe_config->base.crtc);
>>   	struct intel_connector *intel_connector = intel_dp->attached_connector;
>> +	struct edid *edid = NULL;
>>   	int lane_count, clock;
>>   	int min_lane_count = 1;
>>   	int max_lane_count = intel_dp_max_lane_count(intel_dp);
>> @@ -1409,12 +1411,19 @@ intel_dp_compute_config(struct intel_encoder *encoder,
>>   	 * bpc in between. */
>>   	bpp = pipe_config->pipe_bpp;
>>   	if (is_edp(intel_dp)) {
>> -		if (dev_priv->vbt.edp_bpp && dev_priv->vbt.edp_bpp < bpp) {
>> +		edid = intel_dp_get_edid(intel_dp);
>> +
>> +		/* Get bpp from vbt only for panels with edid 1.3 or older */
>> +		if (edid && edid->version == 1 && edid->revision <= 3  &&
>> +			(dev_priv->vbt.edp_bpp && dev_priv->vbt.edp_bpp < bpp)) {
> Now you require the panel to have an EDID in order to use the bpp in
> VBT.
>
> BR,
> Jani.
will update with a new patch that will remove this expectation.
>>   			DRM_DEBUG_KMS("clamping bpp for eDP panel to BIOS-provided %i\n",
>>   				      dev_priv->vbt.edp_bpp);
>>   			bpp = dev_priv->vbt.edp_bpp;
>>   		}
>>   
>> +		if (edid)
>> +			kfree(edid);
>> +
>>   		/*
>>   		 * Use the maximum clock and number of lanes the eDP panel
>>   		 * advertizes being capable of. The panels are generally
>> -- 
>> 1.7.9.5
>>
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
regards,
Sivakumar



More information about the Intel-gfx mailing list