summaryrefslogtreecommitdiff
path: root/IntelFrameworkPkg/Include/Protocol/IdeControllerInit.h
diff options
context:
space:
mode:
Diffstat (limited to 'IntelFrameworkPkg/Include/Protocol/IdeControllerInit.h')
-rw-r--r--IntelFrameworkPkg/Include/Protocol/IdeControllerInit.h479
1 files changed, 0 insertions, 479 deletions
diff --git a/IntelFrameworkPkg/Include/Protocol/IdeControllerInit.h b/IntelFrameworkPkg/Include/Protocol/IdeControllerInit.h
deleted file mode 100644
index e65716b..0000000
--- a/IntelFrameworkPkg/Include/Protocol/IdeControllerInit.h
+++ /dev/null
@@ -1,479 +0,0 @@
-/** @file
- This file declares EFI IDE Controller Init Protocol
- The EFI_IDE_CONTROLLER_INIT_PROTOCOL provides the chipset-specific information to
- the IDE bus driver. This protocol is mandatory for IDE controllers if the IDE devices behind the
- controller are to be enumerated by an IDE bus driver.
- There can only be one instance of EFI_IDE_CONTROLLER_INIT_PROTOCOL for each IDE
- controller in a system. It is installed on the handle that corresponds to the IDE controller. An IDE
- bus driver that wishes to manage an IDE bus and possibly IDE devices in a system will have to
- retrieve the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance that is associated with the
- controller to be managed.
-
- Copyright (c) 2007 - 2009, 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:
- This Protocol is defined in IDE Controller Initialization Protocol Specification
- Version 0.9.
-
-**/
-
-#ifndef _EFI_IDE_CONTROLLER_INIT_PROTOCOL_H_
-#define _EFI_IDE_CONTROLLER_INIT_PROTOCOL_H_
-
-
-///
-/// Global ID for the EFI Platform IDE Protocol GUID
-///
-#define EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID \
- { 0xa1e37052, 0x80d9, 0x4e65, {0xa3, 0x17, 0x3e, 0x9a, 0x55, 0xc4, 0x3e, 0xc9 } }
-
-///
-/// Forward reference for pure ANSI compatability
-///
-typedef struct _EFI_IDE_CONTROLLER_INIT_PROTOCOL EFI_IDE_CONTROLLER_INIT_PROTOCOL;
-
-//
-//////////////////////////////////////////////////////////////////////////////////////////
-// EFI_IDE_BUS_ENUMERATION_PHASE
-// EFI_IDE_CONTROLLER_ENUM_PHASE
-//
-typedef enum{
- EfiIdeBeforeChannelEnumeration,
- EfiIdeAfterChannelEnumeration,
- EfiIdeBeforeChannelReset,
- EfiIdeAfterChannelReset,
- EfiIdeBusBeforeDevicePresenceDetection,
- EfiIdeBusAfterDevicePresenceDetection,
- EfiIdeResetMode,
- EfiIdeBusPhaseMaximum
-} EFI_IDE_CONTROLLER_ENUM_PHASE;
-
-//
-//******************************************************
-// EFI_ATA_EXT_TRANSFER_PROTOCOL
-//******************************************************
-//
-// This extended mode describes the SATA physical protocol.
-// SATA physical layers can operate at different speeds.
-// These speeds are defined below. Various PATA protocols
-// and associated modes are not applicable to SATA devices.
-//
-
-typedef enum {
- EfiAtaSataTransferProtocol
-} EFI_ATA_EXT_TRANSFER_PROTOCOL;
-
-#define EFI_SATA_AUTO_SPEED 0
-#define EFI_SATA_GEN1_SPEED 1
-#define EFI_SATA_GEN2_SPEED 2
-
-//
-//*******************************************************
-// EFI_IDE_CABLE_TYPE
-//*******************************************************
-//
-typedef enum {
- EfiIdeCableTypeUnknown,
- EfiIdeCableType40pin,
- EfiIdeCableType80Pin,
- EfiIdeCableTypeSerial,
- EfiIdeCableTypeMaximum
-} EFI_IDE_CABLE_TYPE;
-
-//
-//******************************************************
-// EFI_ATA_MODE
-//******************************************************
-//
-typedef struct {
- BOOLEAN Valid;
- UINT32 Mode;
-} EFI_ATA_MODE;
-
-//
-//******************************************************
-// EFI_ATA_EXTENDED_MODE
-//******************************************************
-//
-typedef struct {
- EFI_ATA_EXT_TRANSFER_PROTOCOL TransferProtocol;
- UINT32 Mode;
-} EFI_ATA_EXTENDED_MODE;
-
-//
-//******************************************************
-// EFI_ATA_COLLECTIVE_MODE
-//******************************************************
-//
-typedef struct {
- EFI_ATA_MODE PioMode;
- EFI_ATA_MODE SingleWordDmaMode;
- EFI_ATA_MODE MultiWordDmaMode;
- EFI_ATA_MODE UdmaMode;
- UINT32 ExtModeCount;
- EFI_ATA_EXTENDED_MODE ExtMode[1];
-} EFI_ATA_COLLECTIVE_MODE;
-
-//
-//*******************************************************
-// EFI_ATA_IDENTIFY_DATA
-//*******************************************************
-//
-
-#pragma pack(1)
-
-typedef struct {
- UINT16 config; ///< General Configuration
- UINT16 cylinders; ///< Number of Cylinders
- UINT16 reserved_2;
- UINT16 heads; ///< Number of logical heads
- UINT16 vendor_data1;
- UINT16 vendor_data2;
- UINT16 sectors_per_track;
- UINT16 vendor_specific_7_9[3];
- CHAR8 SerialNo[20]; ///< ASCII
- UINT16 vendor_specific_20_21[2];
- UINT16 ecc_bytes_available;
- CHAR8 FirmwareVer[8]; ///< ASCII
- CHAR8 ModelName[40]; ///< ASCII
- UINT16 multi_sector_cmd_max_sct_cnt;
- UINT16 reserved_48;
- UINT16 capabilities;
- UINT16 reserved_50;
- UINT16 pio_cycle_timing;
- UINT16 reserved_52;
- UINT16 field_validity;
- UINT16 current_cylinders;
- UINT16 current_heads;
- UINT16 current_sectors;
- UINT16 CurrentCapacityLsb;
- UINT16 CurrentCapacityMsb;
- UINT16 reserved_59;
- UINT16 user_addressable_sectors_lo;
- UINT16 user_addressable_sectors_hi;
- UINT16 reserved_62;
- UINT16 multi_word_dma_mode;
- UINT16 advanced_pio_modes;
- UINT16 min_multi_word_dma_cycle_time;
- UINT16 rec_multi_word_dma_cycle_time;
- UINT16 min_pio_cycle_time_without_flow_control;
- UINT16 min_pio_cycle_time_with_flow_control;
- UINT16 reserved_69_79[11];
- UINT16 major_version_no;
- UINT16 minor_version_no;
- UINT16 command_set_supported_82; ///< word 82
- UINT16 command_set_supported_83; ///< word 83
- UINT16 command_set_feature_extn; ///< word 84
- UINT16 command_set_feature_enb_85; ///< word 85
- UINT16 command_set_feature_enb_86; ///< word 86
- UINT16 command_set_feature_default; ///< word 87
- UINT16 ultra_dma_mode; ///< word 88
- UINT16 reserved_89_105[17];
- UINT16 phy_logic_sector_support; ///< word 106
- UINT16 reserved_107_116[10];
- UINT16 logic_sector_size_lo; ///< word 117
- UINT16 logic_sector_size_hi; ///< word 118
- UINT16 reserved_119_127[9];
- UINT16 security_status;
- UINT16 vendor_data_129_159[31];
- UINT16 reserved_160_208[49];
- UINT16 alignment_logic_in_phy_blocks; ///< word 209
- UINT16 reserved_210_255[46];
-} EFI_ATA_IDENTIFY_DATA;
-
-#pragma pack()
-//
-//*******************************************************
-// EFI_ATAPI_IDENTIFY_DATA
-//*******************************************************
-//
-#pragma pack(1)
-typedef struct {
- UINT16 config; ///< General Configuration
- UINT16 obsolete_1;
- UINT16 specific_config;
- UINT16 obsolete_3;
- UINT16 retired_4_5[2];
- UINT16 obsolete_6;
- UINT16 cfa_reserved_7_8[2];
- UINT16 retired_9;
- CHAR8 SerialNo[20]; ///< ASCII
- UINT16 retired_20_21[2];
- UINT16 obsolete_22;
- CHAR8 FirmwareVer[8]; ///< ASCII
- CHAR8 ModelName[40]; ///< ASCII
- UINT16 multi_sector_cmd_max_sct_cnt;
- UINT16 reserved_48;
- UINT16 capabilities_49;
- UINT16 capabilities_50;
- UINT16 obsolete_51_52[2];
- UINT16 field_validity;
- UINT16 obsolete_54_58[5];
- UINT16 mutil_sector_setting;
- UINT16 user_addressable_sectors_lo;
- UINT16 user_addressable_sectors_hi;
- UINT16 obsolete_62;
- UINT16 multi_word_dma_mode;
- UINT16 advanced_pio_modes;
- UINT16 min_multi_word_dma_cycle_time;
- UINT16 rec_multi_word_dma_cycle_time;
- UINT16 min_pio_cycle_time_without_flow_control;
- UINT16 min_pio_cycle_time_with_flow_control;
- UINT16 reserved_69_74[6];
- UINT16 queue_depth;
- UINT16 reserved_76_79[4];
- UINT16 major_version_no;
- UINT16 minor_version_no;
- UINT16 cmd_set_support_82;
- UINT16 cmd_set_support_83;
- UINT16 cmd_feature_support;
- UINT16 cmd_feature_enable_85;
- UINT16 cmd_feature_enable_86;
- UINT16 cmd_feature_default;
- UINT16 ultra_dma_select;
- UINT16 time_required_for_sec_erase;
- UINT16 time_required_for_enhanced_sec_erase;
- UINT16 current_advanced_power_mgmt_value;
- UINT16 master_pwd_revison_code;
- UINT16 hardware_reset_result;
- UINT16 current_auto_acoustic_mgmt_value;
- UINT16 reserved_95_99[5];
- UINT16 max_user_lba_for_48bit_addr[4];
- UINT16 reserved_104_126[23];
- UINT16 removable_media_status_notification_support;
- UINT16 security_status;
- UINT16 vendor_data_129_159[31];
- UINT16 cfa_power_mode;
- UINT16 cfa_reserved_161_175[15];
- UINT16 current_media_serial_no[30];
- UINT16 reserved_206_254[49];
- UINT16 integrity_word;
-} EFI_ATAPI_IDENTIFY_DATA;
-
-#pragma pack()
-//
-//*******************************************************
-// EFI_IDENTIFY_DATA
-//*******************************************************
-//
-typedef union {
- EFI_ATA_IDENTIFY_DATA AtaData;
- EFI_ATAPI_IDENTIFY_DATA AtapiData;
-} EFI_IDENTIFY_DATA;
-
-#define EFI_ATAPI_DEVICE_IDENTIFY_DATA 0x8000
-
-//
-/////////////////////////////////////////////////////////////////////////////////////////
-// Function prototype declaration, for ANSI compatability
-//
-/**
- Returns the information about the specified IDE channel.
-
- @param This Pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.
- @param Channel Zero-based channel number.
- @param Enabled TRUE if this channel is enabled. Disabled channels are not scanned
- to see if any devices are present.
- @param MaxDevices The maximum number of IDE devices that the bus driver
- can expect on this channel.
-
- @retval EFI_SUCCESS Information was returned without any errors.
- @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >= ChannelCount).
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IDE_CONTROLLER_GET_CHANNEL_INFO)(
- IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,
- IN UINT8 Channel,
- OUT BOOLEAN *Enabled,
- OUT UINT8 *MaxDevices
-);
-
-/**
- The notifications from the IDE bus driver that it is about to enter a certain
- phase of the IDE channel enumeration process.
-
- @param This Pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.
- @param Phase The phase during enumeration.
- @param Channel Zero-based channel number.
-
- @retval EFI_SUCCESS The notification was accepted without any errors.
- @retval EFI_NOT_SUPPORTED Phase is not supported.
- @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >= ChannelCount).
- @retval EFI_NOT_READY This phase cannot be entered at this time.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IDE_CONTROLLER_NOTIFY_PHASE)(
- IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,
- IN EFI_IDE_CONTROLLER_ENUM_PHASE Phase,
- IN UINT8 Channel
-);
-
-/**
- Submits the device information to the IDE controller driver.
-
- @param This Pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.
- @param Channel Zero-based channel number.
- @param Device Zero-based device number on the Channel.
- @param IdentifyData The device's response to the ATA IDENTIFY_DEVICE command.
-
- @retval EFI_SUCCESS The information was accepted without any errors.
- @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >= ChannelCount).
- Or Device is invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IDE_CONTROLLER_SUBMIT_DATA)(
- IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,
- IN UINT8 Channel,
- IN UINT8 Device,
- IN EFI_IDENTIFY_DATA *IdentifyData
-);
-
-/**
- Disqualifies specific modes for an IDE device.
-
- @param This Pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.
- @param Channel Zero-based channel number.
- @param Device Zero-based device number on the Channel.
- @param BadModes The modes that the device does not support and that
- should be disqualified.
-
- @retval EFI_SUCCESS The modes were accepted without any errors.
- @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >= ChannelCount).
- Or Device is invalid.
-
- @note: Inconsistent with specification here:
- Framework Spec IdeCont defined another case to return EFI_INVALID_PARAMETER when
- IdentifyData is NULL. However in the function there is no parameter named IdentifyData.
- So that should be a typo error in spec.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IDE_CONTROLLER_DISQUALIFY_MODE)(
- IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,
- IN UINT8 Channel,
- IN UINT8 Device,
- IN EFI_ATA_COLLECTIVE_MODE *BadModes
-);
-
-/**
- Returns the information about the optimum modes for the specified IDE device.
-
- @param This Pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.
- @param Channel Zero-based channel number.
- @param Device Zero-based device number on the Channel.
- @param SupportedModes The optimum modes for the device.
-
- @retval EFI_SUCCESS SupportedModes was returned.
- @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >= ChannelCount).
- Or Device is invalid. Or SupportedModes is NULL.
- @retval EFI_NOT_READY Modes cannot be calculated due to a lack of data.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IDE_CONTROLLER_CALCULATE_MODE)(
- IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,
- IN UINT8 Channel,
- IN UINT8 Device,
- OUT EFI_ATA_COLLECTIVE_MODE **SupportedModes
-);
-
-/**
- Commands the IDE controller driver to program the IDE controller hardware
- so that the specified device can operate at the specified mode.
-
- @param This Pointer to the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.
- @param Channel Zero-based channel number.
- @param Device Zero-based device number on the Channel.
- @param Modes The modes to set.
-
- @retval EFI_SUCCESS The command was accepted without any errors.
- @retval EFI_INVALID_PARAMETER Channel is invalid (Channel >= ChannelCount).
- Or Device is invalid.
- @retval EFI_NOT_READY Modes cannot be set at this time due to lack of data.
- @retval EFI_DEVICE_ERROR Modes cannot be set due to hardware failure.
- The IDE bus driver should not use this device.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IDE_CONTROLLER_SET_TIMING)(
- IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,
- IN UINT8 Channel,
- IN UINT8 Device,
- IN EFI_ATA_COLLECTIVE_MODE *Modes
-);
-
-//
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interface structure
-// EFI_IDE_CONTROLLER_INIT_PROTOCOL protocol provides the chipset specific information to the IDE bus driver.
-// An IDE Bus driver wants to manage an IDE bus and possible IDE devices will have to retrieve the
-// EFI_IDE_CONTROLLER_INIT_PROTOCOL instances.
-//
-/**
- Provides the basic interfaces to abstract an IDE controller.
-**/
-struct _EFI_IDE_CONTROLLER_INIT_PROTOCOL {
- ///
- /// Returns the information about a specific channel.
- ///
- EFI_IDE_CONTROLLER_GET_CHANNEL_INFO GetChannelInfo;
-
- ///
- /// The notification that the IDE bus driver is about to enter the
- /// specified phase during the enumeration process.
- ///
- EFI_IDE_CONTROLLER_NOTIFY_PHASE NotifyPhase;
-
- ///
- /// Submits the Drive Identify data that was returned by the device.
- ///
- EFI_IDE_CONTROLLER_SUBMIT_DATA SubmitData;
-
- ///
- /// Submits information about modes that should be disqualified.
- ///
- EFI_IDE_CONTROLLER_DISQUALIFY_MODE DisqualifyMode;
-
- ///
- /// Calculates and returns the optimum mode for a particular IDE device.
- ///
- EFI_IDE_CONTROLLER_CALCULATE_MODE CalculateMode;
-
- ///
- /// Programs the IDE controller hardware to the default timing or per the modes
- /// that were returned by the last call to CalculateMode().
- ///
- EFI_IDE_CONTROLLER_SET_TIMING SetTiming;
-
- ///
- /// Set to TRUE if the enumeration group includes all the channels that are
- /// produced by this controller. FALSE if an enumeration group consists of
- /// only one channel.
- ///
- BOOLEAN EnumAll;
-
- ///
- /// The number of channels that are produced by this controller.
- ///
- UINT8 ChannelCount;
-};
-
-extern EFI_GUID gEfiIdeControllerInitProtocolGuid;
-
-#endif