[Intel-gfx] [PATCH] drm/i915: read bpp from vbt only for older panels
Jani Nikula
jani.nikula at linux.intel.com
Thu Jul 30 02:57:13 PDT 2015
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.
> 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
--
Jani Nikula, Intel Open Source Technology Center
More information about the Intel-gfx
mailing list