linux/Documentation/DocBook
Lukas Wunner 3d7b75fdae apple-gmux: Add initial documentation
Document what I've learned so far about the gmux so that we can
collaboratively reverse-engineer its remaining unknown bits
without everyone having to start from scratch.

The DOC sections are bound together in the gpu.tmpl DocBook
under a new vga_switcheroo "Handlers" chapter. Eventually
this should be amended with documentation about the four other
handlers that exist so far (nouveau v1 DSM, nouveau Optimus DSM,
radeon ATPX, amdgpu ATPX).

Requires kernel-doc with asciidoc support.

The EFI variable was reverse-engineered by Bruno Bierbaumer
<bruno@bierbaumer.net> and Andreas Heider <andreas@meetr.de>.

Some of the remaining open questions:

* How are vblank intervals synchronized on retinas to achieve seamless
  switching? Is the DP mux capable of this? It's not mentioned in the
  data sheets. Or is it done at the OS level, i.e. do we have to
  synchronize vblank intervals between DRM drivers? There's a signal
  coming from the panel connector and going into gmux, could this be
  the vblank signal as received by the panel to properly time the
  switch?

* On retinas there's an I2C bus between gmux and the connector of the
  right I/O board, apparently leading to the Parade PS8401A HDMI
  repeater. What is this for, is it controlled via gmux registers?
  Data sheet:
  http://www.paradetech.com/products/jitter-cleaning-repeaters/ps8401/

* On retinas there's an I2C bus between gmux and the LED driver.
  Pre-retinas connected the LED driver to SMBUS. Are there additional
  gmux registers on retinas to control it?

* The MacPro6,1 2013 also has a gmux, the same Renesas R4F2113 as the
  retina MacBook Pro. The Mac Pro doesn't have a built-in display,
  so what is its purpose? Power control of the dual FirePro GPUs?
  Switching of the external DP/Thunderbolt ports? The iFixit teardown
  clearly shows one TI HD3SS212 DisplayPort mux on the logic board next
  to one of the three Thunderbolt controllers. However six muxes would
  be necessary to switch all six ports between GPUs. The mux is probably
  necessary for one of the display configurations allowed by Apple,
  but which one?
  https://www.ifixit.com/Teardown/Mac+Pro+Late+2013+Teardown/20778
  https://d3nevzfk7ii3be.cloudfront.net/igi/fELBTnt31QhnDsqq.huge
  https://support.apple.com/en-us/HT202801

* Registers we haven't decoded yet:
  0x700 32 Bit configmap?
  0x708 32 Bit power sequence?
  0x712  8 Bit status of clock from panel on retinas?
  0x713  8 Bit dito?
  0x724 16 Bit backlight, raw value?
  0x760 32 Bit backlight
  0x764 32 Bit backlight
  0x768  8 Bit backlight
  0x76a 16 Bit backlight
  0x76c 16 Bit backlight
  0x76e 16 Bit backlight
  0x77f        edp/dp/hdmi probe? retina only.

* Addition by Bruno Prémont <bonbons@linux-vserver.org>:
  "Missing is also precise knowledge as to what the gmux depends on.
  From behavioral reports, it is somehow sensitive to VGA IO/MEM
  routing (it apparently needs the routing to go to integrated GPU,
  not discrete GPU).
  When the routing is inappropriate backlight control IO just reads back
  as 0xFF (and eventually gmux IO in general does so)."

Signed-off-by: Lukas Wunner <lukas@wunner.de>
Acked-by: Darren Hart <dvhart@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/da309e436fbeac886477d80376457b7d83ea4b2d.1452431795.git.lukas@wunner.de
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2016-01-11 15:56:23 +01:00
..
media [media] DocBook media: update copyright/version numbers 2015-10-20 15:59:30 -02:00
.gitignore Docs/DocBook: Add .db files to .gitignore 2015-09-13 14:38:50 -06:00
80211.tmpl nl80211: allow BSS data to include CLOCK_BOOTTIME timestamp 2015-10-13 10:32:17 +02:00
alsa-driver-api.tmpl ALSA: DocBook: Add soc-ops.c and soc-compress.c 2015-10-28 12:37:50 +01:00
crypto-API.tmpl crypto: doc - make URL into hyperlink 2015-08-10 23:19:06 +08:00
debugobjects.tmpl
device-drivers.tmpl [media] DocBook: Add documentation about the demux API 2015-10-10 10:29:08 -03:00
deviceiobook.tmpl
filesystems.tmpl doc: Update doc about journalling layer 2015-07-23 20:59:39 +02:00
gadget.tmpl Revert "DocBook: Avoid building man pages repeatedly and inconsistently" 2015-08-06 12:44:44 -06:00
genericirq.tmpl
gpu.tmpl apple-gmux: Add initial documentation 2016-01-11 15:56:23 +01:00
iio.tmpl iio: Move generic buffer implementations to sub-directory 2015-08-16 10:51:21 +01:00
kernel-api.tmpl Revert "DocBook: Avoid building man pages repeatedly and inconsistently" 2015-08-06 12:44:44 -06:00
kernel-hacking.tmpl Documentation: extend use case for EXPORT_SYMBOL_GPL() 2015-06-05 07:39:46 +09:00
kernel-locking.tmpl
kgdb.tmpl KGDB/KDB New: 2015-02-20 15:13:29 -08:00
libata.tmpl
librs.tmpl
lsm.tmpl
Makefile Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
media_api.tmpl [media] DocBook media: update copyright/version numbers 2015-10-20 15:59:30 -02:00
mtdnand.tmpl
networking.tmpl
rapidio.tmpl
regulator.tmpl
s390-drivers.tmpl
scsi.tmpl Doc: Docbook: Change wikipedia's URL from http to https in scsi.tmpl 2015-06-22 10:29:32 -06:00
sh.tmpl
stylesheet.xsl DocBook: Generate consistent IDs 2015-07-10 11:03:16 -06:00
tracepoint.tmpl
uio-howto.tmpl pdfdocs: Fix 'make pdfdocs' failure for 'uio-howto.tmpl' 2015-02-03 15:48:51 -08:00
usb.tmpl
w1.tmpl
writing-an-alsa-driver.tmpl ALSA: Remove transfer_ack_{begin,end} callbacks from struct snd_pcm_runtime 2015-10-22 17:16:23 +02:00
writing_musb_glue_layer.tmpl
writing_usb_driver.tmpl
z8530book.tmpl