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.