From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com ([134.134.136.65]:39405 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750805AbcFNKoy (ORCPT ); Tue, 14 Jun 2016 06:44:54 -0400 Date: Tue, 14 Jun 2016 13:44:49 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Mario Kleiner Cc: dri-devel@lists.freedesktop.org, stable@vger.kernel.org, Jani Nikula , Daniel Vetter Subject: Re: [PATCH 2/2] drm/edid: Add 6 bpc quirk for display AEO model 0. Message-ID: <20160614104449.GS4329@intel.com> References: <1464273544-23834-1-git-send-email-mario.kleiner.de@gmail.com> <1464273544-23834-3-git-send-email-mario.kleiner.de@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1464273544-23834-3-git-send-email-mario.kleiner.de@gmail.com> Sender: stable-owner@vger.kernel.org List-ID: On Thu, May 26, 2016 at 04:39:04PM +0200, Mario Kleiner wrote: > Bugzilla https://bugzilla.kernel.org/show_bug.cgi?id=105331 > reports that the "AEO model 0" display is driven with 8 bpc > without dithering by default, which looks bad because that > panel is apparently a 6 bpc DP panel with faulty EDID. > > A fix for this was made by commit 013dd9e03872 > ("drm/i915/dp: fall back to 18 bpp when sink capability is unknown"). > > That commit triggers new regressions in precision for DP->DVI and > DP->VGA displays. A patch is out to revert that commit, but it will > revert video output for the AEO model 0 panel to 8 bpc without > dithering. > > The EDID 1.3 of that panel, as decoded from the xrandr output > attached to that bugzilla bug report, is somewhat faulty, and beyond > other problems also sets the "DFP 1.x compliant TMDS" bit, which > according to DFP spec means to drive the panel with 8 bpc and > no dithering in absence of other colorimetry information. > > Try to make the original bug reporter happy despite the > faulty EDID by adding a quirk to mark that panel as 6 bpc, > so 6 bpc output with dithering creates a nice picture. > > Tested by injecting the edid from the fdo bug into a DP connector > via drm_kms_helper.edid_firmware and verifying the 6 bpc + dithering > is selected. > > This patch should be backported to stable. > > Signed-off-by: Mario Kleiner > Cc: stable@vger.kernel.org > Cc: Jani Nikula > Cc: Ville Syrj�l� > Cc: Daniel Vetter Now I'm confused. I thought we didn't need any quirks? > --- > drivers/gpu/drm/drm_edid.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index 7df26d4..2cb472b 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++ b/drivers/gpu/drm/drm_edid.c > @@ -74,6 +74,8 @@ > #define EDID_QUIRK_FORCE_8BPC (1 << 8) > /* Force 12bpc */ > #define EDID_QUIRK_FORCE_12BPC (1 << 9) > +/* Force 6bpc */ > +#define EDID_QUIRK_FORCE_6BPC (1 << 10) > > struct detailed_mode_closure { > struct drm_connector *connector; > @@ -100,6 +102,9 @@ static struct edid_quirk { > /* Unknown Acer */ > { "ACR", 2423, EDID_QUIRK_FIRST_DETAILED_PREFERRED }, > > + /* AEO model 0 reports 8 bpc, but is a 6 bpc panel */ > + { "AEO", 0, EDID_QUIRK_FORCE_6BPC }, > + > /* Belinea 10 15 55 */ > { "MAX", 1516, EDID_QUIRK_PREFER_LARGE_60 }, > { "MAX", 0x77e, EDID_QUIRK_PREFER_LARGE_60 }, > @@ -4082,6 +4087,9 @@ int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid) > > drm_add_display_info(edid, &connector->display_info, connector); > > + if (quirks & EDID_QUIRK_FORCE_6BPC) > + connector->display_info.bpc = 6; > + > if (quirks & EDID_QUIRK_FORCE_8BPC) > connector->display_info.bpc = 8; > > -- > 2.7.0 -- Ville Syrj�l� Intel OTC