/** @file AtaPassThru.h -- Header for AtaPassThru Copyright (c) HR650X BIOS Decompilation Project **/ #ifndef __ATAPASSTHRU_H__ #define __ATAPASSTHRU_H__ #include "../uefi_headers/Uefi.h" // // Function Prototypes // EFI_STATUS EFIAPI ModuleEntryPoint( VOID ); EFI_STATUS EFIAPI AtaPassThruInit( VOID ); EFI_STATUS EFIAPI AtaPassThruDriverBindingStart( VOID ); EFI_STATUS EFIAPI AtaPassThruDriverBindingStop( VOID ); EFI_STATUS EFIAPI AtaPassThruFindDevice( VOID ); EFI_STATUS EFIAPI AtaPassThruEnumeratePorts( VOID ); EFI_STATUS EFIAPI AtaPassThruReadDeviceStatus( VOID ); EFI_STATUS EFIAPI AtaPassThruSendCommand( VOID ); EFI_STATUS EFIAPI AtaPassThruGetNextPort( VOID ); EFI_STATUS EFIAPI AtaPassThruGetNextDevice( VOID ); EFI_STATUS EFIAPI AtaPassThruBuildDevicePath( VOID ); EFI_STATUS EFIAPI AtaPassThruGetDeviceFromPath( VOID ); EFI_STATUS EFIAPI AtaPassThruResetPort( VOID ); EFI_STATUS EFIAPI AtaPassThruResetDevice( VOID ); EFI_STATUS EFIAPI AtaPassThruReportAssert( VOID ); EFI_STATUS EFIAPI AtaPassThruReadDebugCmos( VOID ); EFI_STATUS EFIAPI AtaPassThruCompareHobGuid( VOID ); EFI_STATUS EFIAPI AtaPassThruReadUnaligned64( VOID ); EFI_STATUS EFIAPI CpuidWrapper( VOID ); EFI_STATUS EFIAPI generated decompilation for AtaPassThru.efi( VOID ); EFI_STATUS EFIAPI AMI UEFI BIOS ATA Pass Thru Protocol driver( VOID ); EFI_STATUS EFIAPI driver implements the UEFI EFI_ATA_PASS_THRU_PROTOCOL on ATA/SATA( VOID ); EFI_STATUS EFIAPI detected by the SATA controller driver (SataController.efi).( VOID ); EFI_STATUS EFIAPI provides register-level ATA command passthrough to upper-layer drivers( VOID ); EFI_STATUS EFIAPI AtaBusDxe.( VOID ); EFI_STATUS EFIAPI State( VOID ); EFI_STATUS EFIAPI //=============================================================================( VOID ); EFI_STATUS EFIAPI declarations of internal helpers( VOID ); EFI_STATUS EFIAPI (0x370)( VOID ); EFI_STATUS EFIAPI (sub_41C, 0x41C)( VOID ); EFI_STATUS EFIAPI 16-byte private registration protocol structure( VOID ); EFI_STATUS EFIAPI 0 = Initialize callback (AtaPassThruDriverBindingStart)( VOID ); EFI_STATUS EFIAPI 1 = Unload callback (AtaPassThruDriverBindingStop)( VOID ); EFI_STATUS EFIAPI (sub_4FC, 0x4FC)( VOID ); EFI_STATUS EFIAPI Ctl->Reserved = 0; // Attributes( VOID ); EFI_STATUS EFIAPI port/device context tracking( VOID ); EFI_STATUS EFIAPI +228 = current port, +230 = current device( VOID ); EFI_STATUS EFIAPI (sub_730, 0x730)( VOID ); EFI_STATUS EFIAPI (sub_79C, 0x79C)( VOID ); EFI_STATUS EFIAPI (sub_7D4, 0x7D4)( VOID ); EFI_STATUS EFIAPI child handle linked list at controller protocol + 88( VOID ); EFI_STATUS EFIAPI child type == 4 (ATA channel) at offset -909( VOID ); EFI_STATUS EFIAPI (sub_854, 0x854)( VOID ); EFI_STATUS EFIAPI / AltStatus( VOID ); EFI_STATUS EFIAPI StatusBuffer[12] = *(UINT8 *)(DevInfoBase + 76); // DeviceControl( VOID ); EFI_STATUS EFIAPI StatusBuffer[8] = *(UINT8 *)(DevInfoBase + 72); // LbaHigh( VOID ); EFI_STATUS EFIAPI StatusBuffer[9] = *(UINT8 *)(DevInfoBase + 73); // (unused)( VOID ); EFI_STATUS EFIAPI StatusBuffer[10] = *(UINT8 *)(DevInfoBase + 74); // (unused)( VOID ); EFI_STATUS EFIAPI / Error( VOID ); EFI_STATUS EFIAPI (sub_960, 0x960)( VOID ); EFI_STATUS EFIAPI buffer alignment( VOID ); EFI_STATUS EFIAPI child device for non-blocking mode( VOID ); EFI_STATUS EFIAPI 4K sector (IDENTIFY word 247)( VOID ); EFI_STATUS EFIAPI transfer lengths from bytes to blocks( VOID ); EFI_STATUS EFIAPI transfer: 256 sectors, or 65536 for 48-bit LBA( VOID ); EFI_STATUS EFIAPI ACB from Asb register block( VOID ); EFI_STATUS EFIAPI layout used by this driver:( VOID ); EFI_STATUS EFIAPI Acb[5] = Asb[5]; // SectorCount( VOID ); EFI_STATUS EFIAPI Acb[7] = Asb[7]; // CylinderLow( VOID ); EFI_STATUS EFIAPI Acb[12] = Asb[2]; // SectorCountExp from Asb[2]( VOID ); EFI_STATUS EFIAPI // Timeout conversion (100ns -> 1ms)( VOID ); EFI_STATUS EFIAPI register block construction( VOID ); EFI_STATUS EFIAPI 48-bit LBA commands by checking Asb[2]( VOID ); EFI_STATUS EFIAPI register command (48-bit LBA)( VOID ); EFI_STATUS EFIAPI bit( VOID ); EFI_STATUS EFIAPI by protocol type (command register [48])( VOID ); EFI_STATUS EFIAPI pointer table at DeviceInterface:( VOID ); EFI_STATUS EFIAPI Non-Data( VOID ); EFI_STATUS EFIAPI Software Reset( VOID ); EFI_STATUS EFIAPI PIO Data-Out( VOID ); EFI_STATUS EFIAPI PIO Data-In( VOID ); EFI_STATUS EFIAPI PIO Data-Out (alternate)( VOID ); EFI_STATUS EFIAPI IDENTIFY( VOID ); EFI_STATUS EFIAPI Packet / FPDMA( VOID ); EFI_STATUS EFIAPI Non-Data (alt path - Set Features)( VOID ); EFI_STATUS EFIAPI Read Status( VOID ); EFI_STATUS EFIAPI DMA (alt path)( VOID ); EFI_STATUS EFIAPI Device Reset (read status to clear)( VOID ); EFI_STATUS EFIAPI register status after command( VOID ); EFI_STATUS EFIAPI (sub_D88, 0xD88)( VOID ); EFI_STATUS EFIAPI (sub_E5C, 0xE5C)( VOID ); EFI_STATUS EFIAPI of device list( VOID ); EFI_STATUS EFIAPI for device matching port with higher port multiplier( VOID ); EFI_STATUS EFIAPI (sub_F88, 0xF88)( VOID ); EFI_STATUS EFIAPI IDENTIFY data descriptor list (device + 856)( VOID ); EFI_STATUS EFIAPI ATA target descriptor: copy type+length( VOID ); EFI_STATUS EFIAPI with port/multiplier info( VOID ); EFI_STATUS EFIAPI (sub_10A0, 0x10A0)( VOID ); EFI_STATUS EFIAPI channels use ATAPI device path (type=3, submode=18, length=10)( VOID ); EFI_STATUS EFIAPI (sub_1128, 0x1128)( VOID ); EFI_STATUS EFIAPI device vtable + 200 (25*8) with NonData reset signature( VOID ); EFI_STATUS EFIAPI (sub_1188, 0x1188)( VOID ); EFI_STATUS EFIAPI (sub_12A8, 0x12A8)( VOID ); EFI_STATUS EFIAPI (sub_11E0, 0x11E0)( VOID ); EFI_STATUS EFIAPI TPL: GetTimerValue(31), if > 0x10 return NULL( VOID ); EFI_STATUS EFIAPI pattern is AMI-specific for lazy debug protocol init( VOID ); EFI_STATUS EFIAPI (sub_12E8, 0x12E8)( VOID ); EFI_STATUS EFIAPI (sub_13C0, 0x13C0)( VOID ); EFI_STATUS EFIAPI NMI, select reg 0x4B( VOID ); EFI_STATUS EFIAPI platform config from fixed address( VOID ); EFI_STATUS EFIAPI debug level (1 or 2+)( VOID ); EFI_STATUS EFIAPI debug level mask( VOID ); EFI_STATUS EFIAPI 1 -> 0x80000004 (EFI_D_ERROR in AMI convention)( VOID ); EFI_STATUS EFIAPI 2+ -> 0x80000006 (EFI_D_INFO | EFI_D_ERROR in AMI convention)( VOID ); EFI_STATUS EFIAPI (sub_1410, 0x1410)( VOID ); EFI_STATUS EFIAPI (sub_1480, 0x1480)( VOID ); EFI_STATUS EFIAPI (sub_14B0, 0x14B0)( VOID ); EFI_STATUS EFIAPI (sub_14F0, 0x14F0)( VOID ); EFI_STATUS EFIAPI 32-bit repeating pattern from low 16 bits( VOID ); EFI_STATUS EFIAPI unaligned head( VOID ); EFI_STATUS EFIAPI aligned portion with 32-bit pattern( VOID ); EFI_STATUS EFIAPI bytes( VOID ); EFI_STATUS EFIAPI (sub_1550, 0x1550) - overlapping-safe memmove( VOID ); EFI_STATUS EFIAPI backward overlap: src < dst and src+count > dst( VOID ); EFI_STATUS EFIAPI path for aligned >= 8 byte copy( VOID ); EFI_STATUS EFIAPI source/dest alignment for head( VOID ); EFI_STATUS EFIAPI copy alignment fixup( VOID ); EFI_STATUS EFIAPI 8-byte chunks( VOID ); EFI_STATUS EFIAPI AtaPassThru.c( VOID ); #endif /* __ATAPASSTHRU_H__ */