18.3 PCI drivers

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.