MdeModulePkg: implement generic PCI I/O driver for non-discoverable devices
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Mon, 31 Oct 2016 15:36:50 +0000 (15:36 +0000)
committerArd Biesheuvel <ard.biesheuvel@linaro.org>
Wed, 7 Dec 2016 09:45:56 +0000 (09:45 +0000)
commita42e6d448d1777dd948de699dd7037ea701987b7
tree3793db0bae420db7a34793f8d904e24b061372d1
parent1652dc2158de59483788cff6e06169bcf66643f5
MdeModulePkg: implement generic PCI I/O driver for non-discoverable devices

This implements support for non-discoverable PCI compatible devices, i.e,
devices that are not on a PCI bus but that can be controlled by generic PCI
drivers in EDK2.

This is implemented as a UEFI driver, which means we take full advantage
of the UEFI driver model, and only instantiate those devices that are
necessary for booting.

Care is taken to deal with DMA addressing limitations: DMA mappings and
allocations are moved below 4 GB if the PCI driver has not informed us
that the device being driven is 64-bit DMA capable. DMA is implemented as
coherent, support for non-coherent DMA is implemented by a subsequent patch.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Tested-by: Marcin Wojtas <mw@semihalf.com>
MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/ComponentName.c [new file with mode: 0644]
MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.c [new file with mode: 0644]
MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf [new file with mode: 0644]
MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.c [new file with mode: 0644]
MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceIo.h [new file with mode: 0644]
MdeModulePkg/MdeModulePkg.dsc