On Wed, Oct 24, 2012 at 09:51:15PM +0800, Daniel J Blueman wrote: > >> > Is there a way to trigger re-enumeration of the panels after I > >> > switcheroo to i915? > >> > > >> > I'm checking with Seth if the mux could be the issue, though the code > >> > shows there would be an error message if switching failed. > >> > >> Iirc Dave Airlie has patches to delay the driver init until the mux code > >> is all set up, so that the driver could request the mux to be switched > >> while init is ongoing. > > > > Actually those were my patches, which Dave rejected. I haven't had the > > time yet to try and find yet another way of getting switcheroo to work > > on these machines. > > Generally, this sounds like a needed approach so we can boot with eg > video=igd (or module options to the same effect) in case we need to > avoid certain userspace issues. Some approach is needed. The following are the challenges we're facing as I understand them. 1. It looks like DRM seems to expect drivers to enumerate all possible connectors during initialization. So i915 can't say there's no eDP or LVDS connector during initialization and later add one. 2. Macs generally don't supply a VBT for the integrated GPU, and sometimes when they do the informaton in the VBT is incorrect, so i915 can't reliably determine whether or not the machine should have LVDS or eDP if the mux is switched to the DGPU at boot. 3. In order to switch the mux while i915 is initializing we need to ensure that the switcheroo handler is registered before this happens. Since the mux in this case is in a completely separate driver there's no obvious way of making this happen. Also, I'm not really familiar at all with DisplayPort. The solution of switching the mux during driver initialization assumes that we really only need to switch the i2c lines. If eDP requires also switching the display signals then that's obviously going to present a problem. One way that I know can be made to work for LVDS is to add quirks for each specific machine to supply the mode information. This has the downside of requiring that new machines be quirked before switcheroo will work, and I'm again uncertain of the viability of this solution for eDP. If anyone has suggestions, I'm all ears. Seth