mirror of
https://git.proxmox.com/git/mirror_edk2
synced 2026-02-01 15:16:06 +00:00
This may cause side effects if disk does not support UDMA mode and also let bad performance. The modification is to record supported mode and only try supported mode when do disk read/write. Also this patch combines the code for read/readex/write/writex to reduce code size. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2412 6f19259b-4bc3-4df7-8a09-765794883524
1329 lines
28 KiB
C
1329 lines
28 KiB
C
/** @file
|
|
Header file for IDE Bus Driver, containing the helper functions'
|
|
entire prototype.
|
|
|
|
Copyright (c) 2006, Intel Corporation
|
|
All rights reserved. This program and the accompanying materials
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
which accompanies this distribution. The full text of the license may be found at
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
@par Revision Reference:
|
|
2002-6: Add Atapi6 enhancement, support >120GB hard disk, including
|
|
Add - IDEBlkIoReadBlocksExt() func definition
|
|
Add - IDEBlkIoWriteBlocksExt() func definition
|
|
|
|
**/
|
|
|
|
#ifndef _IDE_H
|
|
#define _IDE_H
|
|
|
|
//
|
|
// Helper functions Prototype
|
|
//
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param This TODO: add argument description
|
|
@param Controller TODO: add argument description
|
|
@param Handle TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
DeRegisterIdeDevice (
|
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
|
IN EFI_HANDLE Controller,
|
|
IN EFI_HANDLE Handle
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param Controller TODO: add argument description
|
|
@param PciIo TODO: add argument description
|
|
@param ParentDevicePath TODO: add argument description
|
|
@param RemainingDevicePath TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EnableIdeDevice (
|
|
IN EFI_HANDLE Controller,
|
|
IN EFI_PCI_IO_PROTOCOL *PciIo,
|
|
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
|
|
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param PciIo TODO: add argument description
|
|
@param Port TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
UINT8
|
|
IDEReadPortB (
|
|
IN EFI_PCI_IO_PROTOCOL *PciIo,
|
|
IN UINT16 Port
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param PciIo TODO: add argument description
|
|
@param Port TODO: add argument description
|
|
@param Count TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
VOID
|
|
IDEReadPortWMultiple (
|
|
IN EFI_PCI_IO_PROTOCOL *PciIo,
|
|
IN UINT16 Port,
|
|
IN UINTN Count,
|
|
OUT VOID *Buffer
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param PciIo TODO: add argument description
|
|
@param Port TODO: add argument description
|
|
@param Data TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
VOID
|
|
IDEWritePortB (
|
|
IN EFI_PCI_IO_PROTOCOL *PciIo,
|
|
IN UINT16 Port,
|
|
IN UINT8 Data
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param PciIo TODO: add argument description
|
|
@param Port TODO: add argument description
|
|
@param Data TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
VOID
|
|
IDEWritePortW (
|
|
IN EFI_PCI_IO_PROTOCOL *PciIo,
|
|
IN UINT16 Port,
|
|
IN UINT16 Data
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param PciIo TODO: add argument description
|
|
@param Port TODO: add argument description
|
|
@param Count TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
VOID
|
|
IDEWritePortWMultiple (
|
|
IN EFI_PCI_IO_PROTOCOL *PciIo,
|
|
IN UINT16 Port,
|
|
IN UINTN Count,
|
|
IN VOID *Buffer
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param PciIo TODO: add argument description
|
|
@param IdeRegsBaseAddr TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
GetIdeRegistersBaseAddr (
|
|
IN EFI_PCI_IO_PROTOCOL *PciIo,
|
|
OUT IDE_REGISTERS_BASE_ADDR *IdeRegsBaseAddr
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
ReassignIdeResources (
|
|
IN IDE_BLK_IO_DEV *IdeDev
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
DiscoverIdeDevice (
|
|
IN IDE_BLK_IO_DEV *IdeDev
|
|
)
|
|
;
|
|
|
|
/**
|
|
This interface is used to initialize all state data related to the
|
|
detection of one channel.
|
|
|
|
@retval EFI_SUCCESS Completed successfully.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
InitializeIDEChannelData (
|
|
VOID
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
DetectIDEController (
|
|
IN IDE_BLK_IO_DEV *IdeDev
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param TimeoutInMilliSeconds TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
DRQClear (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN UINTN TimeoutInMilliSeconds
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param TimeoutInMilliSeconds TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
DRQClear2 (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN UINTN TimeoutInMilliSeconds
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param TimeoutInMilliSeconds TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
DRQReady (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN UINTN TimeoutInMilliSeconds
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param TimeoutInMilliSeconds TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
DRQReady2 (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN UINTN TimeoutInMilliSeconds
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param TimeoutInMilliSeconds TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
WaitForBSYClear (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN UINTN TimeoutInMilliSeconds
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param TimeoutInMilliSeconds TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
WaitForBSYClear2 (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN UINTN TimeoutInMilliSeconds
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param DelayInMilliSeconds TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
DRDYReady (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN UINTN DelayInMilliSeconds
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param DelayInMilliSeconds TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
DRDYReady2 (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN UINTN DelayInMilliSeconds
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param Destination TODO: add argument description
|
|
@param Source TODO: add argument description
|
|
@param Size TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
VOID
|
|
SwapStringChars (
|
|
IN CHAR8 *Destination,
|
|
IN CHAR8 *Source,
|
|
IN UINT32 Size
|
|
)
|
|
;
|
|
|
|
//
|
|
// ATA device functions' prototype
|
|
//
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
ATAIdentify (
|
|
IN IDE_BLK_IO_DEV *IdeDev
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
VOID
|
|
PrintAtaModuleName (
|
|
IN IDE_BLK_IO_DEV *IdeDev
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
@param ByteCount TODO: add argument description
|
|
@param AtaCommand TODO: add argument description
|
|
@param Head TODO: add argument description
|
|
@param SectorCount TODO: add argument description
|
|
@param SectorNumber TODO: add argument description
|
|
@param CylinderLsb TODO: add argument description
|
|
@param CylinderMsb TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaPioDataIn (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN VOID *Buffer,
|
|
IN UINT32 ByteCount,
|
|
IN UINT8 AtaCommand,
|
|
IN UINT8 Head,
|
|
IN UINT8 SectorCount,
|
|
IN UINT8 SectorNumber,
|
|
IN UINT8 CylinderLsb,
|
|
IN UINT8 CylinderMsb
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
@param ByteCount TODO: add argument description
|
|
@param AtaCommand TODO: add argument description
|
|
@param Head TODO: add argument description
|
|
@param SectorCount TODO: add argument description
|
|
@param SectorNumber TODO: add argument description
|
|
@param CylinderLsb TODO: add argument description
|
|
@param CylinderMsb TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaPioDataOut (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN VOID *Buffer,
|
|
IN UINT32 ByteCount,
|
|
IN UINT8 AtaCommand,
|
|
IN UINT8 Head,
|
|
IN UINT8 SectorCount,
|
|
IN UINT8 SectorNumber,
|
|
IN UINT8 CylinderLsb,
|
|
IN UINT8 CylinderMsb
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
CheckErrorStatus (
|
|
IN IDE_BLK_IO_DEV *IdeDev
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param DataBuffer TODO: add argument description
|
|
@param Lba TODO: add argument description
|
|
@param NumberOfBlocks TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaReadSectors (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN VOID *DataBuffer,
|
|
IN EFI_LBA Lba,
|
|
IN UINTN NumberOfBlocks
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param BufferData TODO: add argument description
|
|
@param Lba TODO: add argument description
|
|
@param NumberOfBlocks TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaWriteSectors (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN VOID *BufferData,
|
|
IN EFI_LBA Lba,
|
|
IN UINTN NumberOfBlocks
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaSoftReset (
|
|
IN IDE_BLK_IO_DEV *IdeDev
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeBlkIoDevice TODO: add argument description
|
|
@param MediaId TODO: add argument description
|
|
@param LBA TODO: add argument description
|
|
@param BufferSize TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaBlkIoReadBlocks (
|
|
IN IDE_BLK_IO_DEV *IdeBlkIoDevice,
|
|
IN UINT32 MediaId,
|
|
IN EFI_LBA LBA,
|
|
IN UINTN BufferSize,
|
|
OUT VOID *Buffer
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeBlkIoDevice TODO: add argument description
|
|
@param MediaId TODO: add argument description
|
|
@param LBA TODO: add argument description
|
|
@param BufferSize TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaBlkIoWriteBlocks (
|
|
IN IDE_BLK_IO_DEV *IdeBlkIoDevice,
|
|
IN UINT32 MediaId,
|
|
IN EFI_LBA LBA,
|
|
IN UINTN BufferSize,
|
|
OUT VOID *Buffer
|
|
)
|
|
;
|
|
|
|
//
|
|
// ATAPI device functions' prototype
|
|
//
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
ATAPIIdentify (
|
|
IN IDE_BLK_IO_DEV *IdeDev
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtapiInquiry (
|
|
IN IDE_BLK_IO_DEV *IdeDev
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param Packet TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
@param ByteCount TODO: add argument description
|
|
@param TimeOut TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtapiPacketCommandIn (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN ATAPI_PACKET_COMMAND *Packet,
|
|
IN UINT16 *Buffer,
|
|
IN UINT32 ByteCount,
|
|
IN UINTN TimeOut
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param Packet TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
@param ByteCount TODO: add argument description
|
|
@param TimeOut TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtapiPacketCommandOut (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN ATAPI_PACKET_COMMAND *Packet,
|
|
IN UINT16 *Buffer,
|
|
IN UINT32 ByteCount,
|
|
IN UINTN TimeOut
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
@param ByteCount TODO: add argument description
|
|
@param Read TODO: add argument description
|
|
@param TimeOut TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
PioReadWriteData (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN UINT16 *Buffer,
|
|
IN UINT32 ByteCount,
|
|
IN BOOLEAN Read,
|
|
IN UINTN TimeOut
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtapiTestUnitReady (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
OUT UINTN *SenseCount
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param SenseCounts TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtapiRequestSense (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
OUT UINTN *SenseCounts
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtapiReadCapacity (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
OUT UINTN *SenseCount
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param MediaChange TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtapiDetectMedia (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
OUT BOOLEAN *MediaChange
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
@param Lba TODO: add argument description
|
|
@param NumberOfBlocks TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtapiReadSectors (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN VOID *Buffer,
|
|
IN EFI_LBA Lba,
|
|
IN UINTN NumberOfBlocks
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
@param Lba TODO: add argument description
|
|
@param NumberOfBlocks TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtapiWriteSectors (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN VOID *Buffer,
|
|
IN EFI_LBA Lba,
|
|
IN UINTN NumberOfBlocks
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtapiSoftReset (
|
|
IN IDE_BLK_IO_DEV *IdeDev
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeBlkIoDevice TODO: add argument description
|
|
@param MediaId TODO: add argument description
|
|
@param LBA TODO: add argument description
|
|
@param BufferSize TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtapiBlkIoReadBlocks (
|
|
IN IDE_BLK_IO_DEV *IdeBlkIoDevice,
|
|
IN UINT32 MediaId,
|
|
IN EFI_LBA LBA,
|
|
IN UINTN BufferSize,
|
|
OUT VOID *Buffer
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeBlkIoDevice TODO: add argument description
|
|
@param MediaId TODO: add argument description
|
|
@param LBA TODO: add argument description
|
|
@param BufferSize TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtapiBlkIoWriteBlocks (
|
|
IN IDE_BLK_IO_DEV *IdeBlkIoDevice,
|
|
IN UINT32 MediaId,
|
|
IN EFI_LBA LBA,
|
|
IN UINTN BufferSize,
|
|
OUT VOID *Buffer
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param SenseCount TODO: add argument description
|
|
@param Result TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
ParseSenseData (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN UINTN SenseCount,
|
|
OUT SENSE_RESULT *Result
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtapiReadPendingData (
|
|
IN IDE_BLK_IO_DEV *IdeDev
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param WriteProtected TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
IsLS120orZipWriteProtected (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
OUT BOOLEAN *WriteProtected
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeBlkIoDevice TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
VOID
|
|
ReleaseIdeResources (
|
|
IN IDE_BLK_IO_DEV *IdeBlkIoDevice
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param TransferMode TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
SetDeviceTransferMode (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN ATA_TRANSFER_MODE *TransferMode
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param NativeMaxAddress TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
ReadNativeMaxAddress (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
OUT EFI_LBA *NativeMaxAddress
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param MaxAddress TODO: add argument description
|
|
@param bVolatile TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
SetMaxAddress (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN EFI_LBA MaxAddress,
|
|
IN BOOLEAN bVolatile
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param AtaCommand TODO: add argument description
|
|
@param Device TODO: add argument description
|
|
@param Feature TODO: add argument description
|
|
@param SectorCount TODO: add argument description
|
|
@param LbaLow TODO: add argument description
|
|
@param LbaMiddle TODO: add argument description
|
|
@param LbaHigh TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaNonDataCommandIn (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN UINT8 AtaCommand,
|
|
IN UINT8 Device,
|
|
IN UINT8 Feature,
|
|
IN UINT8 SectorCount,
|
|
IN UINT8 LbaLow,
|
|
IN UINT8 LbaMiddle,
|
|
IN UINT8 LbaHigh
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param AtaCommand TODO: add argument description
|
|
@param Device TODO: add argument description
|
|
@param Feature TODO: add argument description
|
|
@param SectorCount TODO: add argument description
|
|
@param LbaAddress TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaNonDataCommandInExt (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN UINT8 AtaCommand,
|
|
IN UINT8 Device,
|
|
IN UINT16 Feature,
|
|
IN UINT16 SectorCount,
|
|
IN EFI_LBA LbaAddress
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param DataBuffer TODO: add argument description
|
|
@param StartLba TODO: add argument description
|
|
@param NumberOfBlocks TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaReadSectorsExt (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN VOID *DataBuffer,
|
|
IN EFI_LBA StartLba,
|
|
IN UINTN NumberOfBlocks
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param DataBuffer TODO: add argument description
|
|
@param StartLba TODO: add argument description
|
|
@param NumberOfBlocks TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaWriteSectorsExt (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN VOID *DataBuffer,
|
|
IN EFI_LBA StartLba,
|
|
IN UINTN NumberOfBlocks
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param DataBuffer TODO: add argument description
|
|
@param StartLba TODO: add argument description
|
|
@param NumberOfBlocks TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaUdmaReadExt (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN VOID *DataBuffer,
|
|
IN EFI_LBA StartLba,
|
|
IN UINTN NumberOfBlocks
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param DataBuffer TODO: add argument description
|
|
@param StartLba TODO: add argument description
|
|
@param NumberOfBlocks TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaUdmaRead (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN VOID *DataBuffer,
|
|
IN EFI_LBA StartLba,
|
|
IN UINTN NumberOfBlocks
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param DataBuffer TODO: add argument description
|
|
@param StartLba TODO: add argument description
|
|
@param NumberOfBlocks TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaUdmaWriteExt (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN VOID *DataBuffer,
|
|
IN EFI_LBA StartLba,
|
|
IN UINTN NumberOfBlocks
|
|
)
|
|
;
|
|
|
|
/**
|
|
Perform an ATA Udma operation (Read, ReadExt, Write, WriteExt).
|
|
|
|
@param[in] *IdeDev
|
|
pointer pointing to IDE_BLK_IO_DEV data structure, used
|
|
to record all the information of the IDE device.
|
|
|
|
@param[in] *DataBuffer
|
|
A pointer to the source buffer for the data.
|
|
|
|
@param[in] StartLba
|
|
The starting logical block address to write to
|
|
on the device media.
|
|
|
|
@param[in] NumberOfBlocks
|
|
The number of transfer data blocks.
|
|
|
|
@param[in] UdmaOp
|
|
The perform operations could be AtaUdmaReadOp, AtaUdmaReadExOp,
|
|
AtaUdmaWriteOp, AtaUdmaWriteExOp
|
|
|
|
@return The device status of UDMA operation. If the operation is
|
|
successful, return EFI_SUCCESS.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
DoAtaUdma (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN VOID *DataBuffer,
|
|
IN EFI_LBA StartLba,
|
|
IN UINTN NumberOfBlocks,
|
|
IN ATA_UDMA_OPERATION UdmaOp
|
|
)
|
|
;
|
|
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param DataBuffer TODO: add argument description
|
|
@param StartLba TODO: add argument description
|
|
@param NumberOfBlocks TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaUdmaWrite (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN VOID *DataBuffer,
|
|
IN EFI_LBA StartLba,
|
|
IN UINTN NumberOfBlocks
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param AtaCommand TODO: add argument description
|
|
@param Device TODO: add argument description
|
|
@param Feature TODO: add argument description
|
|
@param SectorCount TODO: add argument description
|
|
@param LbaAddress TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaCommandIssueExt (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN UINT8 AtaCommand,
|
|
IN UINT8 Device,
|
|
IN UINT16 Feature,
|
|
IN UINT16 SectorCount,
|
|
IN EFI_LBA LbaAddress
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param AtaCommand TODO: add argument description
|
|
@param Device TODO: add argument description
|
|
@param Feature TODO: add argument description
|
|
@param SectorCount TODO: add argument description
|
|
@param LbaAddress TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaCommandIssue (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN UINT8 AtaCommand,
|
|
IN UINT8 Device,
|
|
IN UINT16 Feature,
|
|
IN UINT16 SectorCount,
|
|
IN EFI_LBA LbaAddress
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaAtapi6Identify (
|
|
IN IDE_BLK_IO_DEV *IdeDev
|
|
)
|
|
;
|
|
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
VOID
|
|
AtaSMARTSupport (
|
|
IN IDE_BLK_IO_DEV *IdeDev
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
@param ByteCount TODO: add argument description
|
|
@param AtaCommand TODO: add argument description
|
|
@param StartLba TODO: add argument description
|
|
@param SectorCount TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaPioDataInExt (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN OUT VOID *Buffer,
|
|
IN UINT32 ByteCount,
|
|
IN UINT8 AtaCommand,
|
|
IN EFI_LBA StartLba,
|
|
IN UINT16 SectorCount
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param Buffer TODO: add argument description
|
|
@param ByteCount TODO: add argument description
|
|
@param AtaCommand TODO: add argument description
|
|
@param StartLba TODO: add argument description
|
|
@param SectorCount TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AtaPioDataOutExt (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN VOID *Buffer,
|
|
IN UINT32 ByteCount,
|
|
IN UINT8 AtaCommand,
|
|
IN EFI_LBA StartLba,
|
|
IN UINT16 SectorCount
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
@param DriveParameters TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
SetDriveParameters (
|
|
IN IDE_BLK_IO_DEV *IdeDev,
|
|
IN ATA_DRIVE_PARMS *DriveParameters
|
|
)
|
|
;
|
|
|
|
/**
|
|
TODO: Add function description
|
|
|
|
@param IdeDev TODO: add argument description
|
|
|
|
TODO: add return values
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EnableInterrupt (
|
|
IN IDE_BLK_IO_DEV *IdeDev
|
|
)
|
|
;
|
|
|
|
/**
|
|
Clear pending IDE interrupt before OS loader/kernel take control of the IDE device.
|
|
|
|
@param[in] Event Pointer to this event
|
|
@param[in] Context Event hanlder private data
|
|
|
|
@retval EFI_SUCCESS - Interrupt cleared
|
|
|
|
**/
|
|
VOID
|
|
EFIAPI
|
|
ClearInterrupt (
|
|
IN EFI_EVENT Event,
|
|
IN VOID *Context
|
|
)
|
|
;
|
|
|
|
#endif
|