kernel_optimize_test/drivers/thunderbolt
Lukas Wunner 19bf4d4f90 thunderbolt: Support 1st gen Light Ridge controller
Add support for the 1st gen Light Ridge controller, which is built into
these systems:

  iMac12,1       2011  21.5"
  iMac12,2       2011  27"
  Macmini5,1     2011  i5 2.3 GHz
  Macmini5,2     2011  i5 2.5 GHz
  Macmini5,3     2011  i7 2.0 GHz
  MacBookPro8,1  2011  13"
  MacBookPro8,2  2011  15"
  MacBookPro8,3  2011  17"
  MacBookPro9,1  2012  15"
  MacBookPro9,2  2012  13"

Light Ridge (CV82524) was the very first copper Thunderbolt controller,
introduced 2010 alongside its fiber-optic cousin Light Peak (CVL2510).
Consequently the chip suffers from some teething troubles:

  - MSI is broken for hotplug signaling on the downstream bridges: The chip
    just never sends an interrupt.  It requests 32 MSIs for each of its six
    bridges and the pcieport driver only allocates one per bridge.  However
    I've verified that even if 32 MSIs are allocated there's no interrupt
    on hotplug.  The only option is thus to disable MSI, which is also what
    OS X does.  Apparently all Thunderbolt chips up to revision 1 of Cactus
    Ridge 4C are plagued by this issue so quirk those as well.

  - The chip supports a maximum hop_count of 32, unlike its successors
    which support only 12.  Fixup ring_interrupt_active() to cope with
    values >= 32.

  - Another peculiarity is that the chip supports a maximum of 13 ports
    whereas its successors support 12.  However the additional port (#5)
    seems to be unusable as reading its TB_CFG_PORT config space results in
    TB_CFG_ERROR_INVALID_CONFIG_SPACE.  Add a quirk to mark the port
    disabled on the root switch, assuming that's necessary on all Macs
    using this chip.

Tested-by: Lukas Wunner <lukas@wunner.de> [MacBookPro9,1]
Tested-by: William Brown <william@blackhats.net.au> [MacBookPro8,2]
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Andreas Noever <andreas.noever@gmail.com>
2016-04-08 11:13:40 -05:00
..
cap.c thunderbolt: Add thunderbolt capability handling 2014-06-19 14:07:47 -07:00
ctl.c thunderbolt: Fix typos and magic number 2016-04-08 11:09:34 -05:00
ctl.h
eeprom.c thunderbolt: Support 1st gen Light Ridge controller 2016-04-08 11:13:40 -05:00
Kconfig thunderbolt: select CRC32 in Kconfig 2014-06-21 13:12:35 -07:00
Makefile thunderbolt: Read switch uid from EEPROM 2014-06-19 14:13:00 -07:00
nhi_regs.h
nhi.c thunderbolt: Support 1st gen Light Ridge controller 2016-04-08 11:13:40 -05:00
nhi.h
path.c thunderbolt: Clear hops before overwriting 2014-08-26 14:54:48 -07:00
switch.c thunderbolt: Support 1st gen Light Ridge controller 2016-04-08 11:13:40 -05:00
tb_regs.h thunderbolt: Fix typos and magic number 2016-04-08 11:09:34 -05:00
tb.c thunderbolt: Fix typos and magic number 2016-04-08 11:09:34 -05:00
tb.h thunderbolt: Fix typos and magic number 2016-04-08 11:09:34 -05:00
tunnel_pci.c thunderbolt: Add support for simple pci tunnels 2014-06-19 14:07:47 -07:00
tunnel_pci.h thunderbolt: Add support for simple pci tunnels 2014-06-19 14:07:47 -07:00