[PATCH 0/7] Fixes for hybrid graphics Apple machines

From: Seth Forshee
Date: Fri Sep 07 2012 - 11:24:23 EST


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(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/