1
0
Fork 0
alistair23-linux/drivers/platform/x86
Lukas Wunner f798d96528 apple-gmux: Add switch_ddc support
Originally by Seth Forshee <seth.forshee@canonical.com>, 2012-10-04:
    The gmux allows muxing the DDC independently from the display, so
    support this functionality. This will allow reading the EDID for the
    inactive GPU, fixing issues with machines that either don't have a
    VBT or have invalid mode data in the VBT.

Modified by Lukas Wunner <lukas@wunner.de>, 2015-04 - 2015-12:
    Change semantics of ->switch_ddc handler callback to return previous
    DDC owner. Original version tried to determine previous DDC owner
    with find_active_client() in vga_switcheroo but this fails if the
    inactive client registers before the active client.

    v2.4: Retain semantics of ->switchto handler callback to switch all
          pins, including DDC (Daniel Vetter)

    v4:   Advertise ->switch_ddc handler callback only on the pre-retina
          Macbook Pro. The retina uses eDP instead of LVDS and gmux no
          longer does the muxing itself but merely controls an external
          mux. That mux is incapable of switching the AUX channel
          separately from the main link. It's an NXP CBTL06142
          (alternate parts: TI HD3SS212, Pericom PI3VDP12412,
          see datasheets below).

    v5:   Rebase on "apple-gmux: Track switch state".
          Rebase on "vga_switcheroo: Add handler flags infrastructure".
          Rebase on 5d170139eb ("Constify vga_switcheroo_handler"),
          requires 2 structs, 1x with ->switchto for pre-retinas,
          1x without for retinas).
          Add error message if handler registration with vga_switcheroo
          fails.

    Teardowns identifying the mux:
    http://www.electronicproducts.com/-whatsinside_text-145.aspx
    http://slideshare.net/jjwu6266/apple-2012-wwdc-apple-macbook-pro-with-retina-display
    http://www.techrepublic.com/blog/cracking-open/teardown-shows-retina-macbook-pro-is-nearly-impossible-to-upgrade-difficult-to-work-on/

    Mux Datasheets:
    http://www.nxp.com/documents/data_sheet/CBTL06141.pdf
    http://www.ti.com/lit/ds/symlink/hd3ss212.pdf
    https://www.pericom.com/assets/Datasheets/PI3VDP12412.pdf

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=88861
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61115
Tested-by: Lukas Wunner <lukas@wunner.de>
    [MBP  9,1 2012  intel IVB + nvidia GK107  pre-retina  15"]
Cc: Seth Forshee <seth.forshee@canonical.com>
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Reviewed-by: Darren Hart <dvhart@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/17fe8bfb0415d713bb4174f84ac9aae5d7d9a5f8.1452525860.git.lukas@wunner.de
2016-02-09 11:21:08 +01:00
..
Kconfig surface pro 4: Add support for Surface Pro 4 Buttons 2016-01-19 17:35:52 -08:00
Makefile platform:x86: Add Intel Telemetry Debugfs interfaces 2016-01-19 17:35:51 -08:00
acer-wmi.c acer-wmi: remove threeg and interface sysfs interfaces 2015-10-06 23:38:08 +01:00
acerhdf.c thermal: consistently use int for temperatures 2015-08-03 23:15:50 +08:00
alienware-wmi.c platform: x86: drop owner assignment from platform_drivers 2014-10-20 16:21:27 +02:00
amilo-rfkill.c platform: x86: drop owner assignment from platform_drivers 2014-10-20 16:21:27 +02:00
apple-gmux.c apple-gmux: Add switch_ddc support 2016-02-09 11:21:08 +01:00
asus-laptop.c asus-laptop: Add key found on Asus F3M 2015-08-10 21:24:23 -07:00
asus-nb-wmi.c asus-nb-wmi: Add wapf=4 quirk for X456UA/X456UF 2015-09-06 10:44:48 -07:00
asus-wireless.c asus-wireless: Add ACPI HID ATK4001 2016-01-19 17:35:46 -08:00
asus-wmi.c asus-wmi: drop to_platform_driver macro 2016-01-19 17:35:45 -08:00
asus-wmi.h asus-wmi: always report brightness key events 2013-02-27 08:30:37 -05:00
classmate-laptop.c classmate-laptop: Fix sparse warning (0 as NULL) 2015-02-07 12:12:00 -08:00
compal-laptop.c compal-laptop: Add charge control limit 2015-10-03 08:44:57 -07:00
dell-laptop.c dell-laptop: Do not cache hwswitch state 2015-07-06 15:35:23 -07:00
dell-rbtn.c dell-rbtn: Export notifier for other kernel modules 2015-06-10 22:04:11 -07:00
dell-rbtn.h dell-rbtn: Export notifier for other kernel modules 2015-06-10 22:04:11 -07:00
dell-smo8800.c dell-smo8800: Add more ACPI ids and change description of driver 2014-12-03 10:10:19 -08:00
dell-wmi-aio.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
dell-wmi.c platform-drivers-x86 for 4.5-1 2016-01-19 17:54:15 -08:00
eeepc-laptop.c eeepc-laptop: Port to new backlight interface selection API 2015-06-19 01:11:56 +02:00
eeepc-wmi.c eeepc-wmi: Constify asus_quirks[] DMI table 2014-08-16 01:23:52 -07:00
fujitsu-laptop.c fujitsu-laptop: Port to new backlight interface selection API 2015-06-19 01:12:01 +02:00
fujitsu-tablet.c Input: use more descriptive KEY_ROTATE_DISPLAY instead of KEY_DIRECTION 2015-03-06 17:18:16 -08:00
hdaps.c platform: x86: drop owner assignment from platform_drivers 2014-10-20 16:21:27 +02:00
hp-wireless.c hp-wireless: remove unneeded goto/label in hpwl_init 2015-08-25 23:34:15 -07:00
hp-wmi.c hp-wmi: limit hotkey enable 2015-09-17 18:14:11 -07:00
hp_accel.c hp_accel: Add support for HP ZBook 15 2014-12-03 10:10:12 -08:00
ibm_rtl.c move io-64-nonatomic*.h out of asm-generic 2015-10-15 00:21:07 +02:00
ideapad-laptop.c ideapad-laptop: Add Lenovo Yoga 700 to no_hw_rfkill dmi list 2016-01-24 10:15:01 -08:00
intel-hid.c intel-hid: new hid event driver for hotkeys 2016-01-19 17:35:36 -08:00
intel-rst.c intel-rst: Clean up ACPI add function 2014-09-17 13:55:54 -07:00
intel-smartconnect.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
intel_ips.c move io-64-nonatomic*.h out of asm-generic 2015-10-15 00:21:07 +02:00
intel_ips.h drm/i915, intel_ips: When i915 loads after IPS, make IPS relink to i915. 2010-12-23 09:51:36 +00:00
intel_menlow.c linux/thermal.h: rename KELVIN_TO_CELSIUS to DECI_KELVIN_TO_CELSIUS 2015-10-10 11:32:30 +08:00
intel_mid_powerbtn.c intel_mid_powerbtn: Remove misuse of IRQF_NO_SUSPEND flag 2015-10-03 09:40:30 -07:00
intel_mid_thermal.c thermal: consistently use int for temperatures 2015-08-03 23:15:50 +08:00
intel_oaktrail.c intel-oaktrail: Port to new backlight interface selection API 2015-06-19 01:12:11 +02:00
intel_pmc_ipc.c platform:x86: Add Intel telemetry platform device 2016-01-19 17:35:51 -08:00
intel_pmic_gpio.c gpio: change member .dev to .parent 2015-11-19 09:24:35 +01:00
intel_punit_ipc.c intel_punit_ipc: add NULL check for input parameters 2016-01-19 17:35:49 -08:00
intel_scu_ipc.c intel_scu_ipc: Protect dev member assignment on ->remove() 2015-10-15 08:23:30 -07:00
intel_scu_ipcutil.c intel_scu_ipc: Remove Moorestown support 2012-03-20 12:02:02 -04:00
intel_telemetry_core.c platform/x86: Add Intel Telemetry Core Driver 2016-01-19 17:35:50 -08:00
intel_telemetry_debugfs.c intel_telemetry_debugfs: Fix unused warnings in telemetry debugfs 2016-01-24 10:14:53 -08:00
intel_telemetry_pltdrv.c platform:x86: Add Intel telemetry platform driver 2016-01-19 17:35:50 -08:00
msi-laptop.c msi-laptop: Port to new backlight interface selection API 2015-06-19 01:12:16 +02:00
msi-wmi.c msi-wmi: Port to new backlight interface selection API 2015-06-19 01:12:20 +02:00
mxm-wmi.c Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86 2014-01-29 18:54:05 -08:00
panasonic-laptop.c Fix sleep / suspend keys for Toughbook CF-51 2014-04-06 12:58:11 -04:00
pvpanic.c pvpanic: handle missing _STA correctly 2015-06-07 21:30:12 -07:00
samsung-laptop.c samsung-laptop: Port to new backlight interface selection API 2015-06-19 01:12:25 +02:00
samsung-q10.c platform: x86: drop owner assignment from platform_drivers 2014-10-20 16:21:27 +02:00
sony-laptop.c Keyboard backlight control for some Vaio Fit models 2016-01-19 15:49:37 -08:00
surfacepro3_button.c surface pro 4: fix compare_const_fl.cocci warnings 2016-01-19 17:35:52 -08:00
tc1100-wmi.c tc1100-wmi: fix build warning when CONFIG_PM not enabled 2016-01-19 17:35:47 -08:00
thinkpad_acpi.c More power management and ACPI updates for v4.5-rc1 2016-01-20 19:06:49 -08:00
topstar-laptop.c platform:x86: Remove OOM message after input_allocate_device 2013-11-20 18:51:03 -05:00
toshiba-wmi.c platform/x86: Toshiba WMI Hotkey Driver 2015-10-03 10:07:08 -07:00
toshiba_acpi.c toshiba_acpi: Fix keyboard backlight sysfs entries not being updated 2016-01-19 15:49:21 -08:00
toshiba_bluetooth.c toshiba_bluetooth: Add missing newline in toshiba_bluetooth_present function 2015-11-20 15:20:08 -08:00
toshiba_haps.c toshiba_haps: Make use of DEVICE_ATTR_{RW, WO} macros 2015-05-11 10:38:22 -07:00
wmi.c wmi: Remove private %pUL implementation 2015-09-10 09:07:04 -07:00
xo1-rfkill.c platform: x86: drop owner assignment from platform_drivers 2014-10-20 16:21:27 +02:00
xo15-ebook.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00