On Mon, Jan 11, 2016 at 08:09:20PM +0100, Lukas Wunner wrote: > Enable GPU switching on the pre-retina MacBook Pro (2008 - 2013), v5. > > The main obstacle on these machines is that the panel mode in VBIOS > is bogus. Fortunately gmux can switch DDC independently from the > display, thereby allowing the inactive GPU to probe the panel's EDID. > > In short, vga_switcheroo and apple-gmux are amended with hooks to > switch DDC, DRM core is amended with a drm_get_edid_switcheroo() helper, > and relevant drivers are amended to call that for LVDS outputs. > > The retina MacBook Pro (2012 - present) uses eDP and cannot switch > AUX independently from the main link. The main obstacle there is link > training, I'm currently working on this, it will be addressed in a > future patch set. > > This series is also reviewable on GitHub: > https://github.com/l1k/linux/commits/mbp_switcheroo_v5 > > Changes: > > * New patch [01/12]: vga_switcheroo handler flags > Alex Deucher asked if this series might regress on non-Apple laptops. > To address this concern, I let handlers declare their capabilities in > a bitmask. DRM drivers call drm_get_edid_switcheroo() only if the > handler has set the VGA_SWITCHEROO_CAN_SWITCH_DDC flag. > Currently just one other flag is defined which is used on retinas. > > * Changed patch [02/12]: vga_switcheroo DDC locking > Rename ddc_lock to mux_hw_lock, suggested by Daniel Vetter. > > * New patch [03/12]: track switch state of apple-gmux > Fixes a bug in previous versions of this series which occurred if > the system was suspended while DDC was temporarily switched: > On resume DDC was switched to the wrong GPU. > > * New patches [09/12 - 12/12]: deferred probing > Previously I used connector reprobing if the inactive GPU's driver > loaded before gmux. I've ditched that in favor of deferred driver > probing, which is much simpler. Thanks to Daniel Vetter for the > suggestion. > > Caution: Patch [09/12] depends on a new acpi_dev_present() API which > will land in 4.5 via Rafael J. Wysocki's tree. > > I would particularly be interested in feedback on the handler flags > patch [01/12]. I'm not 100% happy with the number of characters > required to query the flags (e.g.: if (vga_switcheroo_handler_flags() & > VGA_SWITCHEROO_CAN_SWITCH_DDC)), but failed to come up with something > shorter. Thierry Reding used a struct of bools instead of a bitmask > for his recent drm_dp_link_caps patches. Maybe use that instead? > http://lists.freedesktop.org/archives/dri-devel/2015-December/097025.html No objection from the platform-driver-x86 side. I can pull these separately once the core is in, or these can be included with that core (preferred) with my Reviewed-by for 1, 3, 4, and 9. Reviewed-by: Darren Hart <dvhart@xxxxxxxxxxxxxxx> -- Darren Hart Intel Open Source Technology Center _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel