PCI drivers use the services of the EFI_PCI_IO_PROTOCOL
to produce one or more protocols providing I/O abstractions for a PCI controller. PCI drivers follow the UEFI driver model, so they may be any of the following:
Device drivers
Bus drivers
Hybrid drivers
PCI drivers for graphics controllers are typically device drivers that consume the EFI_PCI_IO_PROTOCOL
and produce the EFI_GRAPHICS_OUTPUT_PROTOCOL
. The PCI drivers for USB host controllers are typically device drivers that consume the EFI_PCI_IO_PROTOCOL
and produce the EFI_USB_HOST_CONTROLLER_PROTOCOL
.
The PCI drivers for disk controllers are typically bus drivers or hybrid drivers that consume the EFI_PCI_IO_PROTOCOL
and EFI_DEVICE_PATH_PROTOCOL
and produce child handles with the EFI_DEVICE_PATH_PROTOCOL
and EFI_BLOCK_IO_PROTOCOL
.
PCI drivers for disk controllers using the SCSI command set typically produce the EFI_EXT_SCSI_PASS_THRU_PROTOCOL
for each SCSI channel the disk controller produces.
Chapter 20 covers details on SCSI drivers.