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 DocBook: fix various typos 2014-07-12 11:30:36 -07:00
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 locking/Documentation: Move locking related docs into Documentation/locking/ 2014-08-13 10:32:03 +02:00
kgdb.tmpl KGDB/KDB New: 2015-02-20 15:13:29 -08:00
libata.tmpl DocBook: fix various typos 2014-07-12 11:30:36 -07:00
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 DocBook: fix mtdnand typos 2014-07-12 11:30:36 -07:00
networking.tmpl docbook: networking: fix file paths for uapi headers 2012-10-15 08:04:41 -07:00
rapidio.tmpl
regulator.tmpl DocBook: fix various typos 2014-07-12 11:30:36 -07:00
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 usb: hub: rename khubd to hub_wq in documentation and comments 2014-09-23 22:33:19 -07:00
w1.tmpl w1: format for DocBook and fixes 2014-02-07 15:40:18 -08:00
writing_musb_glue_layer.tmpl documentation: docbook: document process of writing an musb glue layer 2014-05-12 12:34:47 -05:00
writing_usb_driver.tmpl doc: fix misspellings with 'codespell' tool 2013-05-28 12:02:12 +02:00
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
z8530book.tmpl