Many hybrid graphics Apple laptops fail to set up LVDS on the secondary GPU due to missing or incorrect mode information for the panel at init time. The only way to get the LVDS mode on these machines is via the DDC, but this is muxed to the active GPU at boot. However, the graphics mux on these machines supports muxing the i2c idependently of the display, making it possible for the secondary graphics driver to read the EDID without a full display switch. In order to support this, these patches modify vga_switcheroo to allow muxing of the DDC idependently of the display. apple-gmux is updated to support this new functionality, and drm_get_edid() is modified to switch the DDC mux as needed. For this to work we also need to ensure that sufficient switcheroo suport is available before initializing the secondary GPU. This is done by adding any non-active GPUs that try to initialize before switcheroo is ready to a list and initializing these devices once switcheroo becomes ready. This behavior is restricted to Apple laptops to prevent causing problems on other machines. Thanks, Seth Seth Forshee (7): vga_switcheroo: Add support for switching only the DDC vga_switcheroo: Add helper function to get the active client vga_switcheroo: Add notifier call chain for switcheroo events apple-gmux: Add switch_ddc support drm/edid: Switch DDC when reading the EDID drm/pci: Add drm_put_pci_dev() drm/pci: Defer initialization of secondary graphics devices until switcheroo is ready drivers/gpu/drm/ast/ast_drv.c | 2 +- drivers/gpu/drm/cirrus/cirrus_drv.c | 2 +- drivers/gpu/drm/drm_drv.c | 3 + drivers/gpu/drm/drm_edid.c | 17 ++++ drivers/gpu/drm/drm_pci.c | 172 +++++++++++++++++++++++++++++---- drivers/gpu/drm/gma500/psb_drv.c | 2 +- drivers/gpu/drm/i915/i915_drv.c | 2 +- drivers/gpu/drm/mgag200/mgag200_drv.c | 2 +- drivers/gpu/drm/nouveau/nouveau_drv.c | 2 +- drivers/gpu/drm/radeon/radeon_drv.c | 2 +- drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 2 +- drivers/gpu/vga/vga_switcheroo.c | 87 ++++++++++++++++- drivers/platform/x86/apple-gmux.c | 12 ++- include/drm/drmP.h | 3 + include/linux/vga_switcheroo.h | 20 ++++ 15 files changed, 302 insertions(+), 28 deletions(-) _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel