/** @file\r
This file declares EFI IDE Controller Init Protocol\r
+ The EFI_IDE_CONTROLLER_INIT_PROTOCOL provides the chipset-specific information to\r
+ the IDE bus driver. This protocol is mandatory for IDE controllers if the IDE devices behind the\r
+ controller are to be enumerated by an IDE bus driver.\r
+ There can only be one instance of EFI_IDE_CONTROLLER_INIT_PROTOCOL for each IDE\r
+ controller in a system. It is installed on the handle that corresponds to the IDE controller. An IDE\r
+ bus driver that wishes to manage an IDE bus and possibly IDE devices in a system will have to\r
+ retrieve the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance that is associated with the\r
+ controller to be managed.\r
\r
Copyright (c) 2007, Intel Corporation\r
All rights reserved. This program and the accompanying materials\r
\r
@par Revision Reference:\r
This Protocol is defined in IDE Controller Initialization Protocol Specification\r
- Version 0.9\r
+ Version 0.9.\r
\r
**/\r
\r
#ifndef _EFI_IDE_CONTROLLER_INIT_PROTOCOL_H_\r
#define _EFI_IDE_CONTROLLER_INIT_PROTOCOL_H_\r
\r
+#include <PiDxe.h>\r
+\r
//\r
// Global ID for the EFI Platform IDE Protocol GUID\r
//\r
UINT16 command_set_feature_enb_86; // word 86\r
UINT16 command_set_feature_default; // word 87\r
UINT16 ultra_dma_mode; // word 88\r
- UINT16 reserved_89_127[39];\r
+ UINT16 reserved_89_105[17];\r
+ UINT16 phy_logic_sector_support; // word 106\r
+ UINT16 reserved_107_116[10];\r
+ UINT16 logic_sector_size_lo; // word 117\r
+ UINT16 logic_sector_size_hi; // word 118\r
+ UINT16 reserved_119_127[9];\r
UINT16 security_status;\r
UINT16 vendor_data_129_159[31];\r
- UINT16 reserved_160_255[96];\r
+ UINT16 reserved_160_208[49];\r
+ UINT16 alignment_logic_in_phy_blocks; // word 209\r
+ UINT16 reserved_210_255[46];\r
} EFI_ATA_IDENTIFY_DATA;\r
\r
#pragma pack()\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_IDE_CONTROLLER_GET_CHANNEL_INFO) (\r
+(EFIAPI *EFI_IDE_CONTROLLER_GET_CHANNEL_INFO)(\r
IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
IN UINT8 Channel,\r
OUT BOOLEAN *Enabled,\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_IDE_CONTROLLER_NOTIFY_PHASE) (\r
+(EFIAPI *EFI_IDE_CONTROLLER_NOTIFY_PHASE)(\r
IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
IN EFI_IDE_CONTROLLER_ENUM_PHASE Phase,\r
IN UINT8 Channel\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_IDE_CONTROLLER_SUBMIT_DATA) (\r
+(EFIAPI *EFI_IDE_CONTROLLER_SUBMIT_DATA)(\r
IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
IN UINT8 Channel,\r
IN UINT8 Device,\r
\r
@retval EFI_SUCCESS The modes were accepted without any errors.\r
@retval EFI_INVALID_PARAMETER Channel is invalid (Channel >= ChannelCount).\r
- Or Device is invalid.\r
+ Or Device is invalid, \r
+ Or IdentifyData is NULL.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_IDE_CONTROLLER_DISQUALIFY_MODE) (\r
+(EFIAPI *EFI_IDE_CONTROLLER_DISQUALIFY_MODE)(\r
IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
IN UINT8 Channel,\r
IN UINT8 Device,\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_IDE_CONTROLLER_CALCULATE_MODE) (\r
+(EFIAPI *EFI_IDE_CONTROLLER_CALCULATE_MODE)(\r
IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
IN UINT8 Channel,\r
IN UINT8 Device,\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_IDE_CONTROLLER_SET_TIMING) (\r
+(EFIAPI *EFI_IDE_CONTROLLER_SET_TIMING)(\r
IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
IN UINT8 Channel,\r
IN UINT8 Device,\r