/** @file\r
Header file for IDE controller driver.\r
\r
- Copyright (c) 2008 Intel Corporation. <BR>\r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
+ Copyright (c) 2008 - 2011, Intel Corporation. All rights reserved.<BR>\r
+ This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
**/\r
\r
-#ifndef _IDE_CONTROLLER_H\r
-#define _IDE_CONTROLLER_H\r
+#ifndef _IDE_CONTROLLER_H_\r
+#define _IDE_CONTROLLER_H_\r
\r
#include <Uefi.h>\r
#include <Protocol/ComponentName.h>\r
extern EFI_COMPONENT_NAME_PROTOCOL gIdeControllerComponentName;\r
extern EFI_COMPONENT_NAME2_PROTOCOL gIdeControllerComponentName2;\r
\r
-//\r
-// Supports 2 channel max\r
-//\r
+///\r
+/// Supports 2 channel max\r
+///\r
#define ICH_IDE_MAX_CHANNEL 0x02\r
-//\r
-// Supports 2 devices max\r
-//\r
+\r
+///\r
+/// Supports 2 devices max\r
+///\r
#define ICH_IDE_MAX_DEVICES 0x02\r
#define ICH_IDE_ENUMER_ALL FALSE\r
\r
//\r
// Driver binding functions declaration\r
//\r
+/**\r
+ Register Driver Binding protocol for this driver.\r
+\r
+ @param This A pointer points to the Binding Protocol instance\r
+ @param Controller The handle of controller to be tested.\r
+ @param RemainingDevicePath A pointer to the device path. Ignored by device\r
+ driver but used by bus driver\r
+\r
+ @retval EFI_SUCCESS Driver loaded.\r
+ @retval !EFI_SUCESS Driver not loaded.\r
+**/\r
EFI_STATUS\r
EFIAPI\r
IdeControllerSupported (\r
IN EFI_HANDLE Controller,\r
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
)\r
-/*++\r
-\r
- Routine Description:\r
- \r
- Register Driver Binding protocol for this driver.\r
- \r
- Arguments:\r
- \r
- This -- a pointer points to the Binding Protocol instance\r
- Controller -- The handle of controller to be tested. \r
- *RemainingDevicePath -- A pointer to the device path. Ignored by device\r
- driver but used by bus driver\r
-\r
- Returns:\r
-\r
- EFI_SUCCESS -- Driver loaded.\r
- other -- Driver not loaded.\r
---*/\r
;\r
\r
+/**\r
+ This routine is called right after the .Supported() called and return\r
+ EFI_SUCCESS. Notes: The supported protocols are checked but the Protocols\r
+ are closed.\r
+\r
+ @param This A pointer points to the Binding Protocol instance\r
+ @param Controller The handle of controller to be tested. Parameter\r
+ passed by the caller\r
+ @param RemainingDevicePath A pointer to the device path. Should be ignored by\r
+ device driver\r
+\r
+ @return EFI_STATUS Status of InstallMultipleProtocolInterfaces()\r
+**/\r
EFI_STATUS\r
EFIAPI\r
IdeControllerStart (\r
IN EFI_HANDLE Controller,\r
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
)\r
-/*++\r
-\r
- Routine Description:\r
- \r
- This routine is called right after the .Supported() called and return \r
- EFI_SUCCESS. Notes: The supported protocols are checked but the Protocols\r
- are closed.\r
-\r
- Arguments:\r
- \r
- This -- a pointer points to the Binding Protocol instance\r
- Controller -- The handle of controller to be tested. Parameter\r
- passed by the caller\r
- *RemainingDevicePath -- A pointer to the device path. Should be ignored by\r
- device driver\r
---*/\r
;\r
\r
+/**\r
+ Stop this driver on Controller Handle.\r
+\r
+ @param This Protocol instance pointer.\r
+ @param Controller Handle of device to stop driver on\r
+ @param NumberOfChildren Not used\r
+ @param ChildHandleBuffer Not used\r
+\r
+ @retval EFI_SUCESS This driver is removed DeviceHandle\r
+ @retval !EFI_SUCCESS This driver was not removed from this device\r
+**/\r
EFI_STATUS\r
EFIAPI\r
IdeControllerStop (\r
IN UINTN NumberOfChildren,\r
IN EFI_HANDLE *ChildHandleBuffer\r
)\r
-/*++\r
- \r
- Routine Description:\r
- Stop this driver on Controller Handle. \r
-\r
- Arguments:\r
- This - Protocol instance pointer.\r
- Controller - Handle of device to stop driver on \r
- NumberOfChildren - Not used\r
- ChildHandleBuffer - Not used\r
-\r
- Returns:\r
- EFI_SUCCESS - This driver is removed DeviceHandle\r
- other - This driver was not removed from this device\r
- \r
---*/\r
;\r
\r
//\r
// IDE controller init functions declaration\r
//\r
+/**\r
+ This function can be used to obtain information about a specified channel.\r
+ It's usually used by IDE Bus driver during enumeration process.\r
+\r
+ @param This the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.\r
+ @param Channel Channel number (0 based, either 0 or 1)\r
+ @param Enabled TRUE if the channel is enabled. If the channel is disabled,\r
+ then it will no be enumerated.\r
+ @param MaxDevices The Max number of IDE devices that the bus driver can expect\r
+ on this channel. For ATA/ATAPI, this number is either 1 or 2.\r
+\r
+ @retval EFI_SUCCESS Success to get channel information\r
+ @retval EFI_INVALID_PARAMETER Invalid channel id.\r
+**/\r
EFI_STATUS\r
EFIAPI\r
IdeInitGetChannelInfo (\r
OUT BOOLEAN *Enabled,\r
OUT UINT8 *MaxDevices\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Channel - TODO: add argument description\r
- Enabled - TODO: add argument description\r
- MaxDevices - TODO: add argument description\r
-\r
-Returns:\r
+;\r
\r
- TODO: add return values\r
+/**\r
+ This function is called by IdeBus driver before executing certain actions.\r
+ This allows IDE Controller Init to prepare for each action.\r
\r
---*/\r
-;\r
+ @param This the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.\r
+ @param Phase phase indicator defined by IDE_CONTROLLER_INIT protocol\r
+ @param Channel Channel number (0 based, either 0 or 1)\r
\r
+ @return EFI_SUCCESS Success operation.\r
+**/\r
EFI_STATUS\r
EFIAPI\r
IdeInitNotifyPhase (\r
IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
IN EFI_IDE_CONTROLLER_ENUM_PHASE Phase,\r
- OUT UINT8 Channel\r
+ IN UINT8 Channel\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Phase - TODO: add argument description\r
- Channel - TODO: add argument description\r
-\r
-Returns:\r
+;\r
\r
- TODO: add return values\r
+/**\r
+ This function is called by IdeBus driver to submit EFI_IDENTIFY_DATA data structure\r
+ obtained from IDE deivce. This structure is used to set IDE timing\r
\r
---*/\r
-;\r
+ @param This The EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.\r
+ @param Channel IDE channel number (0 based, either 0 or 1)\r
+ @param Device IDE device number\r
+ @param IdentifyData A pointer to EFI_IDENTIFY_DATA data structure\r
\r
+ @return EFI_SUCCESS Success operation.\r
+**/\r
EFI_STATUS\r
EFIAPI\r
IdeInitSubmitData (\r
IN UINT8 Device,\r
IN EFI_IDENTIFY_DATA *IdentifyData\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Channel - TODO: add argument description\r
- Device - TODO: add argument description\r
- IdentifyData - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
;\r
\r
-EFI_STATUS\r
-EFIAPI\r
-IdeInitSubmitFailingModes (\r
- IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
- IN UINT8 Channel,\r
- IN UINT8 Device\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Channel - TODO: add argument description\r
- Device - TODO: add argument description\r
+/**\r
+ This function is called by IdeBus driver to disqualify unsupported operation\r
+ mode on specfic IDE device\r
\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
+ @param This the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.\r
+ @param Channel IDE channel number (0 based, either 0 or 1)\r
+ @param Device IDE device number\r
+ @param BadModes Operation mode indicator\r
\r
+ @return EFI_SUCCESS Success operation.\r
+**/\r
EFI_STATUS\r
EFIAPI\r
IdeInitDisqualifyMode (\r
IN UINT8 Device,\r
IN EFI_ATA_COLLECTIVE_MODE *BadModes\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Channel - TODO: add argument description\r
- Device - TODO: add argument description\r
- BadModes - TODO: add argument description\r
+;\r
\r
-Returns:\r
+/**\r
+ This function is called by IdeBus driver to calculate the best operation mode\r
+ supported by specific IDE device\r
\r
- TODO: add return values\r
-\r
---*/\r
-;\r
+ @param This the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.\r
+ @param Channel IDE channel number (0 based, either 0 or 1)\r
+ @param Device IDE device number\r
+ @param SupportedModes Modes collection supported by IDE device\r
\r
+ @retval EFI_OUT_OF_RESOURCES Fail to allocate pool.\r
+ @retval EFI_INVALID_PARAMETER Invalid channel id and device id.\r
+**/\r
EFI_STATUS\r
EFIAPI\r
IdeInitCalculateMode (\r
IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
IN UINT8 Channel,\r
IN UINT8 Device,\r
- IN EFI_ATA_COLLECTIVE_MODE **SupportedModes\r
+ OUT EFI_ATA_COLLECTIVE_MODE **SupportedModes\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Channel - TODO: add argument description\r
- Device - TODO: add argument description\r
- SupportedModes - TODO: add argument description\r
+;\r
\r
-Returns:\r
+/**\r
+ This function is called by IdeBus driver to set appropriate timing on IDE\r
+ controller according supported operation mode.\r
\r
- TODO: add return values\r
-\r
---*/\r
-;\r
+ @param This the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.\r
+ @param Channel IDE channel number (0 based, either 0 or 1)\r
+ @param Device IDE device number\r
+ @param Modes IDE device modes\r
\r
+ @retval EFI_SUCCESS Sucess operation.\r
+**/\r
EFI_STATUS\r
EFIAPI\r
IdeInitSetTiming (\r
IN UINT8 Device,\r
IN EFI_ATA_COLLECTIVE_MODE *Modes\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Channel - TODO: add argument description\r
- Device - TODO: add argument description\r
- Modes - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
;\r
\r
//\r
// Forward reference declaration\r
//\r
+/**\r
+ Retrieves a Unicode string that is the user readable name of the EFI Driver.\r
+\r
+ @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.\r
+ @param Language A pointer to a three character ISO 639-2 language identifier.\r
+ This is the language of the driver name that that the caller\r
+ is requesting, and it must match one of the languages specified\r
+ in SupportedLanguages. The number of languages supported by a\r
+ driver is up to the driver writer.\r
+ @param DriverName A pointer to the Unicode string to return. This Unicode string\r
+ is the name of the driver specified by This in the language\r
+ specified by Language.\r
+\r
+ @retval EFI_SUCCESS The Unicode string for the Driver specified by This\r
+ and the language specified by Language was returned\r
+ in DriverName.\r
+ @retval EFI_INVALID_PARAMETER Language is NULL.\r
+ @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
+ @retval EFI_UNSUPPORTED The driver specified by This does not support the\r
+ language specified by Language.\r
+**/\r
EFI_STATUS\r
EFIAPI\r
IdeControllerComponentNameGetDriverName (\r
IN CHAR8 *Language,\r
OUT CHAR16 **DriverName\r
)\r
-/*++\r
-\r
- Routine Description:\r
- Retrieves a Unicode string that is the user readable name of the EFI Driver.\r
-\r
- Arguments:\r
- This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.\r
- Language - A pointer to a three character ISO 639-2 language identifier.\r
- This is the language of the driver name that that the caller \r
- is requesting, and it must match one of the languages specified\r
- in SupportedLanguages. The number of languages supported by a \r
- driver is up to the driver writer.\r
- DriverName - A pointer to the Unicode string to return. This Unicode string\r
- is the name of the driver specified by This in the language \r
- specified by Language.\r
-\r
- Returns:\r
- EFI_SUCCESS - The Unicode string for the Driver specified by This\r
- and the language specified by Language was returned \r
- in DriverName.\r
- EFI_INVALID_PARAMETER - Language is NULL.\r
- EFI_INVALID_PARAMETER - DriverName is NULL.\r
- EFI_UNSUPPORTED - The driver specified by This does not support the \r
- language specified by Language.\r
-\r
---*/\r
;\r
\r
+/**\r
+ Retrieves a Unicode string that is the user readable name of the controller\r
+ that is being managed by an EFI Driver.\r
+\r
+ @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.\r
+ @param ControllerHandle The handle of a controller that the driver specified by\r
+ This is managing. This handle specifies the controller\r
+ whose name is to be returned.\r
+ @param OPTIONAL ChildHandle The handle of the child controller to retrieve the name\r
+ of. This is an optional parameter that may be NULL. It\r
+ will be NULL for device drivers. It will also be NULL\r
+ for a bus drivers that wish to retrieve the name of the\r
+ bus controller. It will not be NULL for a bus driver\r
+ that wishes to retrieve the name of a child controller.\r
+ @param Language A pointer to a three character ISO 639-2 language\r
+ identifier. This is the language of the controller name\r
+ that that the caller is requesting, and it must match one\r
+ of the languages specified in SupportedLanguages. The\r
+ number of languages supported by a driver is up to the\r
+ driver writer.\r
+ @param ControllerName A pointer to the Unicode string to return. This Unicode\r
+ string is the name of the controller specified by\r
+ ControllerHandle and ChildHandle in the language\r
+ specified by Language from the point of view of the\r
+ driver specified by This.\r
+\r
+ @retval EFI_SUCCESS The Unicode string for the user readable name in the\r
+ language specified by Language for the driver\r
+ specified by This was returned in DriverName.\r
+ @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
+ @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
+ EFI_HANDLE.\r
+ @retval EFI_INVALID_PARAMETER Language is NULL.\r
+ @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
+ @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
+ managing the controller specified by\r
+ ControllerHandle and ChildHandle.\r
+ @retval EFI_UNSUPPORTED The driver specified by This does not support the\r
+ language specified by Language.\r
+**/\r
EFI_STATUS\r
EFIAPI\r
IdeControllerComponentNameGetControllerName (\r
IN CHAR8 *Language,\r
OUT CHAR16 **ControllerName\r
)\r
-/*++\r
-\r
- Routine Description:\r
- Retrieves a Unicode string that is the user readable name of the controller\r
- that is being managed by an EFI Driver.\r
-\r
- Arguments:\r
- This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.\r
- ControllerHandle - The handle of a controller that the driver specified by \r
- This is managing. This handle specifies the controller \r
- whose name is to be returned.\r
- ChildHandle - The handle of the child controller to retrieve the name \r
- of. This is an optional parameter that may be NULL. It \r
- will be NULL for device drivers. It will also be NULL \r
- for a bus drivers that wish to retrieve the name of the \r
- bus controller. It will not be NULL for a bus driver \r
- that wishes to retrieve the name of a child controller.\r
- Language - A pointer to a three character ISO 639-2 language \r
- identifier. This is the language of the controller name \r
- that that the caller is requesting, and it must match one\r
- of the languages specified in SupportedLanguages. The \r
- number of languages supported by a driver is up to the \r
- driver writer.\r
- ControllerName - A pointer to the Unicode string to return. This Unicode\r
- string is the name of the controller specified by \r
- ControllerHandle and ChildHandle in the language \r
- specified by Language from the point of view of the \r
- driver specified by This. \r
-\r
- Returns:\r
- EFI_SUCCESS - The Unicode string for the user readable name in the \r
- language specified by Language for the driver \r
- specified by This was returned in DriverName.\r
- EFI_INVALID_PARAMETER - ControllerHandle is not a valid EFI_HANDLE.\r
- EFI_INVALID_PARAMETER - ChildHandle is not NULL and it is not a valid \r
- EFI_HANDLE.\r
- EFI_INVALID_PARAMETER - Language is NULL.\r
- EFI_INVALID_PARAMETER - ControllerName is NULL.\r
- EFI_UNSUPPORTED - The driver specified by This is not currently \r
- managing the controller specified by \r
- ControllerHandle and ChildHandle.\r
- EFI_UNSUPPORTED - The driver specified by This does not support the \r
- language specified by Language.\r
-\r
---*/\r
;\r
\r
#endif\r