mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-31 07:17:27 +00:00 
			
		
		
		
	 0f899407a3
			
		
	
	
		0f899407a3
		
	
	
	
	
		
			
			git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8369 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			474 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			474 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @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, 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.
 | |
| 
 | |
|   Module Name:  IdeControllerInit.h
 | |
| 
 | |
|   @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_
 | |
| 
 | |
| #include <PiDxe.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, 
 | |
|                                 Or IdentifyData is NULL.
 | |
| 
 | |
| **/
 | |
| 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.
 | |
| //
 | |
| /**
 | |
|   @par Protocol Description:
 | |
|   Provides the basic interfaces to abstract an IDE controller.
 | |
| 
 | |
|   @param GetChannelInfo
 | |
|   Returns the information about a specific channel.
 | |
| 
 | |
|   @param NotifyPhase
 | |
|   The notification that the IDE bus driver is about to enter the
 | |
|   specified phase during the enumeration process.
 | |
| 
 | |
|   @param SubmitData
 | |
|   Submits the Drive Identify data that was returned by the device.
 | |
| 
 | |
|   @param DisqualifyMode
 | |
|   Submits information about modes that should be disqualified.
 | |
| 
 | |
|   @param CalculateMode
 | |
|   Calculates and returns the optimum mode for a particular IDE device.
 | |
| 
 | |
|   @param SetTiming
 | |
|   Programs the IDE controller hardware to the default timing or per the modes
 | |
|   that were returned by the last call to CalculateMode().
 | |
| 
 | |
|   @param EnumAll
 | |
|   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.
 | |
| 
 | |
|   @param ChannelCount
 | |
|   The number of channels that are produced by this controller.
 | |
| 
 | |
| **/
 | |
| struct _EFI_IDE_CONTROLLER_INIT_PROTOCOL {
 | |
|   EFI_IDE_CONTROLLER_GET_CHANNEL_INFO    GetChannelInfo;
 | |
|   EFI_IDE_CONTROLLER_NOTIFY_PHASE        NotifyPhase;
 | |
|   EFI_IDE_CONTROLLER_SUBMIT_DATA         SubmitData;
 | |
|   EFI_IDE_CONTROLLER_DISQUALIFY_MODE     DisqualifyMode;
 | |
|   EFI_IDE_CONTROLLER_CALCULATE_MODE      CalculateMode;
 | |
|   EFI_IDE_CONTROLLER_SET_TIMING          SetTiming;
 | |
|   BOOLEAN                                EnumAll;
 | |
|   UINT8                                  ChannelCount;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID gEfiIdeControllerInitProtocolGuid;
 | |
| 
 | |
| #endif
 |