Vishal Bhoj | 82c8071 | 2015-12-15 21:13:33 +0530 | [diff] [blame^] | 1 | /** @file
|
| 2 | Provides the basic interfaces to abstract platform information regarding an
|
| 3 | IDE controller.
|
| 4 |
|
| 5 | Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
|
| 6 | This program and the accompanying materials
|
| 7 | are licensed and made available under the terms and conditions of the BSD License
|
| 8 | which accompanies this distribution. The full text of the license may be found at
|
| 9 | http://opensource.org/licenses/bsd-license.php
|
| 10 |
|
| 11 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
| 12 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
| 13 |
|
| 14 | @par Revision Reference:
|
| 15 | This Protocol is defined in UEFI Platform Initialization Specification 1.2
|
| 16 | Volume 5: Standards
|
| 17 |
|
| 18 | **/
|
| 19 |
|
| 20 | #ifndef __DISK_INFO_H__
|
| 21 | #define __DISK_INFO_H__
|
| 22 |
|
| 23 | ///
|
| 24 | /// Global ID for EFI_DISK_INFO_PROTOCOL
|
| 25 | ///
|
| 26 | #define EFI_DISK_INFO_PROTOCOL_GUID \
|
| 27 | { \
|
| 28 | 0xd432a67f, 0x14dc, 0x484b, {0xb3, 0xbb, 0x3f, 0x2, 0x91, 0x84, 0x93, 0x27 } \
|
| 29 | }
|
| 30 |
|
| 31 | ///
|
| 32 | /// Forward declaration for EFI_DISK_INFO_PROTOCOL
|
| 33 | ///
|
| 34 | typedef struct _EFI_DISK_INFO_PROTOCOL EFI_DISK_INFO_PROTOCOL;
|
| 35 |
|
| 36 | ///
|
| 37 | /// Global ID for an IDE interface. Used to fill in EFI_DISK_INFO_PROTOCOL.Interface
|
| 38 | ///
|
| 39 | #define EFI_DISK_INFO_IDE_INTERFACE_GUID \
|
| 40 | { \
|
| 41 | 0x5e948fe3, 0x26d3, 0x42b5, {0xaf, 0x17, 0x61, 0x2, 0x87, 0x18, 0x8d, 0xec } \
|
| 42 | }
|
| 43 |
|
| 44 | ///
|
| 45 | /// Global ID for a SCSI interface. Used to fill in EFI_DISK_INFO_PROTOCOL.Interface
|
| 46 | ///
|
| 47 | #define EFI_DISK_INFO_SCSI_INTERFACE_GUID \
|
| 48 | { \
|
| 49 | 0x8f74baa, 0xea36, 0x41d9, {0x95, 0x21, 0x21, 0xa7, 0xf, 0x87, 0x80, 0xbc } \
|
| 50 | }
|
| 51 |
|
| 52 | ///
|
| 53 | /// Global ID for a USB interface. Used to fill in EFI_DISK_INFO_PROTOCOL.Interface
|
| 54 | ///
|
| 55 | #define EFI_DISK_INFO_USB_INTERFACE_GUID \
|
| 56 | { \
|
| 57 | 0xcb871572, 0xc11a, 0x47b5, {0xb4, 0x92, 0x67, 0x5e, 0xaf, 0xa7, 0x77, 0x27 } \
|
| 58 | }
|
| 59 |
|
| 60 | ///
|
| 61 | /// Global ID for an AHCI interface. Used to fill in EFI_DISK_INFO_PROTOCOL.Interface
|
| 62 | ///
|
| 63 | #define EFI_DISK_INFO_AHCI_INTERFACE_GUID \
|
| 64 | { \
|
| 65 | 0x9e498932, 0x4abc, 0x45af, {0xa3, 0x4d, 0x2, 0x47, 0x78, 0x7b, 0xe7, 0xc6 } \
|
| 66 | }
|
| 67 |
|
| 68 | ///
|
| 69 | /// Global ID for a NVME interface. Used to fill in EFI_DISK_INFO_PROTOCOL.Interface
|
| 70 | ///
|
| 71 | #define EFI_DISK_INFO_NVME_INTERFACE_GUID \
|
| 72 | { \
|
| 73 | 0x3ab14680, 0x5d3f, 0x4a4d, {0xbc, 0xdc, 0xcc, 0x38, 0x0, 0x18, 0xc7, 0xf7 } \
|
| 74 | }
|
| 75 |
|
| 76 | /**
|
| 77 | Provides inquiry information for the controller type.
|
| 78 |
|
| 79 | This function is used by the IDE bus driver to get inquiry data. Data format
|
| 80 | of Identify data is defined by the Interface GUID.
|
| 81 |
|
| 82 | @param[in] This Pointer to the EFI_DISK_INFO_PROTOCOL instance.
|
| 83 | @param[in,out] InquiryData Pointer to a buffer for the inquiry data.
|
| 84 | @param[in,out] InquiryDataSize Pointer to the value for the inquiry data size.
|
| 85 |
|
| 86 | @retval EFI_SUCCESS The command was accepted without any errors.
|
| 87 | @retval EFI_NOT_FOUND Device does not support this data class
|
| 88 | @retval EFI_DEVICE_ERROR Error reading InquiryData from device
|
| 89 | @retval EFI_BUFFER_TOO_SMALL InquiryDataSize not big enough
|
| 90 |
|
| 91 | **/
|
| 92 | typedef
|
| 93 | EFI_STATUS
|
| 94 | (EFIAPI *EFI_DISK_INFO_INQUIRY)(
|
| 95 | IN EFI_DISK_INFO_PROTOCOL *This,
|
| 96 | IN OUT VOID *InquiryData,
|
| 97 | IN OUT UINT32 *InquiryDataSize
|
| 98 | );
|
| 99 |
|
| 100 | /**
|
| 101 | Provides identify information for the controller type.
|
| 102 |
|
| 103 | This function is used by the IDE bus driver to get identify data. Data format
|
| 104 | of Identify data is defined by the Interface GUID.
|
| 105 |
|
| 106 | @param[in] This Pointer to the EFI_DISK_INFO_PROTOCOL
|
| 107 | instance.
|
| 108 | @param[in,out] IdentifyData Pointer to a buffer for the identify data.
|
| 109 | @param[in,out] IdentifyDataSize Pointer to the value for the identify data
|
| 110 | size.
|
| 111 |
|
| 112 | @retval EFI_SUCCESS The command was accepted without any errors.
|
| 113 | @retval EFI_NOT_FOUND Device does not support this data class
|
| 114 | @retval EFI_DEVICE_ERROR Error reading IdentifyData from device
|
| 115 | @retval EFI_BUFFER_TOO_SMALL IdentifyDataSize not big enough
|
| 116 |
|
| 117 | **/
|
| 118 | typedef
|
| 119 | EFI_STATUS
|
| 120 | (EFIAPI *EFI_DISK_INFO_IDENTIFY)(
|
| 121 | IN EFI_DISK_INFO_PROTOCOL *This,
|
| 122 | IN OUT VOID *IdentifyData,
|
| 123 | IN OUT UINT32 *IdentifyDataSize
|
| 124 | );
|
| 125 |
|
| 126 | /**
|
| 127 | Provides sense data information for the controller type.
|
| 128 |
|
| 129 | This function is used by the IDE bus driver to get sense data.
|
| 130 | Data format of Sense data is defined by the Interface GUID.
|
| 131 |
|
| 132 | @param[in] This Pointer to the EFI_DISK_INFO_PROTOCOL instance.
|
| 133 | @param[in,out] SenseData Pointer to the SenseData.
|
| 134 | @param[in,out] SenseDataSize Size of SenseData in bytes.
|
| 135 | @param[out] SenseDataNumber Pointer to the value for the sense data size.
|
| 136 |
|
| 137 | @retval EFI_SUCCESS The command was accepted without any errors.
|
| 138 | @retval EFI_NOT_FOUND Device does not support this data class.
|
| 139 | @retval EFI_DEVICE_ERROR Error reading SenseData from device.
|
| 140 | @retval EFI_BUFFER_TOO_SMALL SenseDataSize not big enough.
|
| 141 |
|
| 142 | **/
|
| 143 | typedef
|
| 144 | EFI_STATUS
|
| 145 | (EFIAPI *EFI_DISK_INFO_SENSE_DATA)(
|
| 146 | IN EFI_DISK_INFO_PROTOCOL *This,
|
| 147 | IN OUT VOID *SenseData,
|
| 148 | IN OUT UINT32 *SenseDataSize,
|
| 149 | OUT UINT8 *SenseDataNumber
|
| 150 | );
|
| 151 |
|
| 152 | /**
|
| 153 | This function is used by the IDE bus driver to get controller information.
|
| 154 |
|
| 155 | @param[in] This Pointer to the EFI_DISK_INFO_PROTOCOL instance.
|
| 156 | @param[out] IdeChannel Pointer to the Ide Channel number. Primary or secondary.
|
| 157 | @param[out] IdeDevice Pointer to the Ide Device number. Master or slave.
|
| 158 |
|
| 159 | @retval EFI_SUCCESS IdeChannel and IdeDevice are valid.
|
| 160 | @retval EFI_UNSUPPORTED This is not an IDE device.
|
| 161 |
|
| 162 | **/
|
| 163 | typedef
|
| 164 | EFI_STATUS
|
| 165 | (EFIAPI *EFI_DISK_INFO_WHICH_IDE)(
|
| 166 | IN EFI_DISK_INFO_PROTOCOL *This,
|
| 167 | OUT UINT32 *IdeChannel,
|
| 168 | OUT UINT32 *IdeDevice
|
| 169 | );
|
| 170 |
|
| 171 | ///
|
| 172 | /// The EFI_DISK_INFO_PROTOCOL provides controller specific information.
|
| 173 | ///
|
| 174 | struct _EFI_DISK_INFO_PROTOCOL {
|
| 175 | ///
|
| 176 | /// A GUID that defines the format of buffers for the other member functions
|
| 177 | /// of this protocol.
|
| 178 | ///
|
| 179 | EFI_GUID Interface;
|
| 180 | ///
|
| 181 | /// Return the results of the Inquiry command to a drive in InquiryData. Data
|
| 182 | /// format of Inquiry data is defined by the Interface GUID.
|
| 183 | ///
|
| 184 | EFI_DISK_INFO_INQUIRY Inquiry;
|
| 185 | ///
|
| 186 | /// Return the results of the Identify command to a drive in IdentifyData. Data
|
| 187 | /// format of Identify data is defined by the Interface GUID.
|
| 188 | ///
|
| 189 | EFI_DISK_INFO_IDENTIFY Identify;
|
| 190 | ///
|
| 191 | /// Return the results of the Request Sense command to a drive in SenseData. Data
|
| 192 | /// format of Sense data is defined by the Interface GUID.
|
| 193 | ///
|
| 194 | EFI_DISK_INFO_SENSE_DATA SenseData;
|
| 195 | ///
|
| 196 | /// Specific controller.
|
| 197 | ///
|
| 198 | EFI_DISK_INFO_WHICH_IDE WhichIde;
|
| 199 | };
|
| 200 |
|
| 201 | extern EFI_GUID gEfiDiskInfoProtocolGuid;
|
| 202 |
|
| 203 | extern EFI_GUID gEfiDiskInfoIdeInterfaceGuid;
|
| 204 | extern EFI_GUID gEfiDiskInfoScsiInterfaceGuid;
|
| 205 | extern EFI_GUID gEfiDiskInfoUsbInterfaceGuid;
|
| 206 | extern EFI_GUID gEfiDiskInfoAhciInterfaceGuid;
|
| 207 |
|
| 208 | #endif
|