21.1 ATA Host Controller Driver
An ATA host controller driver manages a ATA host controller and installs ATA
Pass Thru Protocol and the Extended SCSI Pass Thru Protocol. See the ATA Pass
Thru Protocol section of the UEFI Specification for details about
EFI_ATA_PASS_THRU_PROTOCOL
and EFI_EXT_SCSI_PASS_THRU_PROTOCOL
. Guidelines
for the Extended SCSI Pass Thru Protocol are covered in Chapter 20. The rest
of this section focuses on the ATA Pass Thru Protocol.
An ATA host controller driver is a device driver that follows the UEFI driver model. Typically, ATA host controller drivers are chip-specific because of the requirement to initialize and manage the currently bound ATA host controller. Because there may be multiple ATA host adapters in a platform that may be managed by a single ATA host controller driver, it is recommended that the ATA host controller driver be designed to be re-entrant and allocate a different private context data structure for each ATA host controller.
An ATA host controller driver performs the following:
- Install the ATA Pass Thru Protocol onto the controller handle for the ATA host controller.
- Install Extended SCSI Pass Thru Protocol onto the controller handle for the SCSI host controller.
The platform firmware typically provides the ATA Bus Driver that completes the ATA driver stack by performing the following actions:
- Use the services of the ATA Pass Thru Protocol to scan for ATA targets connected to the ATA host controller and create child handles.
- Install Device Path Protocol to each child handle.
- Install Block I/O Protocol on each child handle.
- Install Block I/O 2 Protocol on each child handle.
- If the hard drive supports the SPC-4 or ATA8-ACS command set, then install the Storage Security Command Protocol the child handle.