• Lukas Wunner's avatar
    drm/i915: Switch DDC when reading the EDID · 4eddaeec
    Lukas Wunner authored
    The pre-retina MacBook Pro uses an LVDS panel and a gmux controller
    to switch the panel between its two GPUs. The panel mode in VBIOS
    is notoriously bogus on these machines and some models have no
    VBIOS at all.
    
    Use drm_get_edid_switcheroo() in lieu of drm_get_edid() on LVDS
    if the vga_switcheroo handler is capable of temporarily switching
    the panel's DDC lines to the integrated GPU. This allows us to
    retrieve the EDID if the panel is currently muxed to the discrete GPU.
    
    This only enables EDID probing on the pre-retina MBP (2008 - 2013).
    The retina MBP (2012 - present) uses eDP and gmux is not capable of
    switching AUX separately from the main link on these models.
    This will be addressed in later patches.
    
    List of pre-retina MBPs with dual GPUs, one of them Intel:
        [MBP  6,2 2010  intel ILK + nvidia GT216  pre-retina  15"]
        [MBP  6,1 2010  intel ILK + nvidia GT216  pre-retina  17"]
        [MBP  8,2 2011  intel SNB + amd turks     pre-retina  15"]
        [MBP  8,3 2011  intel SNB + amd turks     pre-retina  17"]
        [MBP  9,1 2012  intel IVB + nvidia GK107  pre-retina  15"]
    
    v3: Commit newly added due to introduction of drm_get_edid_switcheroo()
        wrapper which drivers need to opt-in to.
    
    v5: Rebase on "vga_switcheroo: Add handler flags infrastructure",
        i.e. call drm_get_edid_switcheroo() only if the handler
        indicates that DDC is switchable.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=88861
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61115Tested-by: default avatarLukas Wunner <lukas@wunner.de>
        [MBP  9,1 2012  intel IVB + nvidia GK107  pre-retina  15"]
    Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/bb095e14a2259be7fdd10092f9d6874a9be8f27b.1452525860.git.lukas@wunner.de
    4eddaeec
intel_lvds.c 33.6 KB