diff mbox

[drm-intel-nightly] drm/i915: Add a pipe A force quirk for Samsung NP530U3B-A01DE

Message ID 1359635047-5314-1-git-send-email-sedat.dilek@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Sedat Dilek Jan. 31, 2013, 12:24 p.m. UTC
IMPORTANT NOTE: *** This is just an experimental patch! ***

I fell over some "pipe A assertion" warnings while playing with drm-intel-nightly
and contacted Daniel Vetter via PM.

[ dmesg ]
[   19.948476] WARNING: at drivers/gpu/drm/i915/intel_display.c:1228 assert_pipe+0xde/0xe0 [i915]()
[   19.948476] Hardware name: 530U3BI/530U4BI/530U4BH
[   19.948477] pipe A assertion failure (expected on, current off)

Waiting for a reply, I looked into the code myself and found this snippet and
reflected about adding a quirk_pipea_force for my Intel SandyBridge GPU:

static struct intel_quirk intel_quirks[] = {
        /* HP Mini needs pipe A force quirk (LP: #322104) */
        { 0x27ae, 0x103c, 0x361a, quirk_pipea_force },
...
}

Unfortunately, it was not clear to me what each value of the triple means.

I started to investigate more in the logs:

[ Xorg.0.log ]
[    16.421] (--) PCI:*(0:0:2:0) 8086:0116:144d:c0c7 rev 9, Mem @0xf0000000/4194304, 0xe0000000/268435456, I/O @ 0x00003000/64

This line gave me a 1st impression how my triple for a quirk line could look like!

Finally, Jani Nikula gave me some helpful explanations in [1]:

>I guess you figured it out, but just a few lines up there's [1]:

struct intel_quirk {
        int device;
        int subsystem_vendor;
        int subsystem_device;
        void (*hook)(struct drm_device *dev);
};

>where device, subsystem_vendor, and subsystem_device map to Device,
>SVendor, and SDevice of the gfx controller in 'lspci -vmnn' output.

With these informations, I checked immediately here with 'lspci -vmnn' [2]:

Device: 00:02.0
Class:  VGA compatible controller [0300]
Vendor: Intel Corporation [8086]
Device: 2nd Generation Core Processor Family Integrated Graphics Controller [0116]
SVendor:        Samsung Electronics Co Ltd [144d]
SDevice:        Device [c0c7]
Rev:    09

[ Triple revealed (w/o brackets) ]
Device (here: [0116]), SVendor (here: [144d]) and SDevice (here: [c0c7])

As a conclusion, I added the below QUIRK and it was successful:

[ dmesg ]
[   15.047921] [drm] applying pipe a force quirk

Daniel removed the "buggy" patch which introduced the warning for non-HSW GPUs.
v3 in commit 693101618a4b [3] should be the revised patch.

[ References ]
[1] http://lists.freedesktop.org/archives/intel-gfx/2013-January/024160.html
[2] http://lists.freedesktop.org/archives/intel-gfx/2013-January/024161.html
[3] http://cgit.freedesktop.org/~danvet/drm-intel/commit/?h=drm-intel-nightly&id=693101618a4beedf1b3d291860aee56c5fe44a1c

Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: intel-gfx <intel-gfx@lists.freedesktop.org>
Cc: DRI <dri-devel@lists.freedesktop.org>
Signed-off-by: Sedat Dilek <sedat.dilek@gmail.com>
---
 drivers/gpu/drm/i915/intel_display.c | 3 +++
 1 file changed, 3 insertions(+)
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 8c432a4..705fdb6 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -8607,6 +8607,9 @@  static const struct intel_dmi_quirk intel_dmi_quirks[] = {
 };
 
 static struct intel_quirk intel_quirks[] = {
+	/* Samsung NP530U3B-A01DE needs pipe A force quirk */
+	{ 0x0116, 0x144d, 0xc0c7, quirk_pipea_force },
+
 	/* HP Mini needs pipe A force quirk (LP: #322104) */
 	{ 0x27ae, 0x103c, 0x361a, quirk_pipea_force },