[Intel-gfx] [PATCH] drm/i915: Quirk to ignore VBT bpp

Jani Nikula jani.nikula at linux.intel.com
Mon Sep 23 19:59:06 CEST 2013


On Mon, 23 Sep 2013, Srinivas Pandruvada <srinivas.pandruvada at linux.intel.com> wrote:
> On 09/22/2013 11:18 PM, Jani Nikula wrote:
>> On Sat, 21 Sep 2013, Ben Widawsky <benjamin.widawsky at intel.com> wrote:
>>> We've had several reports of an Asus Zenbook reporting an 18bpp eDP
>>> display, which then proceeds to not work. Using the default 24, work
>>> just fine. Since it appears this is somewhat common in the budding world
>>> of eDP, make a new quirk for it, and use it.
>> Srinivas, are you using UEFI boot? Does the problem go away if you try
>> enabling CSM or legacy boot?
>>
>> That would be [1]. On certain machines we need to use the bpp from VBT,
>> otherwise eDP fails. For some reason the VBT on certain other machines
>> reports a different bpp value depending on UEFI vs. CSM/legacy boot,
>> where the former fails but latter works.
>>
>> There are more affected machines than just Asus Zenbook UX31A IVB, and
>> I'm not sure if quirking is the right option... still hoping to find a
>> good solution that works out of the box for everyone.
>>
> I see for some folks enabling legacy mode solves this issue and for some 
> it doesn't solve (There are number of report of this issue).

I'd be interested in references and hard data; I was pretty much under
the impression it always works in legacy.

> For me UEFI boot is important because I am working on some feature 
> requiring UEFI boot.

Of course; I'm not saying enabling legacy is a fix, or even a decent
workaround. Just interested in another data point.

Jani.


>> BR,
>> Jani.
>>
>>
>> [1] https://bugzilla.kernel.org/show_bug.cgi?id=59841
>>
>>
>>> This code has been changed several times. Amongst the most recent with
>>> the best history are:
>>>
>>> commit 57c219633275c7e7413f8bc7be250dc092887458
>>> Author: Daniel Vetter <daniel.vetter at ffwll.ch>
>>> Date:   Thu Apr 4 17:19:37 2013 +0200
>>>
>>>      drm/i915: revert eDP bpp clamping code changes
>>>
>>> and
>>>
>>> commit af13188a1a6623fc8b4b6c42178046fb80f8b1d0
>>> Author: Daniel Vetter <daniel.vetter at ffwll.ch>
>>> Date:   Tue Feb 19 17:45:00 2013 +0100
>>>
>>>      drm/i915: force bpp for eDP panels
>>>
>>> Reported-by: Srinivas Pandruvada <srinivas.pandruvada at linux.intel.com>
>>> CC: Adam Jackson <ajax at redhat.com>
>>> CC: Daniel Vetter <daniel.vetter at ffwll.ch>
>>> Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
>>> ---
>>>   drivers/gpu/drm/i915/i915_drv.h      |  1 +
>>>   drivers/gpu/drm/i915/intel_display.c | 12 ++++++++++++
>>>   drivers/gpu/drm/i915/intel_dp.c      |  4 +++-
>>>   3 files changed, 16 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
>>> index 8c52cbd..bc8ff0a 100644
>>> --- a/drivers/gpu/drm/i915/i915_drv.h
>>> +++ b/drivers/gpu/drm/i915/i915_drv.h
>>> @@ -672,6 +672,7 @@ enum intel_sbi_destination {
>>>   #define QUIRK_LVDS_SSC_DISABLE (1<<1)
>>>   #define QUIRK_INVERT_BRIGHTNESS (1<<2)
>>>   #define QUIRK_NO_PCH_PWM_ENABLE (1<<3)
>>> +#define QUIRK_IGNORE_VBT_BPP	(1<<4)
>>>   
>>>   struct intel_fbdev;
>>>   struct intel_fbc_work;
>>> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>>> index 8206ee7..c364377 100644
>>> --- a/drivers/gpu/drm/i915/intel_display.c
>>> +++ b/drivers/gpu/drm/i915/intel_display.c
>>> @@ -10139,6 +10139,15 @@ static void quirk_no_pcm_pwm_enable(struct drm_device *dev)
>>>   	DRM_INFO("applying no-PCH_PWM_ENABLE quirk\n");
>>>   }
>>>   
>>> +/* Some machines (ux31a) advertise the panel should use 18bpp, but it lies.
>>> + */
>>> +static void quirk_ignore_vbt_bpp(struct drm_device *dev)
>>> +{
>>> +	struct drm_i915_private *dev_priv = dev->dev_private;
>>> +	dev_priv->quirks |= QUIRK_IGNORE_VBT_BPP;
>>> +	DRM_INFO("applying IGNORE_VBT_BPP quirk\n");
>>> +}
>>> +
>>>   struct intel_quirk {
>>>   	int device;
>>>   	int subsystem_vendor;
>>> @@ -10213,6 +10222,9 @@ static struct intel_quirk intel_quirks[] = {
>>>   	{ 0x0116, 0x1028, 0x052e, quirk_no_pcm_pwm_enable },
>>>   	/* Dell XPS13 HD and XPS13 FHD Ivy Bridge */
>>>   	{ 0x0166, 0x1028, 0x058b, quirk_no_pcm_pwm_enable },
>>> +
>>> +	/* Asus Zenbook UX31A Ivybridge eDP */
>>> +	{ 0x0166, 0x1043, 0x1517, quirk_ignore_vbt_bpp },
>>>   };
>>>   
>>>   static void intel_init_quirks(struct drm_device *dev)
>>> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>>> index 9770160..fd47be8 100644
>>> --- a/drivers/gpu/drm/i915/intel_dp.c
>>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>>> @@ -805,7 +805,9 @@ intel_dp_compute_config(struct intel_encoder *encoder,
>>>   	/* Walk through all bpp values. Luckily they're all nicely spaced with 2
>>>   	 * bpc in between. */
>>>   	bpp = pipe_config->pipe_bpp;
>>> -	if (is_edp(intel_dp) && dev_priv->vbt.edp_bpp) {
>>> +	if (is_edp(intel_dp) &&
>>> +	    dev_priv->vbt.edp_bpp &&
>>> +	    (dev_priv->quirks & QUIRK_IGNORE_VBT_BPP) == 0) {
>>>   		DRM_DEBUG_KMS("clamping bpp for eDP panel to BIOS-provided %i\n",
>>>   			      dev_priv->vbt.edp_bpp);
>>>   		bpp = min_t(int, bpp, dev_priv->vbt.edp_bpp);
>>> -- 
>>> 1.8.4
>>>
>>> _______________________________________________
>>> Intel-gfx mailing list
>>> Intel-gfx at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



More information about the Intel-gfx mailing list