[PATCH v5 00/15] Thunderbolt driver for Apple MacBooks

Andreas Noever
2014-06-03T20:04:40Z

Hi,

Updated version of the driver. Includes changes by Matthew to make it work on
Falcon Ridge hardware (present in the newest Mac(Book)Pro).

Changes since v4 (suggested by Matthew):
- Changed the PCI quirks to check just for Apple hardware instead of checking
against a list of machines. (The PCI id check already restricts this quirk
to the relevant Apple machines).
- Added Falcon Ridge PCI id to the driver and to the "wait_for_thunderbolt"
quirk (the "poweroff_thunderbolt" quirk is no longer necessary for Falcon
Ridge devices).
- Fixed plug events for Falcon Ridge hardware.

@Matthew: I think that your patch was missing the Falcon Ridge PCI id within
the wait_for_thunderbolt quirk (I have added it). If you have time could you
verify that suspend/resume works on your MacPro? Thanks!

As before Matthew's ACPI changes (latest version: [1]) are required for this to
work properly. Without them you need to boot with a coldplugged TB device to
prevent the firmware from disabling the controller.

Thanks,
Andreas

[1]: https://lkml.org/lkml/2014/6/1/165

Andreas Noever (15):
thunderbolt: Add initial cactus ridge NHI support
thunderbolt: Add control channel interface
thunderbolt: Setup control channel
thunderbolt: Add tb_regs.h
thunderbolt: Initialize root switch and ports
thunderbolt: Add thunderbolt capability handling
thunderbolt: Enable plug events
thunderbolt: Scan for downstream switches
thunderbolt: Handle hotplug events
thunderbolt: Add path setup code.
thunderbolt: Add support for simple pci tunnels
PCI: Add pci_fixup_suspend_late quirk pass
PCI: Suspend/resume quirks for Apple thunderbolt
thunderbolt: Read switch uid from EEPROM
thunderbolt: Add suspend/hibernate support

drivers/Kconfig | 2 +
drivers/Makefile | 1 +
drivers/pci/pci-driver.c | 18 +-
drivers/pci/quirks.c | 104 ++++++
drivers/thunderbolt/Kconfig | 12 +
drivers/thunderbolt/Makefile | 3 +
drivers/thunderbolt/cap.c | 116 ++++++
drivers/thunderbolt/ctl.c | 731 ++++++++++++++++++++++++++++++++++++++
drivers/thunderbolt/ctl.h | 75 ++++
drivers/thunderbolt/eeprom.c | 189 ++++++++++
drivers/thunderbolt/nhi.c | 677 +++++++++++++++++++++++++++++++++++
drivers/thunderbolt/nhi.h | 114 ++++++
drivers/thunderbolt/nhi_regs.h | 101 ++++++
drivers/thunderbolt/path.c | 215 +++++++++++
drivers/thunderbolt/switch.c | 498 ++++++++++++++++++++++++++
drivers/thunderbolt/tb.c | 431 ++++++++++++++++++++++
drivers/thunderbolt/tb.h | 266 ++++++++++++++
drivers/thunderbolt/tb_regs.h | 213 +++++++++++
drivers/thunderbolt/tunnel_pci.c | 232 ++++++++++++
drivers/thunderbolt/tunnel_pci.h | 30 ++
include/asm-generic/vmlinux.lds.h | 3 +
include/linux/pci.h | 12 +-
22 files changed, 4038 insertions(+), 5 deletions(-)
create mode 100644 drivers/thunderbolt/Kconfig
create mode 100644 drivers/thunderbolt/Makefile
create mode 100644 drivers/thunderbolt/cap.c
create mode 100644 drivers/thunderbolt/ctl.c
create mode 100644 drivers/thunderbolt/ctl.h
create mode 100644 drivers/thunderbolt/eeprom.c
create mode 100644 drivers/thunderbolt/nhi.c
create mode 100644 drivers/thunderbolt/nhi.h
create mode 100644 drivers/thunderbolt/nhi_regs.h
create mode 100644 drivers/thunderbolt/path.c
create mode 100644 drivers/thunderbolt/switch.c
create mode 100644 drivers/thunderbolt/tb.c
create mode 100644 drivers/thunderbolt/tb.h
create mode 100644 drivers/thunderbolt/tb_regs.h
create mode 100644 drivers/thunderbolt/tunnel_pci.c
create mode 100644 drivers/thunderbolt/tunnel_pci.h

--
2.0.0