The SiI isn't an AHCI compatible adapter so it implements the EFI ATA pass-through protocol directly. This works for fixed hard drives, but not ATAPI attached devices (CDROM, DVDROM, TAPE, etc).
This patch adds read only ATAPI support via the EFI SCSI pass-through protocol, allowing boot from attached CD/DVD. This patch also cleans up, and tweaks recovery paths/etc in the original driver. When combined with the ARM/PCI dma lib changes this allows us to relax the IO alignment requirement that caused grub failures.
Finally, the OpenPlatformPkg/Juno must be updated, with another patch to avoid build breaks now that the SiI has a dependency on the SCSI libraries.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jeremy Linton jeremy.linton@arm.com
Jeremy Linton (7): MdePkg IndustryStandard/Scsi.h: Add sense code macro EmbeddedPkg: SiI3132: Add ScsiProtocol callbacks EmbeddedPkg: SiI3132: Add SCSI protocol support to header EmbeddedPkg: SiI3132: Break out FIS command submission EmbeddedPkg: SiI3132: Cleanup device node creation EmbeddedPkg: SiI3132: Enable SCSI pass-through protocol EmbeddedPkg: SiI3132: Correct the IoAlign
EmbeddedPkg/Drivers/SataSiI3132Dxe/SataSiI3132.c | 48 ++- EmbeddedPkg/Drivers/SataSiI3132Dxe/SataSiI3132.h | 89 ++++- .../Drivers/SataSiI3132Dxe/SataSiI3132Dxe.inf | 2 + .../Drivers/SataSiI3132Dxe/SiI3132AtaPassThru.c | 270 ++++++++------ .../Drivers/SataSiI3132Dxe/SiI3132ScsiPassThru.c | 401 +++++++++++++++++++++ MdePkg/Include/IndustryStandard/Scsi.h | 2 + OpenPlatformPkg | 2 +- 7 files changed, 688 insertions(+), 126 deletions(-) create mode 100644 EmbeddedPkg/Drivers/SataSiI3132Dxe/SiI3132ScsiPassThru.c