On Fri, Sep 7, 2012 at 4:22 PM, Seth Forshee seth.forshee@canonical.com wrote:
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.
I hate this idea, no delaying stuff. We either need to have some sort of enforced ordering or make some stuff only work built-in.
But sticking things on a delayed list just in case seems wrong to me.
Dave.