modify coding style to pass ecc tool and provide comments that complied with Doxgen.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5427 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
eric_tian 2008-07-08 10:26:16 +00:00
parent 38bbd3d91c
commit 78c2ffb5a7
13 changed files with 632 additions and 812 deletions

View File

@ -1,4 +1,5 @@
/** @file
UEFI Component Name(2) protocol implementation for EHCI driver.
Copyright (c) 2006 - 2007, Intel Corporation
@ -11,13 +12,6 @@ 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:
ComponentName.c
Abstract:
**/
#include "Ehci.h"

View File

@ -1,4 +1,6 @@
/** @file
The Ehci controller driver.
Copyright (c) 2006 - 2008, Intel Corporation
All rights reserved. This program and the accompanying materials
@ -9,15 +11,6 @@ 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:
Ehci.c
Abstract:
Revision History
**/
@ -47,17 +40,16 @@ USB_PORT_STATE_MAP mUsbPortChangeMap[] = {
/**
Retrieves the capablility of root hub ports.
@param This This EFI_USB_HC_PROTOCOL instance.
@param MaxSpeed Max speed supported by the controller
@param PortNumber Number of the root hub ports.
@param Is64BitCapable Whether the controller supports 64-bit memory
addressing.
@param This This EFI_USB_HC_PROTOCOL instance.
@param MaxSpeed Max speed supported by the controller.
@param PortNumber Number of the root hub ports.
@param Is64BitCapable Whether the controller supports 64-bit memory
addressing.
@return EFI_SUCCESS : host controller capability were retrieved successfully.
@return EFI_INVALID_PARAMETER : Either of the three capability pointer is NULL
@retval EFI_SUCCESS Host controller capability were retrieved successfully.
@retval EFI_INVALID_PARAMETER Either of the three capability pointer is NULL.
**/
STATIC
EFI_STATUS
EFIAPI
EhcGetCapability (
@ -91,17 +83,16 @@ EhcGetCapability (
/**
Provides software reset for the USB host controller.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param Attributes A bit mask of the reset operation to perform.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param Attributes A bit mask of the reset operation to perform.
@return EFI_SUCCESS : The reset operation succeeded.
@return EFI_INVALID_PARAMETER : Attributes is not valid.
@return EFI_UNSUPPOURTED : The type of reset specified by Attributes is
@return not currently supported by the host controller.
@return EFI_DEVICE_ERROR : Host controller isn't halted to reset.
@retval EFI_SUCCESS The reset operation succeeded.
@retval EFI_INVALID_PARAMETER Attributes is not valid.
@retval EFI_UNSUPPOURTED The type of reset specified by Attributes is
not currently supported by the host controller.
@retval EFI_DEVICE_ERROR Host controller isn't halted to reset.
**/
STATIC
EFI_STATUS
EFIAPI
EhcReset (
@ -170,17 +161,16 @@ ON_EXIT:
/**
Retrieve the current state of the USB host controller.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param State Variable to return the current host controller
state.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param State Variable to return the current host controller
state.
@return EFI_SUCCESS : Host controller state was returned in State.
@return EFI_INVALID_PARAMETER : State is NULL.
@return EFI_DEVICE_ERROR : An error was encountered while attempting to
@return retrieve the host controller's current state.
@retval EFI_SUCCESS Host controller state was returned in State.
@retval EFI_INVALID_PARAMETER State is NULL.
@retval EFI_DEVICE_ERROR An error was encountered while attempting to
retrieve the host controller's current state.
**/
STATIC
EFI_STATUS
EFIAPI
EhcGetState (
@ -214,16 +204,15 @@ EhcGetState (
/**
Sets the USB host controller to a specific state.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param State The state of the host controller that will be set.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param State The state of the host controller that will be set.
@return EFI_SUCCESS : The USB host controller was successfully placed
@return in the state specified by State.
@return EFI_INVALID_PARAMETER : State is invalid.
@return EFI_DEVICE_ERROR : Failed to set the state due to device error.
@retval EFI_SUCCESS The USB host controller was successfully placed
in the state specified by State.
@retval EFI_INVALID_PARAMETER State is invalid.
@retval EFI_DEVICE_ERROR Failed to set the state due to device error.
**/
STATIC
EFI_STATUS
EFIAPI
EhcSetState (
@ -290,18 +279,17 @@ EhcSetState (
/**
Retrieves the current status of a USB root hub port.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param PortNumber The root hub port to retrieve the state from. This
value is zero-based.
@param PortStatus Variable to receive the port state
@param This This EFI_USB2_HC_PROTOCOL instance.
@param PortNumber The root hub port to retrieve the state from.
This value is zero-based.
@param PortStatus Variable to receive the port state.
@return EFI_SUCCESS : The status of the USB root hub port specified
@return by PortNumber was returned in PortStatus.
@return EFI_INVALID_PARAMETER : PortNumber is invalid.
@return EFI_DEVICE_ERROR : Can't read register
@retval EFI_SUCCESS The status of the USB root hub port specified.
by PortNumber was returned in PortStatus.
@retval EFI_INVALID_PARAMETER PortNumber is invalid.
@retval EFI_DEVICE_ERROR Can't read register.
**/
STATIC
EFI_STATUS
EFIAPI
EhcGetRootHubPortStatus (
@ -382,16 +370,15 @@ ON_EXIT:
/**
Sets a feature for the specified root hub port.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param PortNumber Root hub port to set.
@param PortFeature Feature to set
@param This This EFI_USB2_HC_PROTOCOL instance.
@param PortNumber Root hub port to set.
@param PortFeature Feature to set.
@return EFI_SUCCESS : The feature specified by PortFeature was set
@return EFI_INVALID_PARAMETER : PortNumber is invalid or PortFeature is invalid.
@return EFI_DEVICE_ERROR : Can't read register
@retval EFI_SUCCESS The feature specified by PortFeature was set.
@retval EFI_INVALID_PARAMETER PortNumber is invalid or PortFeature is invalid.
@retval EFI_DEVICE_ERROR Can't read register.
**/
STATIC
EFI_STATUS
EFIAPI
EhcSetRootHubPortFeature (
@ -490,19 +477,18 @@ ON_EXIT:
/**
Clears a feature for the specified root hub port.
@param This A pointer to the EFI_USB2_HC_PROTOCOL instance.
@param PortNumber Specifies the root hub port whose feature is
requested to be cleared.
@param PortFeature Indicates the feature selector associated with the
feature clear request.
@param This A pointer to the EFI_USB2_HC_PROTOCOL instance.
@param PortNumber Specifies the root hub port whose feature is
requested to be cleared.
@param PortFeature Indicates the feature selector associated with the
feature clear request.
@return EFI_SUCCESS : The feature specified by PortFeature was cleared
@return for the USB root hub port specified by PortNumber.
@return EFI_INVALID_PARAMETER : PortNumber is invalid or PortFeature is invalid.
@return EFI_DEVICE_ERROR : Can't read register
@retval EFI_SUCCESS The feature specified by PortFeature was cleared
for the USB root hub port specified by PortNumber.
@retval EFI_INVALID_PARAMETER PortNumber is invalid or PortFeature is invalid.
@retval EFI_DEVICE_ERROR Can't read register.
**/
STATIC
EFI_STATUS
EFIAPI
EhcClearRootHubPortFeature (
@ -617,28 +603,27 @@ ON_EXIT:
/**
Submits control transfer to a target USB device.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param DeviceAddress The target device address
@param DeviceSpeed Target device speed.
@param MaximumPacketLength Maximum packet size the default control transfer
endpoint is capable of sending or receiving.
@param Request USB device request to send
@param TransferDirection Specifies the data direction for the data stage
@param Data Data buffer to be transmitted or received from USB
device.
@param DataLength The size (in bytes) of the data buffer
@param TimeOut Indicates the maximum timeout, in millisecond,
@param Translator Transaction translator to be used by this device.
@param TransferResult Return the result of this control transfer.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param DeviceAddress The target device address.
@param DeviceSpeed Target device speed.
@param MaximumPacketLength Maximum packet size the default control transfer
endpoint is capable of sending or receiving.
@param Request USB device request to send.
@param TransferDirection Specifies the data direction for the data stage
@param Data Data buffer to be transmitted or received from USB
device.
@param DataLength The size (in bytes) of the data buffer.
@param TimeOut Indicates the maximum timeout, in millisecond.
@param Translator Transaction translator to be used by this device.
@param TransferResult Return the result of this control transfer.
@return EFI_SUCCESS : Transfer was completed successfully.
@return EFI_OUT_OF_RESOURCES : The transfer failed due to lack of resources.
@return EFI_INVALID_PARAMETER : Some parameters are invalid.
@return EFI_TIMEOUT : Transfer failed due to timeout.
@return EFI_DEVICE_ERROR : Transfer failed due to host controller or device error.
@retval EFI_SUCCESS Transfer was completed successfully.
@retval EFI_OUT_OF_RESOURCES The transfer failed due to lack of resources.
@retval EFI_INVALID_PARAMETER Some parameters are invalid.
@retval EFI_TIMEOUT Transfer failed due to timeout.
@retval EFI_DEVICE_ERROR Transfer failed due to host controller or device error.
**/
STATIC
EFI_STATUS
EFIAPI
EhcControlTransfer (
@ -775,35 +760,33 @@ ON_EXIT:
/**
Submits bulk transfer to a bulk endpoint of a USB device.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param DeviceAddress Target device address
@param EndPointAddress Endpoint number and its direction in bit 7. .
@param DeviceSpeed Device speed, Low speed device doesn't support bulk
transfer.
@param MaximumPacketLength Maximum packet size the endpoint is capable of
sending or receiving.
@param DataBuffersNumber Number of data buffers prepared for the transfer.
@param Data Array of pointers to the buffers of data to transmit
@param This This EFI_USB2_HC_PROTOCOL instance.
@param DeviceAddress Target device address.
@param EndPointAddress Endpoint number and its direction in bit 7.
@param DeviceSpeed Device speed, Low speed device doesn't support bulk
transfer.
@param MaximumPacketLength Maximum packet size the endpoint is capable of
sending or receiving.
@param DataBuffersNumber Number of data buffers prepared for the transfer.
@param Data Array of pointers to the buffers of data to transmit
from or receive into.
@param DataLength The lenght of the data buffer
@param DataToggle On input, the initial data toggle for the transfer;
On output, it is updated to to next data toggle to
use of the subsequent bulk
transfer.
@param Translator A pointr to the transaction translator data.
@param TimeOut Indicates the maximum time, in millisecond, which
the transfer is allowed to complete.
@param TransferResult A pointer to the detailed result information of the
bulk transfer.
@param DataLength The lenght of the data buffer.
@param DataToggle On input, the initial data toggle for the transfer;
On output, it is updated to to next data toggle to
use of the subsequent bulk transfer.
@param TimeOut Indicates the maximum time, in millisecond, which
the transfer is allowed to complete.
@param Translator A pointr to the transaction translator data.
@param TransferResult A pointer to the detailed result information of the
bulk transfer.
@return EFI_SUCCESS : The transfer was completed successfully.
@return EFI_OUT_OF_RESOURCES : The transfer failed due to lack of resource.
@return EFI_INVALID_PARAMETER : Some parameters are invalid.
@return EFI_TIMEOUT : The transfer failed due to timeout.
@return EFI_DEVICE_ERROR : The transfer failed due to host controller error.
@retval EFI_SUCCESS The transfer was completed successfully.
@retval EFI_OUT_OF_RESOURCES The transfer failed due to lack of resource.
@retval EFI_INVALID_PARAMETER Some parameters are invalid.
@retval EFI_TIMEOUT The transfer failed due to timeout.
@retval EFI_DEVICE_ERROR The transfer failed due to host controller error.
**/
STATIC
EFI_STATUS
EFIAPI
EhcBulkTransfer (
@ -918,32 +901,31 @@ ON_EXIT:
Submits an asynchronous interrupt transfer to an
interrupt endpoint of a USB device.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param DeviceAddress Target device address
@param EndPointAddress Endpoint number and its direction encoded in bit 7
@param DeviceSpeed Indicates device speed.
@param MaximumPacketLength Maximum packet size the target endpoint is capable
@param IsNewTransfer If TRUE, to submit an new asynchronous interrupt
transfer If FALSE, to remove the specified
asynchronous interrupt
@param DataToggle On input, the initial data toggle to use; on output,
it is updated to indicate the next data toggle
@param PollingInterval The he interval, in milliseconds, that the transfer
is polled.
@param DataLength The length of data to receive at the rate specified
by PollingInterval.
@param Translator Transaction translator to use.
@param CallBackFunction Function to call at the rate specified by
PollingInterval
@param Context Context to CallBackFunction.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param DeviceAddress Target device address.
@param EndPointAddress Endpoint number and its direction encoded in bit 7
@param DeviceSpeed Indicates device speed.
@param MaximumPacketLength Maximum packet size the target endpoint is capable
@param IsNewTransfer If TRUE, to submit an new asynchronous interrupt
transfer If FALSE, to remove the specified
asynchronous interrupt.
@param DataToggle On input, the initial data toggle to use; on output,
it is updated to indicate the next data toggle.
@param PollingInterval The he interval, in milliseconds, that the transfer
is polled.
@param DataLength The length of data to receive at the rate specified
by PollingInterval.
@param Translator Transaction translator to use.
@param CallBackFunction Function to call at the rate specified by
PollingInterval.
@param Context Context to CallBackFunction.
@return EFI_SUCCESS : The request has been successfully submitted or canceled.
@return EFI_INVALID_PARAMETER : Some parameters are invalid.
@return EFI_OUT_OF_RESOURCES : The request failed due to a lack of resources.
@return EFI_DEVICE_ERROR : The transfer failed due to host controller error.
@retval EFI_SUCCESS The request has been successfully submitted or canceled.
@retval EFI_INVALID_PARAMETER Some parameters are invalid.
@retval EFI_OUT_OF_RESOURCES The request failed due to a lack of resources.
@retval EFI_DEVICE_ERROR The transfer failed due to host controller error.
**/
STATIC
EFI_STATUS
EFIAPI
EhcAsyncInterruptTransfer (
@ -1067,30 +1049,29 @@ ON_EXIT:
Submits synchronous interrupt transfer to an interrupt endpoint
of a USB device.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param DeviceAddress Target device address
@param EndPointAddress Endpoint number and its direction encoded in bit 7
@param DeviceSpeed Indicates device speed.
@param MaximumPacketLength Maximum packet size the target endpoint is capable
of sending or receiving.
@param Data Buffer of data that will be transmitted to USB
device or received from USB device.
@param DataLength On input, the size, in bytes, of the data buffer; On
output, the number of bytes transferred.
@param DataToggle On input, the initial data toggle to use; on output,
it is updated to indicate the next data toggle
@param TimeOut Maximum time, in second, to complete
@param Translator Transaction translator to use.
@param TransferResult Variable to receive the transfer result
@param This This EFI_USB2_HC_PROTOCOL instance.
@param DeviceAddress Target device address.
@param EndPointAddress Endpoint number and its direction encoded in bit 7
@param DeviceSpeed Indicates device speed.
@param MaximumPacketLength Maximum packet size the target endpoint is capable
of sending or receiving.
@param Data Buffer of data that will be transmitted to USB
device or received from USB device.
@param DataLength On input, the size, in bytes, of the data buffer; On
output, the number of bytes transferred.
@param DataToggle On input, the initial data toggle to use; on output,
it is updated to indicate the next data toggle.
@param TimeOut Maximum time, in second, to complete.
@param Translator Transaction translator to use.
@param TransferResult Variable to receive the transfer result.
@return EFI_SUCCESS : The transfer was completed successfully.
@return EFI_OUT_OF_RESOURCES : The transfer failed due to lack of resource.
@return EFI_INVALID_PARAMETER : Some parameters are invalid.
@return EFI_TIMEOUT : The transfer failed due to timeout.
@return EFI_DEVICE_ERROR : The failed due to host controller or device error
@return EFI_SUCCESS The transfer was completed successfully.
@return EFI_OUT_OF_RESOURCES The transfer failed due to lack of resource.
@return EFI_INVALID_PARAMETER Some parameters are invalid.
@return EFI_TIMEOUT The transfer failed due to timeout.
@return EFI_DEVICE_ERROR The failed due to host controller or device error
**/
STATIC
EFI_STATUS
EFIAPI
EhcSyncInterruptTransfer (
@ -1201,8 +1182,8 @@ ON_EXIT:
Submits isochronous transfer to a target USB device.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param DeviceAddress Target device address
@param EndPointAddress End point address with its direction
@param DeviceAddress Target device address.
@param EndPointAddress End point address with its direction.
@param DeviceSpeed Device speed, Low speed device doesn't support this
type.
@param MaximumPacketLength Maximum packet size that the endpoint is capable of
@ -1211,14 +1192,13 @@ ON_EXIT:
@param Data Array of pointers to the buffers of data that will
be transmitted to USB device or received from USB
device.
@param DataLength The size, in bytes, of the data buffer
@param DataLength The size, in bytes, of the data buffer.
@param Translator Transaction translator to use.
@param TransferResult Variable to receive the transfer result
@param TransferResult Variable to receive the transfer result.
@return EFI_UNSUPPORTED : Isochronous transfer is unsupported.
@return EFI_UNSUPPORTED Isochronous transfer is unsupported.
**/
STATIC
EFI_STATUS
EFIAPI
EhcIsochronousTransfer (
@ -1242,8 +1222,8 @@ EhcIsochronousTransfer (
Submits Async isochronous transfer to a target USB device.
@param This This EFI_USB2_HC_PROTOCOL instance.
@param DeviceAddress Target device address
@param EndPointAddress End point address with its direction
@param DeviceAddress Target device address.
@param EndPointAddress End point address with its direction.
@param DeviceSpeed Device speed, Low speed device doesn't support this
type.
@param MaximumPacketLength Maximum packet size that the endpoint is capable of
@ -1252,16 +1232,15 @@ EhcIsochronousTransfer (
@param Data Array of pointers to the buffers of data that will
be transmitted to USB device or received from USB
device.
@param DataLength The size, in bytes, of the data buffer
@param DataLength The size, in bytes, of the data buffer.
@param Translator Transaction translator to use.
@param IsochronousCallBack Function to be called when the transfer complete
@param IsochronousCallBack Function to be called when the transfer complete.
@param Context Context passed to the call back function as
parameter
parameter.
@return EFI_UNSUPPORTED : Isochronous transfer isn't supported
@return EFI_UNSUPPORTED Isochronous transfer isn't supported.
**/
STATIC
EFI_STATUS
EFIAPI
EhcAsyncIsochronousTransfer (
@ -1281,29 +1260,22 @@ EhcAsyncIsochronousTransfer (
return EFI_UNSUPPORTED;
}
/**
Entry point for EFI drivers.
@param ImageHandle EFI_HANDLE.
@param SystemTable EFI_SYSTEM_TABLE.
@return EFI_SUCCESS Success.
EFI_DEVICE_ERROR Fail.
**/
EFI_STATUS
EFIAPI
EhcDriverEntryPoint (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
/*++
Routine Description:
Entry point for EFI drivers.
Arguments:
ImageHandle - EFI_HANDLE
SystemTable - EFI_SYSTEM_TABLE
Returns:
EFI_SUCCESS Success
EFI_DEVICE_ERROR Fail
--*/
{
return EfiLibInstallDriverBindingComponentName2 (
ImageHandle,
@ -1322,11 +1294,11 @@ Returns:
be supported.
@param This Protocol instance pointer.
@param Controlle Handle of device to test
@param RemainingDevicePath Not used
@param Controller Handle of device to test.
@param RemainingDevicePath Not used.
@return EFI_SUCCESS : This driver supports this device.
@return EFI_UNSUPPORTED : This driver does not support this device.
@return EFI_SUCCESS This driver supports this device.
@return EFI_UNSUPPORTED This driver does not support this device.
**/
EFI_STATUS
@ -1393,16 +1365,15 @@ ON_EXIT:
/**
Create and initialize a USB2_HC_DEV
Create and initialize a USB2_HC_DEV.
@param PciIo The PciIo on this device
@param OriginalPciAttributes Original PCI attributes
@param PciIo The PciIo on this device.
@param OriginalPciAttributes Original PCI attributes.
@return The allocated and initialized USB2_HC_DEV structure
@return if created, otherwise NULL.
@return The allocated and initialized USB2_HC_DEV structure if created,
otherwise NULL.
**/
STATIC
USB2_HC_DEV *
EhcCreateUsb2Hc (
IN EFI_PCI_IO_PROTOCOL *PciIo,
@ -1471,16 +1442,16 @@ EhcCreateUsb2Hc (
/**
Starting the Usb EHCI Driver
Starting the Usb EHCI Driver.
@param This Protocol instance pointer.
@param Controller Handle of device to test
@param RemainingDevicePath Not used
@param Controller Handle of device to test.
@param RemainingDevicePath Not used.
@return EFI_SUCCESS : supports this device.
@return EFI_UNSUPPORTED : do not support this device.
@return EFI_DEVICE_ERROR : cannot be started due to device Error
@return EFI_OUT_OF_RESOURCES : cannot allocate resources
@return EFI_SUCCESS supports this device.
@return EFI_UNSUPPORTED do not support this device.
@return EFI_DEVICE_ERROR cannot be started due to device Error.
@return EFI_OUT_OF_RESOURCES cannot allocate resources.
**/
EFI_STATUS
@ -1668,12 +1639,12 @@ CLOSE_PCIIO:
created by this driver.
@param This Protocol instance pointer.
@param Controller Handle of device to stop driver on
@param NumberOfChildren Number of Children in the ChildHandleBuffer
@param Controller Handle of device to stop driver on.
@param NumberOfChildren Number of Children in the ChildHandleBuffer.
@param ChildHandleBuffer List of handles for the children we need to stop.
@return EFI_SUCCESS Success
@return EFI_DEVICE_ERROR Fail
@return EFI_SUCCESS Success.
@return EFI_DEVICE_ERROR Fail.
**/
EFI_STATUS
@ -1734,7 +1705,7 @@ EhcDriverBindingStop (
EhcFreeSched (Ehc);
if (Ehc->ControllerNameTable) {
if (Ehc->ControllerNameTable != NULL) {
FreeUnicodeStringTable (Ehc->ControllerNameTable);
}

View File

@ -1,5 +1,7 @@
/** @file
Provides some data struct used by EHCI controller driver.
Copyright (c) 2006 - 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
@ -9,15 +11,6 @@ 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:
Ehci.h
Abstract:
Revision History
**/
#ifndef _EFI_EHCI_H_
@ -48,7 +41,7 @@ typedef struct _USB2_HC_DEV USB2_HC_DEV;
#include "EhciSched.h"
#include "EhciDebug.h"
enum {
typedef enum {
EHC_1_MICROSECOND = 1,
EHC_1_MILLISECOND = 1000 * EHC_1_MICROSECOND,
EHC_1_SECOND = 1000 * EHC_1_MILLISECOND,
@ -69,16 +62,17 @@ enum {
// and the unit of Async is 100us, means 50ms as interval.
//
EHC_SYNC_POLL_INTERVAL = 20 * EHC_1_MICROSECOND,
EHC_ASYNC_POLL_INTERVAL = 50 * 10000U,
EHC_ASYNC_POLL_INTERVAL = 50 * 10000U
} EHC_TIMEOUT_EXPERIENCE_VALUE;
//
// EHC raises TPL to TPL_NOTIFY to serialize all its operations
// to protect shared data structures.
//
EHC_TPL = TPL_NOTIFY,
#define EHC_TPL TPL_NOTIFY
USB2_HC_DEV_SIGNATURE = EFI_SIGNATURE_32 ('e', 'h', 'c', 'i')
};
#define USB2_HC_DEV_SIGNATURE EFI_SIGNATURE_32 ('e', 'h', 'c', 'i')
//
//Iterate through the doule linked list. NOT delete safe

View File

@ -1,5 +1,7 @@
/** @file
This file provides the information dump support for EHCI when in debug mode.
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
@ -9,30 +11,19 @@ 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:
EhciDebug.c
Abstract:
This file provides the information dump support for EHCI when in debug mode.
Revision History
**/
#include "Ehci.h"
/**
Dump the status byte in QTD/QH to a more friendly
format
Dump the status byte in QTD/QH to a more friendly format.
@param State The state in the QTD/QH
@param State The state in the QTD/QH.
@return None
@return None.
**/
STATIC
VOID
EhcDumpStatus (
IN UINT32 State
@ -75,10 +66,10 @@ EhcDumpStatus (
/**
Dump the fields of a QTD
Dump the fields of a QTD.
@param Qtd The QTD to dump
@param Msg The message to print before the dump
@param Qtd The QTD to dump.
@param Msg The message to print before the dump.
@return None
@ -129,11 +120,11 @@ EhcDumpQtd (
/**
Dump the queue head
Dump the queue head.
@param Qh The queue head to dump
@param Msg The message to print before the dump
@param DumpBuf Whether to dump the memory buffer of the associated QTD
@param Qh The queue head to dump.
@param Msg The message to print before the dump.
@param DumpBuf Whether to dump the memory buffer of the associated QTD.
@return None
@ -218,12 +209,12 @@ EhcDumpQh (
/**
Dump the buffer in the form of hex
Dump the buffer in the form of hex.
@param Buf The buffer to dump
@param Len The length of buffer
@param Buf The buffer to dump.
@param Len The length of buffer.
@return None
@return None.
**/
VOID

View File

@ -26,12 +26,12 @@ Revision History
/**
Dump the fields of a QTD
Dump the fields of a QTD.
@param Qtd The QTD to dump
@param Msg The message to print before the dump
@param Qtd The QTD to dump.
@param Msg The message to print before the dump.
@return None
@return None.
**/
VOID
@ -44,13 +44,13 @@ EhcDumpQtd (
/**
Dump the queue head
Dump the queue head.
@param Qh The queue head to dump
@param Msg The message to print before the dump
@param DumpBuf Whether to dump the memory buffer of the associated QTD
@param Qh The queue head to dump.
@param Msg The message to print before the dump.
@param DumpBuf Whether to dump the memory buffer of the associated QTD.
@return None
@return None.
**/
VOID
@ -64,12 +64,12 @@ EhcDumpQh (
/**
Dump the buffer in the form of hex
Dump the buffer in the form of hex.
@param Buf The buffer to dump
@param Len The length of buffer
@param Buf The buffer to dump.
@param Len The length of buffer.
@return None
@return None.
**/
VOID

View File

@ -1,5 +1,7 @@
/** @file
The EHCI register operation routines.
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
@ -9,17 +11,6 @@ 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:
EhciReg.c
Abstract:
The EHCI register operation routines.
Revision History
**/
@ -27,12 +18,13 @@ Revision History
/**
Read EHCI capability register
Read EHCI capability register.
@param Ehc The Ehc device
@param Offset Capability register address
@param Ehc The EHCI device.
@param Offset Capability register address.
@return The register content read
@return The register content read.
@retval If err, return 0xffff.
**/
UINT32
@ -63,12 +55,13 @@ EhcReadCapRegister (
/**
Read Ehc Operation register
Read EHCI Operation register.
@param Ehc The EHCI device
@param Offset The operation register offset
@param Ehc The EHCI device.
@param Offset The operation register offset.
@return The register content read
@return The register content read.
@retval If err, return 0xffff.
**/
UINT32
@ -101,13 +94,13 @@ EhcReadOpReg (
/**
Write the data to the EHCI operation register
Write the data to the EHCI operation register.
@param Ehc The EHCI device
@param Offset EHCI operation register offset
@param Data The data to write
@param Ehc The EHCI device.
@param Offset EHCI operation register offset.
@param Data The data to write.
@return None
@return None.
**/
VOID
@ -137,16 +130,15 @@ EhcWriteOpReg (
/**
Set one bit of the operational register while keeping other bits
Set one bit of the operational register while keeping other bits.
@param Ehc The EHCI device
@param Offset The offset of the operational register
@param Bit The bit mask of the register to set
@param Ehc The EHCI device.
@param Offset The offset of the operational register.
@param Bit The bit mask of the register to set.
@return None
@return None.
**/
STATIC
VOID
EhcSetOpRegBit (
IN USB2_HC_DEV *Ehc,
@ -163,16 +155,15 @@ EhcSetOpRegBit (
/**
Clear one bit of the operational register while keeping other bits
Clear one bit of the operational register while keeping other bits.
@param Ehc The EHCI device
@param Offset The offset of the operational register
@param Bit The bit mask of the register to clear
@param Ehc The EHCI device.
@param Offset The offset of the operational register.
@param Bit The bit mask of the register to clear.
@return None
@return None.
**/
STATIC
VOID
EhcClearOpRegBit (
IN USB2_HC_DEV *Ehc,
@ -190,19 +181,18 @@ EhcClearOpRegBit (
/**
Wait the operation register's bit as specified by Bit
to become set (or clear)
to become set (or clear).
@param Ehc The EHCI device
@param Offset The offset of the operation register
@param Bit The bit of the register to wait for
@param WaitToSet Wait the bit to set or clear
@param Timeout The time to wait before abort (in millisecond)
@param Ehc The EHCI device.
@param Offset The offset of the operation register.
@param Bit The bit of the register to wait for.
@param WaitToSet Wait the bit to set or clear.
@param Timeout The time to wait before abort (in millisecond).
@retval EFI_SUCCESS The bit successfully changed by host controller
@retval EFI_TIMEOUT The time out occurred
@retval EFI_SUCCESS The bit successfully changed by host controller.
@retval EFI_TIMEOUT The time out occurred.
**/
STATIC
EFI_STATUS
EhcWaitOpRegBit (
IN USB2_HC_DEV *Ehc,
@ -228,11 +218,11 @@ EhcWaitOpRegBit (
/**
Add support for UEFI Over Legacy (UoL) feature, stop
the legacy USB SMI support
the legacy USB SMI support.
@param Ehc The EHCI device.
@return None
@return None.
**/
VOID
@ -258,7 +248,7 @@ EhcClearLegacySupport (
PciIo->Pci.Write (PciIo, EfiPciIoWidthUint32, ExtendCap, 1, &Value);
TimeOut = 40;
while (TimeOut--) {
while (TimeOut-- != 0) {
gBS->Stall (500);
PciIo->Pci.Read (PciIo, EfiPciIoWidthUint32, ExtendCap, 1, &Value);
@ -278,11 +268,11 @@ EhcClearLegacySupport (
Set door bell and wait it to be ACKed by host controller.
This function is used to synchronize with the hardware.
@param Ehc The EHCI device
@param Timeout The time to wait before abort (in millisecond, ms)
@param Ehc The EHCI device.
@param Timeout The time to wait before abort (in millisecond, ms).
@return EFI_SUCCESS : Synchronized with the hardware
@return EFI_TIMEOUT : Time out happened while waiting door bell to set
@retval EFI_SUCCESS Synchronized with the hardware.
@retval EFI_TIMEOUT Time out happened while waiting door bell to set.
**/
EFI_STATUS
@ -314,11 +304,11 @@ EhcSetAndWaitDoorBell (
/**
Clear all the interrutp status bits, these bits
are Write-Clean
are Write-Clean.
@param Ehc The EHCI device
@param Ehc The EHCI device.
@return None
@return None.
**/
VOID
@ -334,14 +324,13 @@ EhcAckAllInterrupt (
Enable the periodic schedule then wait EHC to
actually enable it.
@param Ehc The EHCI device
@param Timeout The time to wait before abort (in millisecond, ms)
@param Ehc The EHCI device.
@param Timeout The time to wait before abort (in millisecond, ms).
@return EFI_SUCCESS : The periodical schedule is enabled
@return EFI_TIMEOUT : Time out happened while enabling periodic schedule
@retval EFI_SUCCESS The periodical schedule is enabled.
@retval EFI_TIMEOUT Time out happened while enabling periodic schedule.
**/
STATIC
EFI_STATUS
EhcEnablePeriodSchd (
IN USB2_HC_DEV *Ehc,
@ -357,15 +346,14 @@ EhcEnablePeriodSchd (
}
/**
Disable periodic schedule
Disable periodic schedule.
@param Ehc The EHCI device
@param Timeout Time to wait before abort (in millisecond, ms)
@param Ehc The EHCI device.
@param Timeout Time to wait before abort (in millisecond, ms).
@return EFI_SUCCESS : Periodic schedule is disabled.
@return EFI_DEVICE_ERROR : Fail to disable periodic schedule
@retval EFI_SUCCESS Periodic schedule is disabled.
@retval EFI_DEVICE_ERROR Fail to disable periodic schedule.
**/
EFI_STATUS
@ -385,16 +373,15 @@ EhcDisablePeriodSchd (
/**
Enable asynchrounous schedule
Enable asynchrounous schedule.
@param Ehc The EHCI device
@param Timeout Time to wait before abort
@param Ehc The EHCI device.
@param Timeout Time to wait before abort.
@return EFI_SUCCESS : The EHCI asynchronous schedule is enabled
@return Others : Failed to enable the asynchronous scheudle
@retval EFI_SUCCESS The EHCI asynchronous schedule is enabled.
@return Others Failed to enable the asynchronous scheudle.
**/
STATIC
EFI_STATUS
EhcEnableAsyncSchd (
IN USB2_HC_DEV *Ehc,
@ -412,13 +399,13 @@ EhcEnableAsyncSchd (
/**
Disable asynchrounous schedule
Disable asynchrounous schedule.
@param Ehc The EHCI device
@param Timeout Time to wait before abort (in millisecond, ms)
@param Ehc The EHCI device.
@param Timeout Time to wait before abort (in millisecond, ms).
@return EFI_SUCCESS : The asynchronous schedule is disabled
@return Others : Failed to disable the asynchronous schedule
@retval EFI_SUCCESS The asynchronous schedule is disabled.
@return Others Failed to disable the asynchronous schedule.
**/
EFI_STATUS
@ -438,12 +425,12 @@ EhcDisableAsyncSchd (
/**
Whether Ehc is halted
Whether Ehc is halted.
@param Ehc The EHCI device
@param Ehc The EHCI device.
@return TRUE : The controller is halted
@return FALSE : It isn't halted
@retval TRUE The controller is halted.
@retval FALSE It isn't halted.
**/
BOOLEAN
@ -456,12 +443,12 @@ EhcIsHalt (
/**
Whether system error occurred
Whether system error occurred.
@param Ehc The EHCI device
@param Ehc The EHCI device.
@return TRUE : System error happened
@return FALSE : No system error
@return TRUE System error happened.
@return FALSE No system error.
**/
BOOLEAN
@ -474,13 +461,13 @@ EhcIsSysError (
/**
Reset the host controller
Reset the host controller.
@param Ehc The EHCI device
@param Timeout Time to wait before abort (in millisecond, ms)
@param Ehc The EHCI device.
@param Timeout Time to wait before abort (in millisecond, ms).
@return EFI_SUCCESS : The host controller is reset
@return Others : Failed to reset the host
@retval EFI_SUCCESS The host controller is reset.
@return Others Failed to reset the host.
**/
EFI_STATUS
@ -509,13 +496,13 @@ EhcResetHC (
/**
Halt the host controller
Halt the host controller.
@param Ehc The EHCI device
@param Timeout Time to wait before abort
@param Ehc The EHCI device.
@param Timeout Time to wait before abort.
@return EFI_SUCCESS : The EHCI is halt
@return EFI_TIMEOUT : Failed to halt the controller before Timeout
@retval EFI_SUCCESS The EHCI is halt.
@retval EFI_TIMEOUT Failed to halt the controller before Timeout.
**/
EFI_STATUS
@ -533,13 +520,13 @@ EhcHaltHC (
/**
Set the EHCI to run
Set the EHCI to run.
@param Ehc The EHCI device
@param Timeout Time to wait before abort
@param Ehc The EHCI device.
@param Timeout Time to wait before abort.
@return EFI_SUCCESS : The EHCI is running
@return Others : Failed to set the EHCI to run
@retval EFI_SUCCESS The EHCI is running.
@return Others Failed to set the EHCI to run.
**/
EFI_STATUS
@ -558,17 +545,17 @@ EhcRunHC (
/**
Initialize the HC hardware.
EHCI spec lists the five things to do to initialize the hardware
EHCI spec lists the five things to do to initialize the hardware:
1. Program CTRLDSSEGMENT
2. Set USBINTR to enable interrupts
3. Set periodic list base
4. Set USBCMD, interrupt threshold, frame list size etc
5. Write 1 to CONFIGFLAG to route all ports to EHCI
@param Ehc The EHCI device
@param Ehc The EHCI device.
@return EFI_SUCCESS : The EHCI has come out of halt state
@return EFI_TIMEOUT : Time out happened
@return EFI_SUCCESS The EHCI has come out of halt state.
@return EFI_TIMEOUT Time out happened.
**/
EFI_STATUS

View File

@ -1,5 +1,7 @@
/** @file
This file contains the definination for host controller register operation routines.
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
@ -9,23 +11,13 @@ 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:
EhciReg.h
Abstract:
This file contains the definination for host controller register operation routines
Revision History
**/
#ifndef _EFI_EHCI_REG_H_
#define _EFI_EHCI_REG_H_
enum {
typedef enum {
//
// Capability register offset
//
@ -94,7 +86,7 @@ enum {
EHC_PCI_CLASSC = 0x09,
EHC_PCI_CLASSC_PI = 0x20,
EHC_BAR_INDEX = 0 /* how many bytes away from USB_BASE to 0x10 */
};
}EHCI_REGISTER_OFFSET;
#define EHC_LINK_TERMINATED(Link) (((Link) & 0x01) != 0)
@ -123,38 +115,30 @@ typedef struct {
} USB_CLASSC;
#pragma pack()
/**
Read EHCI capability register.
@param Ehc The EHCI device.
@param Offset Capability register address.
@return The register content.
**/
UINT32
EhcReadCapRegister (
IN USB2_HC_DEV *Ehc,
IN UINT32 Offset
)
/*++
Routine Description:
Read EHCI capability register
Arguments:
Ehc - The Ehc device
Offset - Capability register address
Returns:
The register content read
--*/
;
/**
Read Ehc Operation register
Read EHCI Operation register.
@param Ehc The EHCI device
@param Offset The operation register offset
@param Ehc The EHCI device.
@param Offset The operation register offset.
@return The register content read
@return The register content.
**/
UINT32
@ -166,13 +150,13 @@ EhcReadOpReg (
/**
Write the data to the EHCI operation register
Write the data to the EHCI operation register.
@param Ehc The EHCI device
@param Offset EHCI operation register offset
@param Data The data to write
@param Ehc The EHCI device.
@param Offset EHCI operation register offset.
@param Data The data to write.
@return None
@return None.
**/
VOID
@ -186,11 +170,11 @@ EhcWriteOpReg (
/**
Add support for UEFI Over Legacy (UoL) feature, stop
the legacy USB SMI support
the legacy USB SMI support.
@param Ehc The EHCI device.
@return None
@return None.
**/
VOID
@ -205,11 +189,11 @@ EhcClearLegacySupport (
Set door bell and wait it to be ACKed by host controller.
This function is used to synchronize with the hardware.
@param Ehc The EHCI device
@param Timeout The time to wait before abort (in millisecond, ms)
@param Ehc The EHCI device.
@param Timeout The time to wait before abort (in millisecond, ms).
@return EFI_SUCCESS : Synchronized with the hardware
@return EFI_TIMEOUT : Time out happened while waiting door bell to set
@retval EFI_SUCCESS Synchronized with the hardware.
@retval EFI_TIMEOUT Time out happened while waiting door bell to set.
**/
EFI_STATUS
@ -221,12 +205,11 @@ EhcSetAndWaitDoorBell (
/**
Clear all the interrutp status bits, these bits
are Write-Clean
Clear all the interrutp status bits, these bits are Write-Clean.
@param Ehc The EHCI device
@param Ehc The EHCI device.
@return None
@return None.
**/
VOID
@ -238,12 +221,12 @@ EhcAckAllInterrupt (
/**
Whether Ehc is halted
Whether Ehc is halted.
@param Ehc The EHCI device
@param Ehc The EHCI device.
@return TRUE : The controller is halted
@return FALSE : It isn't halted
@retval TRUE The controller is halted.
@retval FALSE It isn't halted.
**/
BOOLEAN
@ -254,12 +237,12 @@ EhcIsHalt (
/**
Whether system error occurred
Whether system error occurred.
@param Ehc The EHCI device
@param Ehc The EHCI device.
@return TRUE : System error happened
@return FALSE : No system error
@retval TRUE System error happened.
@retval FALSE No system error.
**/
BOOLEAN
@ -269,15 +252,14 @@ EhcIsSysError (
;
/**
Reset the host controller
Reset the host controller.
@param Ehc The EHCI device
@param Timeout Time to wait before abort (in millisecond, ms)
@param Ehc The EHCI device.
@param Timeout Time to wait before abort (in millisecond, ms).
@return EFI_SUCCESS : The host controller is reset
@return Others : Failed to reset the host
@retval EFI_SUCCESS The host controller is reset.
@return Others Failed to reset the host.
**/
EFI_STATUS
@ -288,15 +270,14 @@ EhcResetHC (
;
/**
Halt the host controller
Halt the host controller.
@param Ehc The EHCI device
@param Timeout Time to wait before abort
@param Ehc The EHCI device.
@param Timeout Time to wait before abort.
@return EFI_SUCCESS : The EHCI is halt
@return EFI_TIMEOUT : Failed to halt the controller before Timeout
@return EFI_SUCCESS The EHCI is halt.
@return EFI_TIMEOUT Failed to halt the controller before Timeout.
**/
EFI_STATUS
@ -307,15 +288,14 @@ EhcHaltHC (
;
/**
Set the EHCI to run
Set the EHCI to run.
@param Ehc The EHCI device
@param Timeout Time to wait before abort
@param Ehc The EHCI device.
@param Timeout Time to wait before abort.
@return EFI_SUCCESS : The EHCI is running
@return Others : Failed to set the EHCI to run
@return EFI_SUCCESS The EHCI is running.
@return Others Failed to set the EHCI to run.
**/
EFI_STATUS
@ -329,17 +309,17 @@ EhcRunHC (
/**
Initialize the HC hardware.
EHCI spec lists the five things to do to initialize the hardware
EHCI spec lists the five things to do to initialize the hardware:
1. Program CTRLDSSEGMENT
2. Set USBINTR to enable interrupts
3. Set periodic list base
4. Set USBCMD, interrupt threshold, frame list size etc
5. Write 1 to CONFIGFLAG to route all ports to EHCI
@param Ehc The EHCI device
@param Ehc The EHCI device.
@return EFI_SUCCESS : The EHCI has come out of halt state
@return EFI_TIMEOUT : Time out happened
@return EFI_SUCCESS The EHCI has come out of halt state.
@return EFI_TIMEOUT Time out happened.
**/
EFI_STATUS

View File

@ -1,5 +1,7 @@
/** @file
EHCI transfer scheduling routines.
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
@ -9,31 +11,20 @@ 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:
EhciSched.c
Abstract:
EHCI transfer scheduling routines
Revision History
**/
#include "Ehci.h"
/**
Create helper QTD/QH for the EHCI device
Create helper QTD/QH for the EHCI device.
@param Ehc The EHCI device
@param Ehc The EHCI device.
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource for helper QTD/QH
@retval EFI_SUCCESS Helper QH/QTD are created
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource for helper QTD/QH.
@retval EFI_SUCCESS Helper QH/QTD are created.
**/
STATIC
EFI_STATUS
EhcCreateHelpQ (
IN USB2_HC_DEV *Ehc
@ -102,14 +93,13 @@ EhcCreateHelpQ (
}
/**
Initialize the schedule data structure such as frame list
Initialize the schedule data structure such as frame list.
@param Ehc The EHCI device to init schedule data for
@param Ehc The EHCI device to init schedule data.
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource to init schedule data
@retval EFI_SUCCESS The schedule data is initialized
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource to init schedule data.
@retval EFI_SUCCESS The schedule data is initialized.
**/
EFI_STATUS
@ -213,13 +203,12 @@ EhcInitSched (
}
/**
Free the schedule data. It may be partially initialized.
@param Ehc The EHCI device
@param Ehc The EHCI device.
@return None
@return None.
**/
VOID
@ -269,7 +258,6 @@ EhcFreeSched (
}
/**
Link the queue head to the asynchronous schedule list.
UEFI only supports one CTRL/BULK transfer at a time
@ -277,10 +265,10 @@ EhcFreeSched (
management: A reclamation header is always linked to
the AsyncListAddr, the only active QH is appended to it.
@param Ehc The EHCI device
@param Qh The queue head to link
@param Ehc The EHCI device.
@param Qh The queue head to link.
@return None
@return None.
**/
VOID
@ -308,12 +296,12 @@ EhcLinkQhToAsync (
/**
Unlink a queue head from the asynchronous schedule list.
Need to synchronize with hardware
Need to synchronize with hardware.
@param Ehc The EHCI device
@param Qh The queue head to unlink
@param Ehc The EHCI device.
@param Qh The queue head to unlink.
@return None
@return None.
**/
VOID
@ -355,10 +343,10 @@ EhcUnlinkQhFromAsync (
schedule frame list. This code is very much the same as
that in UHCI.
@param Ehc The EHCI device
@param Qh The queue head to link
@param Ehc The EHCI device.
@param Qh The queue head to link.
@return None
@return None.
**/
VOID
@ -454,12 +442,12 @@ EhcLinkQhToPeriod (
/**
Unlink an interrupt queue head from the periodic
schedule frame list
schedule frame list.
@param Ehc The EHCI device
@param Qh The queue head to unlink
@param Ehc The EHCI device.
@param Qh The queue head to unlink.
@return None
@return None.
**/
VOID
@ -514,18 +502,16 @@ EhcUnlinkQhFromPeriod (
}
/**
Check the URB's execution result and update the URB's
result accordingly.
@param Ehc The EHCI device
@param Urb The URB to check result
@param Ehc The EHCI device.
@param Urb The URB to check result.
@return Whether the result of URB transfer is finialized.
**/
STATIC
BOOLEAN
EhcCheckUrbResult (
IN USB2_HC_DEV *Ehc,
@ -637,13 +623,13 @@ ON_EXIT:
/**
Execute the transfer by polling the URB. This is a synchronous operation.
@param Ehc The EHCI device
@param Urb The URB to execute
@param TimeOut The time to wait before abort, in millisecond.
@param Ehc The EHCI device.
@param Urb The URB to execute.
@param TimeOut The time to wait before abort, in millisecond.
@return EFI_DEVICE_ERROR : The transfer failed due to transfer error
@return EFI_TIMEOUT : The transfer failed due to time out
@return EFI_SUCCESS : The transfer finished OK
@return EFI_DEVICE_ERROR The transfer failed due to transfer error.
@return EFI_TIMEOUT The transfer failed due to time out.
@return EFI_SUCCESS The transfer finished OK.
**/
EFI_STATUS
@ -691,15 +677,15 @@ EhcExecTransfer (
/**
Delete a single asynchronous interrupt transfer for
the device and endpoint
the device and endpoint.
@param Ehc The EHCI device
@param DevAddr The address of the target device
@param EpNum The endpoint of the target
@param DataToggle Return the next data toggle to use
@param Ehc The EHCI device.
@param DevAddr The address of the target device.
@param EpNum The endpoint of the target.
@param DataToggle Return the next data toggle to use.
@retval EFI_SUCCESS An asynchronous transfer is removed
@retval EFI_NOT_FOUND No transfer for the device is found
@retval EFI_SUCCESS An asynchronous transfer is removed.
@retval EFI_NOT_FOUND No transfer for the device is found.
**/
EFI_STATUS
@ -715,7 +701,7 @@ EhciDelAsyncIntTransfer (
URB *Urb;
EFI_USB_DATA_DIRECTION Direction;
Direction = ((EpNum & 0x80) ? EfiUsbDataIn : EfiUsbDataOut);
Direction = (((EpNum & 0x80) != 0) ? EfiUsbDataIn : EfiUsbDataOut);
EpNum &= 0x0F;
EFI_LIST_FOR_EACH_SAFE (Entry, Next, &Ehc->AsyncIntTransfers) {
@ -744,11 +730,11 @@ EhciDelAsyncIntTransfer (
/**
Remove all the asynchronous interrutp transfers
Remove all the asynchronous interrutp transfers.
@param Ehc The EHCI device
@param Ehc The EHCI device.
@return None
@return None.
**/
VOID
@ -771,30 +757,23 @@ EhciDelAllAsyncIntTransfers (
}
}
STATIC
/**
Flush data from PCI controller specific address to mapped system
memory address.
@param Ehc The EHCI device.
@param Urb The URB to unmap.
@retval EFI_SUCCESS Success to flush data to mapped system memory.
@retval EFI_DEVICE_ERROR Fail to flush data to mapped system memory.
**/
EFI_STATUS
EhcFlushAsyncIntMap (
IN USB2_HC_DEV *Ehc,
IN URB *Urb
)
/*++
Routine Description:
Flush data from PCI controller specific address to mapped system
memory address.
Arguments:
Ehc - The EHCI device
Urb - The URB to unmap
Returns:
EFI_SUCCESS - Success to flush data to mapped system memory
EFI_DEVICE_ERROR - Fail to flush data to mapped system memory
--*/
{
EFI_STATUS Status;
EFI_PHYSICAL_ADDRESS PhyAddr;
@ -833,16 +812,14 @@ ON_ERROR:
}
/**
Update the queue head for next round of asynchronous transfer
Update the queue head for next round of asynchronous transfer.
@param Urb The URB to update
@param Urb The URB to update.
@return None
@return None.
**/
STATIC
VOID
EhcUpdateAsyncRequest (
IN URB *Urb
@ -913,12 +890,12 @@ EhcUpdateAsyncRequest (
/**
Interrupt transfer periodic check handler
Interrupt transfer periodic check handler.
@param Event Interrupt event
@param Context Pointer to USB2_HC_DEV
@param Event Interrupt event.
@param Context Pointer to USB2_HC_DEV.
@return None
@return None.
**/
VOID

View File

@ -1,5 +1,7 @@
/** @file
This file contains the definination for host controller schedule routines.
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
@ -9,49 +11,32 @@ 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:
EhciSched.h
Abstract:
This file contains the definination for host controller schedule routines
Revision History
**/
#ifndef _EFI_EHCI_SCHED_H_
#define _EFI_EHCI_SCHED_H_
/**
Initialize the schedule data structure such as frame list.
@param Ehc The EHCI device to init schedule data for.
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource to init schedule data.
@retval EFI_SUCCESS The schedule data is initialized.
**/
EFI_STATUS
EhcInitSched (
IN USB2_HC_DEV *Ehc
)
/*++
Routine Description:
Initialize the schedule data structure such as frame list
Arguments:
Ehc - The EHCI device to init schedule data for
Returns:
EFI_OUT_OF_RESOURCES - Failed to allocate resource to init schedule data
EFI_SUCCESS - The schedule data is initialized
--*/
;
/**
Free the schedule data. It may be partially initialized.
@param Ehc The EHCI device
@param Ehc The EHCI device.
@return None
@ -63,7 +48,6 @@ EhcFreeSched (
;
/**
Link the queue head to the asynchronous schedule list.
UEFI only supports one CTRL/BULK transfer at a time
@ -71,10 +55,10 @@ EhcFreeSched (
management: A reclamation header is always linked to
the AsyncListAddr, the only active QH is appended to it.
@param Ehc The EHCI device
@param Qh The queue head to link
@param Ehc The EHCI device.
@param Qh The queue head to link.
@return None
@return None.
**/
VOID
@ -87,12 +71,12 @@ EhcLinkQhToAsync (
/**
Unlink a queue head from the asynchronous schedule list.
Need to synchronize with hardware
Need to synchronize with hardware.
@param Ehc The EHCI device
@param Qh The queue head to unlink
@param Ehc The EHCI device.
@param Qh The queue head to unlink.
@return None
@return None.
**/
VOID
@ -108,10 +92,10 @@ EhcUnlinkQhFromAsync (
schedule frame list. This code is very much the same as
that in UHCI.
@param Ehc The EHCI device
@param Qh The queue head to link
@param Ehc The EHCI device.
@param Qh The queue head to link.
@return None
@return None.
**/
VOID
@ -124,12 +108,12 @@ EhcLinkQhToPeriod (
/**
Unlink an interrupt queue head from the periodic
schedule frame list
schedule frame list.
@param Ehc The EHCI device
@param Qh The queue head to unlink
@param Ehc The EHCI device.
@param Qh The queue head to unlink.
@return None
@return None.
**/
VOID
@ -144,13 +128,13 @@ EhcUnlinkQhFromPeriod (
/**
Execute the transfer by polling the URB. This is a synchronous operation.
@param Ehc The EHCI device
@param Urb The URB to execute
@param TimeOut The time to wait before abort, in millisecond.
@param Ehc The EHCI device.
@param Urb The URB to execute.
@param TimeOut The time to wait before abort, in millisecond.
@return EFI_DEVICE_ERROR : The transfer failed due to transfer error
@return EFI_TIMEOUT : The transfer failed due to time out
@return EFI_SUCCESS : The transfer finished OK
@retval EFI_DEVICE_ERROR The transfer failed due to transfer error.
@retval EFI_TIMEOUT The transfer failed due to time out.
@retval EFI_SUCCESS The transfer finished OK.
**/
EFI_STATUS
@ -164,15 +148,15 @@ EhcExecTransfer (
/**
Delete a single asynchronous interrupt transfer for
the device and endpoint
the device and endpoint.
@param Ehc The EHCI device
@param DevAddr The address of the target device
@param EpNum The endpoint of the target
@param DataToggle Return the next data toggle to use
@param Ehc The EHCI device.
@param DevAddr The address of the target device.
@param EpNum The endpoint of the target.
@param DataToggle Return the next data toggle to use.
@retval EFI_SUCCESS An asynchronous transfer is removed
@retval EFI_NOT_FOUND No transfer for the device is found
@retval EFI_SUCCESS An asynchronous transfer is removed.
@retval EFI_NOT_FOUND No transfer for the device is found.
**/
EFI_STATUS
@ -186,11 +170,11 @@ EhciDelAsyncIntTransfer (
/**
Remove all the asynchronous interrutp transfers
Remove all the asynchronous interrutp transfers.
@param Ehc The EHCI device
@param Ehc The EHCI device.
@return None
@return None.
**/
VOID
@ -200,14 +184,13 @@ EhciDelAllAsyncIntTransfers (
;
/**
Interrupt transfer periodic check handler
Interrupt transfer periodic check handler.
@param Event Interrupt event
@param Context Pointer to USB2_HC_DEV
@param Event Interrupt event.
@param Context Pointer to USB2_HC_DEV.
@return None
@return None.
**/
VOID

View File

@ -1,5 +1,8 @@
/** @file
This file contains URB request, each request is warpped in a
URB (Usb Request Block).
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
@ -9,33 +12,22 @@ 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:
EhciUrb.c
Abstract:
This file contains URB request, each request is warpped in a
URB (Usb Request Block)
Revision History
**/
#include "Ehci.h"
/**
Create a single QTD to hold the data
Create a single QTD to hold the data.
@param Ehc The EHCI device
@param Data Current data not associated with a QTD
@param DataLen The length of the data
@param PktId Packet ID to use in the QTD
@param Toggle Data toggle to use in the QTD
@param MaxPacket Maximu packet length of the endpoint
@param Ehc The EHCI device.
@param Data Current data not associated with a QTD.
@param DataLen The length of the data.
@param PktId Packet ID to use in the QTD.
@param Toggle Data toggle to use in the QTD.
@param MaxPacket Maximu packet length of the endpoint.
@return Created QTD or NULL if failed to create one
@return Created QTD or NULL if failed to create one.
**/
EHC_QTD *
@ -130,13 +122,12 @@ EhcCreateQtd (
2. Microframe S-mask
3. Microframe C-mask
@param Ep The queue head's related endpoint
@param QhHw The queue head to initialize
@param Ep The queue head's related endpoint.
@param QhHw The queue head to initialize.
@return None
@return None.
**/
STATIC
VOID
EhcInitIntQh (
IN USB_ENDPOINT *Ep,
@ -173,12 +164,12 @@ EhcInitIntQh (
/**
Allocate and initialize a EHCI queue head
Allocate and initialize a EHCI queue head.
@param Ehci The EHCI device
@param Ep The endpoint to create queue head for
@param Ehci The EHCI device.
@param Ep The endpoint to create queue head for.
@return Created queue head or NULL if failed to create one
@return Created queue head or NULL if failed to create one.
**/
EHC_QH *
@ -258,21 +249,19 @@ EhcCreateQh (
}
/**
Convert the poll interval from application to that
be used by EHCI interface data structure. Only need
to get the max 2^n that is less than interval. UEFI
can't support high speed endpoint with a interval less
than 8 microframe because interval is specified in
the unit of ms (millisecond)
the unit of ms (millisecond).
@param Interval The interval to convert
@param Interval The interval to convert.
@return The converted interval
@return The converted interval.
**/
STATIC
UINTN
EhcConvertPollRate (
IN UINTN Interval
@ -298,17 +287,15 @@ EhcConvertPollRate (
}
/**
Free a list of QTDs
Free a list of QTDs.
@param Ehc The EHCI device
@param Qtds The list head of the QTD
@param Ehc The EHCI device.
@param Qtds The list head of the QTD.
@return None
@return None.
**/
STATIC
VOID
EhcFreeQtds (
IN USB2_HC_DEV *Ehc,
@ -331,10 +318,10 @@ EhcFreeQtds (
/**
Free an allocated URB. It is possible for it to be partially inited.
@param Ehc The EHCI device
@param Urb The URB to free
@param Ehc The EHCI device.
@param Urb The URB to free.
@return None
@return None.
**/
VOID
@ -368,18 +355,16 @@ EhcFreeUrb (
}
/**
Create a list of QTDs for the URB
Create a list of QTDs for the URB.
@param Ehc The EHCI device
@param Urb The URB to create QTDs for
@param Ehc The EHCI device.
@param Urb The URB to create QTDs for.
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource for QTD
@retval EFI_SUCCESS The QTDs are allocated for the URB
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource for QTD.
@retval EFI_SUCCESS The QTDs are allocated for the URB.
**/
STATIC
EFI_STATUS
EhcCreateQtds (
IN USB2_HC_DEV *Ehc,
@ -530,24 +515,24 @@ ON_ERROR:
/**
Create a new URB and its associated QTD
Create a new URB and its associated QTD.
@param Ehc The EHCI device
@param DevAddr The device address
@param EpAddr Endpoint addrress & its direction
@param DevSpeed The device speed
@param Toggle Initial data toggle to use
@param MaxPacket The max packet length of the endpoint
@param Hub The transaction translator to use
@param Type The transaction type
@param Request The standard USB request for control transfer
@param Data The user data to transfer
@param DataLen The length of data buffer
@param Callback The function to call when data is transferred
@param Context The context to the callback
@param Interval The interval for interrupt transfer
@param Ehc The EHCI device.
@param DevAddr The device address.
@param EpAddr Endpoint addrress & its direction.
@param DevSpeed The device speed.
@param Toggle Initial data toggle to use.
@param MaxPacket The max packet length of the endpoint.
@param Hub The transaction translator to use.
@param Type The transaction type.
@param Request The standard USB request for control transfer.
@param Data The user data to transfer.
@param DataLen The length of data buffer.
@param Callback The function to call when data is transferred.
@param Context The context to the callback.
@param Interval The interval for interrupt transfer.
@return Created URB or NULL
@return Created URB or NULL.
**/
URB *
@ -589,7 +574,7 @@ EhcCreateUrb (
Ep = &Urb->Ep;
Ep->DevAddr = DevAddr;
Ep->EpAddr = (UINT8) (EpAddr & 0x0F);
Ep->Direction = ((EpAddr & 0x80) ? EfiUsbDataIn : EfiUsbDataOut);
Ep->Direction = (((EpAddr & 0x80) != 0) ? EfiUsbDataIn : EfiUsbDataOut);
Ep->DevSpeed = DevSpeed;
Ep->MaxPacket = MaxPacket;

View File

@ -1,5 +1,8 @@
/** @file
This file contains URB request, each request is warpped in a
URB (Usb Request Block).
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
@ -9,17 +12,6 @@ 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:
EhciUrb.h
Abstract:
This file contains URB request, each request is warpped in a
URB (Usb Request Block)
Revision History
**/
#ifndef _EFI_EHCI_URB_H_
@ -30,7 +22,7 @@ typedef struct _EHC_QTD EHC_QTD;
typedef struct _EHC_QH EHC_QH;
typedef struct _URB URB;
enum {
typedef enum {
//
// Transfer types, used in URB to identify the transfer type
//
@ -84,7 +76,7 @@ enum {
QH_MICROFRAME_7 = 0x80,
USB_ERR_SHORT_PACKET = 0x200
};
}EHCI_URB_FLAG_VALUE;
//
// Fill in the hardware link point: pass in a EHC_QH/QH_HW
@ -249,16 +241,16 @@ struct _URB {
/**
Create a single QTD to hold the data
Create a single QTD to hold the data.
@param Ehc The EHCI device
@param Data Current data not associated with a QTD
@param DataLen The length of the data
@param PktId Packet ID to use in the QTD
@param Toggle Data toggle to use in the QTD
@param MaxPacket Maximu packet length of the endpoint
@param Ehc The EHCI device.
@param Data Current data not associated with a QTD.
@param DataLen The length of the data.
@param PktId Packet ID to use in the QTD.
@param Toggle Data toggle to use in the QTD.
@param MaxPacket Maximu packet length of the endpoint.
@return Created QTD or NULL if failed to create one
@return Created QTD or NULL if failed to create one.
**/
EHC_QTD *
@ -275,12 +267,12 @@ EhcCreateQtd (
/**
Allocate and initialize a EHCI queue head
Allocate and initialize a EHCI queue head.
@param Ehci The EHCI device
@param Ep The endpoint to create queue head for
@param Ehci The EHCI device.
@param Ep The endpoint to create queue head for.
@return Created queue head or NULL if failed to create one
@return Created queue head or NULL if failed to create one.
**/
EHC_QH *
@ -294,10 +286,10 @@ EhcCreateQh (
/**
Free an allocated URB. It is possible for it to be partially inited.
@param Ehc The EHCI device
@param Urb The URB to free
@param Ehc The EHCI device.
@param Urb The URB to free.
@return None
@return None.
**/
VOID
@ -309,24 +301,24 @@ EhcFreeUrb (
/**
Create a new URB and its associated QTD
Create a new URB and its associated QTD.
@param Ehc The EHCI device
@param DevAddr The device address
@param EpAddr Endpoint addrress & its direction
@param DevSpeed The device speed
@param Toggle Initial data toggle to use
@param MaxPacket The max packet length of the endpoint
@param Hub The transaction translator to use
@param Type The transaction type
@param Request The standard USB request for control transfer
@param Data The user data to transfer
@param DataLen The length of data buffer
@param Callback The function to call when data is transferred
@param Context The context to the callback
@param Interval The interval for interrupt transfer
@param Ehc The EHCI device.
@param DevAddr The device address.
@param EpAddr Endpoint addrress & its direction.
@param DevSpeed The device speed.
@param Toggle Initial data toggle to use.
@param MaxPacket The max packet length of the endpoint.
@param Hub The transaction translator to use.
@param Type The transaction type.
@param Request The standard USB request for control transfer.
@param Data The user data to transfer.
@param DataLen The length of data buffer.
@param Callback The function to call when data is transferred.
@param Context The context to the callback.
@param Interval The interval for interrupt transfer.
@return Created URB or NULL
@return Created URB or NULL.
**/
URB *

View File

@ -1,5 +1,7 @@
/** @file
Routine procedures for memory allocate/free.
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
@ -9,15 +11,6 @@ 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:
EhciMem.c
Abstract:
Revision History
**/
@ -25,15 +18,14 @@ Revision History
/**
Allocate a block of memory to be used by the buffer pool
Allocate a block of memory to be used by the buffer pool.
@param Pool The buffer pool to allocate memory for
@param Pages How many pages to allocate
@param Pool The buffer pool to allocate memory for.
@param Pages How many pages to allocate.
@return The allocated memory block or NULL if failed
@return The allocated memory block or NULL if failed.
**/
STATIC
USBHC_MEM_BLOCK *
UsbHcAllocMemBlock (
IN USBHC_MEM_POOL *Pool,
@ -127,15 +119,14 @@ FREE_BITARRAY:
/**
Free the memory block from the memory pool
Free the memory block from the memory pool.
@param Pool The memory pool to free the block from
@param Block The memory block to free
@param Pool The memory pool to free the block from.
@param Block The memory block to free.
@return VOID
@return None.
**/
STATIC
VOID
UsbHcFreeMemBlock (
IN USBHC_MEM_POOL *Pool,
@ -160,17 +151,15 @@ UsbHcFreeMemBlock (
/**
Alloc some memory from the block
Alloc some memory from the block.
@param Block The memory block to allocate memory from
@param Mem The variable to store the memory allocated
@param Units Number of memory units to allocate
@param Block The memory block to allocate memory from.
@param Units Number of memory units to allocate.
@return EFI_SUCCESS : The needed memory is allocated
@return EFI_NOT_FOUND : Can't find the free memory
@return The pointer to the allocated memory. If couldn't allocate the needed memory,
the return value is NULL.
**/
STATIC
VOID *
UsbHcAllocMemFromBlock (
IN USBHC_MEM_BLOCK *Block,
@ -236,15 +225,14 @@ UsbHcAllocMemFromBlock (
/**
Insert the memory block to the pool's list of the blocks
Insert the memory block to the pool's list of the blocks.
@param Head The head of the memory pool's block list
@param Block The memory block to insert
@param Head The head of the memory pool's block list.
@param Block The memory block to insert.
@return VOID
@return None.
**/
STATIC
VOID
UsbHcInsertMemBlockToPool (
IN USBHC_MEM_BLOCK *Head,
@ -260,13 +248,12 @@ UsbHcInsertMemBlockToPool (
/**
Is the memory block empty?
@param Block The memory block to check
@param Block The memory block to check.
@return TRUE : The memory block is empty
@return FALSE : The memory block isn't empty
@retval TRUE The memory block is empty.
@retval FALSE The memory block isn't empty.
**/
STATIC
BOOLEAN
UsbHcIsMemBlockEmpty (
IN USBHC_MEM_BLOCK *Block
@ -285,15 +272,14 @@ UsbHcIsMemBlockEmpty (
/**
Unlink the memory block from the pool's list
Unlink the memory block from the pool's list.
@param Head The block list head of the memory's pool
@param Head The block list head of the memory's pool.
@param BlockToUnlink The memory block to unlink.
@return VOID
@return None.
**/
STATIC
VOID
UsbHcUnlinkMemBlock (
IN USBHC_MEM_BLOCK *Head,
@ -315,16 +301,15 @@ UsbHcUnlinkMemBlock (
/**
Initialize the memory management pool for the host controller
Initialize the memory management pool for the host controller.
@param Pool The USB memory pool to initialize
@param PciIo The PciIo that can be used to access the host controller
@param Check4G Whether the host controller requires allocated memory
from one 4G address space.
@param Which4G The 4G memory area each memory allocated should be from
@param PciIo The PciIo that can be used to access the host controller.
@param Check4G Whether the host controller requires allocated memory
from one 4G address space.
@param Which4G The 4G memory area each memory allocated should be from.
@return EFI_SUCCESS : The memory pool is initialized
@return EFI_OUT_OF_RESOURCE : Fail to init the memory pool
@retval EFI_SUCCESS The memory pool is initialized.
@retval EFI_OUT_OF_RESOURCE Fail to init the memory pool.
**/
USBHC_MEM_POOL *
@ -357,12 +342,12 @@ UsbHcInitMemPool (
/**
Release the memory management pool
Release the memory management pool.
@param Pool The USB memory pool to free
@param Pool The USB memory pool to free.
@return EFI_SUCCESS : The memory pool is freed
@return EFI_DEVICE_ERROR : Failed to free the memory pool
@retval EFI_SUCCESS The memory pool is freed.
@retval EFI_DEVICE_ERROR Failed to free the memory pool.
**/
EFI_STATUS
@ -394,10 +379,10 @@ UsbHcFreeMemPool (
Allocate some memory from the host controller's memory pool
which can be used to communicate with host controller.
@param Pool The host controller's memory pool
@param Size Size of the memory to allocate
@param Pool The host controller's memory pool.
@param Size Size of the memory to allocate.
@return The allocated memory or NULL
@return The allocated memory or NULL.
**/
VOID *
@ -468,13 +453,13 @@ UsbHcAllocateMem (
/**
Free the allocated memory back to the memory pool
Free the allocated memory back to the memory pool.
@param Pool The memory pool of the host controller
@param Mem The memory to free
@param Size The size of the memory to free
@param Pool The memory pool of the host controller.
@param Mem The memory to free.
@param Size The size of the memory to free.
@return VOID
@return None.
**/
VOID

View File

@ -1,5 +1,7 @@
/** @file
This file contains the definination for host controller memory management routines.
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
@ -9,16 +11,6 @@ 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:
EhciMem.h
Abstract:
This file contains the definination for host controller memory management routines
Revision History
**/
#ifndef _EFI_EHCI_MEM_H_
@ -59,12 +51,12 @@ typedef struct _USBHC_MEM_POOL {
USBHC_MEM_BLOCK *Head;
} USBHC_MEM_POOL;
enum {
typedef enum {
USBHC_MEM_UNIT = 64, // Memory allocation unit, must be 2^n, n>4
USBHC_MEM_UNIT_MASK = USBHC_MEM_UNIT - 1,
USBHC_MEM_DEFAULT_PAGES = 16
};
} USBHC_MEM_UNIT_DATA;
#define USBHC_MEM_ROUND(Len) (((Len) + USBHC_MEM_UNIT_MASK) & (~USBHC_MEM_UNIT_MASK))
@ -82,43 +74,34 @@ enum {
/**
Initialize the memory management pool for the host controller.
@param PciIo The PciIo that can be used to access the host controller.
@param Check4G Whether the host controller requires allocated memory
from one 4G address space.
@param Which4G The 4G memory area each memory allocated should be from.
@retval EFI_SUCCESS The memory pool is initialized.
@retval EFI_OUT_OF_RESOURCE Fail to init the memory pool.
**/
USBHC_MEM_POOL *
UsbHcInitMemPool (
IN EFI_PCI_IO_PROTOCOL *PciIo,
IN BOOLEAN Check4G,
IN UINT32 Which4G
)
/*++
Routine Description:
Initialize the memory management pool for the host controller
Arguments:
Pool - The USB memory pool to initialize
PciIo - The PciIo that can be used to access the host controller
Check4G - Whether the host controller requires allocated memory
from one 4G address space.
Which4G - The 4G memory area each memory allocated should be from
Returns:
EFI_SUCCESS : The memory pool is initialized
EFI_OUT_OF_RESOURCE : Fail to init the memory pool
--*/
;
/**
Release the memory management pool
Release the memory management pool.
@param Pool The USB memory pool to free
@param Pool The USB memory pool to free.
@return EFI_SUCCESS : The memory pool is freed
@return EFI_DEVICE_ERROR : Failed to free the memory pool
@retval EFI_SUCCESS The memory pool is freed.
@retval EFI_DEVICE_ERROR Failed to free the memory pool.
**/
EFI_STATUS
@ -128,15 +111,14 @@ UsbHcFreeMemPool (
;
/**
Allocate some memory from the host controller's memory pool
which can be used to communicate with host controller.
@param Pool The host controller's memory pool
@param Size Size of the memory to allocate
@param Pool The host controller's memory pool.
@param Size Size of the memory to allocate.
@return The allocated memory or NULL
@return The allocated memory or NULL.
**/
VOID *
@ -147,15 +129,14 @@ UsbHcAllocateMem (
;
/**
Free the allocated memory back to the memory pool
Free the allocated memory back to the memory pool.
@param Pool The memory pool of the host controller
@param Mem The memory to free
@param Size The size of the memory to free
@param Pool The memory pool of the host controller.
@param Mem The memory to free.
@param Size The size of the memory to free.
@return VOID
@return None.
**/
VOID