PCI: al: Add Amazon Annapurna Labs PCIe host controller driver
authorJonathan Chocron <jonnyc@amazon.com>
Thu, 28 Mar 2019 11:57:56 +0000 (13:57 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 25 Apr 2019 21:33:07 +0000 (16:33 -0500)
commit4166bfe53093b687a0b1b22e5d943e143b8089b2
tree00bf187722c7810ff0bb113e929d6e8bdc9ee6e6
parent9e98c678c2d6ae3a17cb2de55d17f69dddaa231b
PCI: al: Add Amazon Annapurna Labs PCIe host controller driver

Add driver for Amazon's Annapurna Labs PCIe host controller.  The
controller is based on DesignWare's IP.

The controller doesn't support accessing the Root Port's config space via
ECAM, so we obtain its base address via an AMZN0001 device.

Furthermore, the DesignWare PCIe controller doesn't filter out config
transactions sent to devices 1 and up on its bus, so they are filtered by
the driver.

All subordinate buses do support ECAM access.

Implementing specific PCI config access functions involves:
 - Adding an init function to obtain the Root Port's base address from
   an AMZN0001 device.
 - Adding a new entry in the MCFG quirk array.

[bhelgaas: Note that there is no Kconfig option for this driver because it
is only intended for use with the generic ACPI host bridge driver.  This
driver is only needed because the DesignWare IP doesn't completely support
ECAM access to the root bus.]

Link: https://lore.kernel.org/lkml/1553774276-24675-1-git-send-email-jonnyc@amazon.com
Co-developed-by: Vladimir Aerov <vaerov@amazon.com>
Signed-off-by: Jonathan Chocron <jonnyc@amazon.com>
Signed-off-by: Vladimir Aerov <vaerov@amazon.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
MAINTAINERS
drivers/acpi/pci_mcfg.c
drivers/pci/controller/dwc/Makefile
drivers/pci/controller/dwc/pcie-al.c [new file with mode: 0644]
include/linux/pci-ecam.h