/** @file\r
- This driver module produces IDE_CONTROLLER_INIT protocol and will be used by \r
+ This driver module produces IDE_CONTROLLER_INIT protocol and will be used by\r
IDE Bus driver to support platform dependent timing information. This driver\r
is responsible for early initialization of IDE controller.\r
\r
- Copyright (c) 2008 - 2009 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 - 2010, 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
#include "IdeController.h"\r
\r
-//\r
-// EFI_DRIVER_BINDING_PROTOCOL instance\r
-//\r
+///\r
+/// EFI_DRIVER_BINDING_PROTOCOL instance\r
+///\r
EFI_DRIVER_BINDING_PROTOCOL gIdeControllerDriverBinding = {\r
IdeControllerSupported,\r
IdeControllerStart,\r
NULL\r
};\r
\r
-//\r
-// EFI_IDE_CONTROLLER_PROVATE_DATA Template\r
-//\r
+///\r
+/// EFI_IDE_CONTROLLER_PROVATE_DATA Template\r
+///\r
EFI_IDE_CONTROLLER_INIT_PROTOCOL gEfiIdeControllerInit = {\r
IdeInitGetChannelInfo,\r
IdeInitNotifyPhase,\r
ICH_IDE_MAX_CHANNEL\r
};\r
\r
-//\r
-// EFI_ATA_COLLECTIVE_MODE Template\r
-//\r
+///\r
+/// EFI_ATA_COLLECTIVE_MODE Template\r
+///\r
EFI_ATA_COLLECTIVE_MODE gEfiAtaCollectiveModeTemplate = {\r
- { \r
- TRUE, // PioMode.Valid\r
- 0 // PioMode.Mode\r
+ {\r
+ TRUE, ///< PioMode.Valid\r
+ 0 ///< PioMode.Mode\r
},\r
{\r
- TRUE, // SingleWordDmaMode.Valid\r
+ TRUE, ///< SingleWordDmaMode.Valid\r
0\r
},\r
{\r
- FALSE, // MultiWordDmaMode.Valid\r
+ FALSE, ///< MultiWordDmaMode.Valid\r
0\r
},\r
{\r
- TRUE, // UdmaMode.Valid\r
- 0 // UdmaMode.Mode\r
+ TRUE, ///< UdmaMode.Valid\r
+ 0 ///< UdmaMode.Mode\r
}\r
};\r
\r
+/**\r
+ Chipset Ide Driver EntryPoint function. It follows the standard EFI driver model.\r
+ It's called by StartImage() of DXE Core.\r
+\r
+ @param ImageHandle While the driver image loaded be the ImageLoader(),\r
+ an image handle is assigned to this driver binary,\r
+ all activities of the driver is tied to this ImageHandle\r
+ @param SystemTable A pointer to the system table, for all BS(Boo Services) and\r
+ RT(Runtime Services)\r
+\r
+ @return EFI_STATUS Status of EfiLibInstallDriverBindingComponentName2().\r
+**/\r
EFI_STATUS\r
EFIAPI\r
InitializeIdeControllerDriver (\r
IN EFI_HANDLE ImageHandle,\r
IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
-/*++\r
- Routine Description:\r
- \r
- Chipset Ide Driver EntryPoint function. It follows the standard EFI driver \r
- model. It's called by StartImage() of DXE Core\r
- \r
- Argments:\r
- \r
- ImageHnadle -- While the driver image loaded be the ImageLoader(), \r
- an image handle is assigned to this driver binary, \r
- all activities of the driver is tied to this ImageHandle\r
- *SystemTable -- A pointer to the system table, for all BS(Boo Services) and\r
- RT(Runtime Services)\r
-\r
- Retruns:\r
- \r
- Always call EfiLibInstallDriverBindingProtocol( ) and retrun the result\r
-\r
---*/\r
{\r
EFI_STATUS Status;\r
\r
return Status;\r
}\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
EFI_STATUS Status;\r
EFI_PCI_IO_PROTOCOL *PciIo;\r
return Status;\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
EFI_STATUS Status;\r
EFI_PCI_IO_PROTOCOL *PciIo;\r
}\r
\r
//\r
- // Install IDE_CONTROLLER_INIT protocol \r
+ // Install IDE_CONTROLLER_INIT protocol\r
//\r
return gBS->InstallMultipleProtocolInterfaces (\r
&Controller,\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
EFI_STATUS Status;\r
EFI_IDE_CONTROLLER_INIT_PROTOCOL *IdeControllerInit;\r
//\r
// Interface functions of IDE_CONTROLLER_INIT protocol\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
-Routine Description:\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
-Arguments:\r
-\r
- This -- the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.\r
- Channel -- Channel number (0 based, either 0 or 1)\r
- Enabled -- TRUE if the channel is enabled. If the channel is disabled, \r
- then it will no be enumerated.\r
- 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
-Returns:\r
- EFI_STATUS \r
-\r
---*/\r
{\r
//\r
// Channel number (0 based, either 0 or 1)\r
return EFI_INVALID_PARAMETER;\r
}\r
\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
+ @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_ENUM_PHASE Phase,\r
IN UINT8 Channel\r
)\r
-/*++\r
-\r
-Routine Description:\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
-Arguments:\r
-\r
- This -- the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.\r
- Phase -- phase indicator defined by IDE_CONTROLLER_INIT protocol\r
- Channel -- Channel number (0 based, either 0 or 1)\r
-\r
-Returns:\r
- \r
---*/\r
{\r
return EFI_SUCCESS;\r
}\r
\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
+ @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
- 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
-Arguments:\r
-\r
- This -- the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.\r
- Channel -- IDE channel number (0 based, either 0 or 1)\r
- Device -- IDE device number\r
- IdentifyData -- A pointer to EFI_IDENTIFY_DATA data structure\r
-\r
-Returns:\r
- \r
---*/\r
{\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ This function is called by IdeBus driver to disqualify unsupported operation\r
+ mode on specfic IDE device\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
- This function is called by IdeBus driver to disqualify unsupported operation\r
- mode on specfic IDE device\r
-\r
-Arguments:\r
-\r
- This -- the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.\r
- Channel -- IDE channel number (0 based, either 0 or 1)\r
- Device -- IDE device number\r
- BadModes -- Operation mode indicator\r
-\r
-Returns:\r
- \r
---*/\r
{\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ This function is called by IdeBus driver to calculate the best operation mode\r
+ supported by specific IDE device\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 UINT8 Device,\r
OUT EFI_ATA_COLLECTIVE_MODE **SupportedModes\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- This function is called by IdeBus driver to calculate the best operation mode\r
- supported by specific IDE device\r
-\r
-Arguments:\r
-\r
- This -- the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.\r
- Channel -- IDE channel number (0 based, either 0 or 1)\r
- Device -- IDE device number\r
- SupportedModes -- Modes collection supported by IDE device\r
-\r
-Returns:\r
- \r
---*/\r
{\r
if (Channel >= ICH_IDE_MAX_CHANNEL || Device >= ICH_IDE_MAX_DEVICES) {\r
return EFI_INVALID_PARAMETER;\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ This function is called by IdeBus driver to set appropriate timing on IDE\r
+ controller according supported operation mode.\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
- This function is called by IdeBus driver to set appropriate timing on IDE\r
- controller according supported operation mode\r
-\r
-Arguments:\r
-\r
- This -- the EFI_IDE_CONTROLLER_INIT_PROTOCOL instance.\r
- Channel -- IDE channel number (0 based, either 0 or 1)\r
- Device -- IDE device number\r
-\r
-Returns:\r
- \r
---*/\r
{\r
return EFI_SUCCESS;\r
}\r