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@5436 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
eric_tian 2008-07-09 10:02:26 +00:00
parent 78f64f281a
commit 8616fc4c13
11 changed files with 1047 additions and 783 deletions

View File

@ -1,5 +1,7 @@
/** @file
UEFI Component Name(2) protocol implementation for Usb Bus driver.
Copyright (c) 2004 - 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,13 +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:
ComponentName.c
Abstract:
**/
@ -25,9 +20,6 @@ Abstract:
#include <Library/UefiLib.h>
//
// EFI Component Name Functions
//
/**
Retrieves a Unicode string that is the user readable name of the driver.

View File

@ -1,5 +1,7 @@
/** @file
Usb Bus Driver Binding and Bus IO Protocol.
Copyright (c) 2004 - 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:
UsbBus.c
Abstract:
Usb Bus Driver Binding and Bus IO Protocol
Revision History
**/
#include "UsbBus.h"
@ -49,7 +40,6 @@ EFI_GUID mUsbBusProtocolGuid = EFI_USB_BUS_PROTOCOL_GUID;
@retval Others Failed to execute the transfer
**/
STATIC
EFI_STATUS
EFIAPI
UsbIoControlTransfer (
@ -191,22 +181,21 @@ ON_EXIT:
/**
Execute a bulk transfer to the device endpoint
Execute a bulk transfer to the device endpoint.
@param This The USB IO instance
@param Endpoint The device endpoint
@param Data The data to transfer
@param DataLength The length of the data to transfer
@param Timeout Time to wait before timeout
@param UsbStatus The result of USB transfer
@param This The USB IO instance.
@param Endpoint The device endpoint.
@param Data The data to transfer.
@param DataLength The length of the data to transfer.
@param Timeout Time to wait before timeout.
@param UsbStatus The result of USB transfer.
@retval EFI_SUCCESS The bulk transfer is OK
@retval EFI_INVALID_PARAMETER Some parameters are invalid
@retval EFI_SUCCESS The bulk transfer is OK.
@retval EFI_INVALID_PARAMETER Some parameters are invalid.
@retval Others Failed to execute transfer, reason returned in
UsbStatus
UsbStatus.
**/
STATIC
EFI_STATUS
EFIAPI
UsbIoBulkTransfer (
@ -286,22 +275,21 @@ ON_EXIT:
/**
Execute a synchronous interrupt transfer
Execute a synchronous interrupt transfer.
@param This The USB IO instance
@param Endpoint The device endpoint
@param Data The data to transfer
@param DataLength The length of the data to transfer
@param Timeout Time to wait before timeout
@param UsbStatus The result of USB transfer
@param This The USB IO instance.
@param Endpoint The device endpoint.
@param Data The data to transfer.
@param DataLength The length of the data to transfer.
@param Timeout Time to wait before timeout.
@param UsbStatus The result of USB transfer.
@retval EFI_SUCCESS The synchronous interrupt transfer is OK
@retval EFI_INVALID_PARAMETER Some parameters are invalid
@retval EFI_SUCCESS The synchronous interrupt transfer is OK.
@retval EFI_INVALID_PARAMETER Some parameters are invalid.
@retval Others Failed to execute transfer, reason returned in
UsbStatus
UsbStatus.
**/
STATIC
EFI_STATUS
EFIAPI
UsbIoSyncInterruptTransfer (
@ -363,25 +351,24 @@ ON_EXIT:
/**
Queue a new asynchronous interrupt transfer, or remove the old
request if (IsNewTransfer == FALSE)
request if (IsNewTransfer == FALSE).
@param This The USB_IO instance
@param Endpoint The device endpoint
@param This The USB_IO instance.
@param Endpoint The device endpoint.
@param IsNewTransfer Whether this is a new request, if it's old, remove
the request
@param PollInterval The interval to poll the transfer result, (in ms)
@param DataLength The length of perodic data transfer
the request.
@param PollInterval The interval to poll the transfer result, (in ms).
@param DataLength The length of perodic data transfer.
@param Callback The function to call periodicaly when transfer is
ready
@param Context The context to the callback
ready.
@param Context The context to the callback.
@retval EFI_SUCCESS New transfer is queued or old request is removed
@retval EFI_INVALID_PARAMETER Some parameters are invalid
@retval EFI_SUCCESS New transfer is queued or old request is removed.
@retval EFI_INVALID_PARAMETER Some parameters are invalid.
@retval Others Failed to queue the new request or remove the old
request
request.
**/
STATIC
EFI_STATUS
EFIAPI
UsbIoAsyncInterruptTransfer (
@ -441,18 +428,17 @@ ON_EXIT:
/**
Execute a synchronous isochronous transfer
Execute a synchronous isochronous transfer.
@param This The USB IO instance
@param DeviceEndpoint The device endpoint
@param Data The data to transfer
@param DataLength The length of the data to transfer
@param UsbStatus The result of USB transfer
@param This The USB IO instance.
@param DeviceEndpoint The device endpoint.
@param Data The data to transfer.
@param DataLength The length of the data to transfer.
@param UsbStatus The result of USB transfer.
@retval EFI_UNSUPPORTED Currently isochronous transfer isn't supported
@retval EFI_UNSUPPORTED Currently isochronous transfer isn't supported.
**/
STATIC
EFI_STATUS
EFIAPI
UsbIoIsochronousTransfer (
@ -468,19 +454,19 @@ UsbIoIsochronousTransfer (
/**
Queue an asynchronous isochronous transfer
Queue an asynchronous isochronous transfer.
@param This The USB_IO instance
@param DeviceEndpoint The device endpoint
@param DataLength The length of perodic data transfer
@param This The USB_IO instance.
@param DeviceEndpoint The device endpoint.
@param Data The data to transfer.
@param DataLength The length of perodic data transfer.
@param IsochronousCallBack The function to call periodicaly when transfer is
ready
@param Context The context to the callback
ready.
@param Context The context to the callback.
@retval EFI_UNSUPPORTED Currently isochronous transfer isn't supported
@retval EFI_UNSUPPORTED Currently isochronous transfer isn't supported.
**/
STATIC
EFI_STATUS
EFIAPI
UsbIoAsyncIsochronousTransfer (
@ -497,16 +483,15 @@ UsbIoAsyncIsochronousTransfer (
/**
Retrieve the device descriptor of the device
Retrieve the device descriptor of the device.
@param This The USB IO instance
@param Descriptor The variable to receive the device descriptor
@param This The USB IO instance.
@param Descriptor The variable to receive the device descriptor.
@retval EFI_SUCCESS The device descriptor is returned
@retval EFI_INVALID_PARAMETER The parameter is invalid
@retval EFI_SUCCESS The device descriptor is returned.
@retval EFI_INVALID_PARAMETER The parameter is invalid.
**/
STATIC
EFI_STATUS
EFIAPI
UsbIoGetDeviceDescriptor (
@ -535,17 +520,16 @@ UsbIoGetDeviceDescriptor (
/**
Return the configuration descriptor of the current active configuration
Return the configuration descriptor of the current active configuration.
@param This The USB IO instance
@param Descriptor The USB configuration descriptor
@param This The USB IO instance.
@param Descriptor The USB configuration descriptor.
@retval EFI_SUCCESS The active configuration descriptor is returned
@retval EFI_INVALID_PARAMETER Some parameter is invalid
@retval EFI_SUCCESS The active configuration descriptor is returned.
@retval EFI_INVALID_PARAMETER Some parameter is invalid.
@retval EFI_NOT_FOUND Currently no active configuration is selected.
**/
STATIC
EFI_STATUS
EFIAPI
UsbIoGetActiveConfigDescriptor (
@ -582,16 +566,15 @@ ON_EXIT:
/**
Retrieve the active interface setting descriptor for this USB IO instance
Retrieve the active interface setting descriptor for this USB IO instance.
@param This The USB IO instance
@param Descriptor The variable to receive active interface setting
@param This The USB IO instance.
@param Descriptor The variable to receive active interface setting.
@retval EFI_SUCCESS The active interface setting is returned
@retval EFI_INVALID_PARAMETER Some parameter is invalid
@retval EFI_SUCCESS The active interface setting is returned.
@retval EFI_INVALID_PARAMETER Some parameter is invalid.
**/
STATIC
EFI_STATUS
EFIAPI
UsbIoGetInterfaceDescriptor (
@ -617,18 +600,17 @@ UsbIoGetInterfaceDescriptor (
/**
Retrieve the endpoint descriptor from this interface setting
Retrieve the endpoint descriptor from this interface setting.
@param This The USB IO instance
@param This The USB IO instance.
@param Index The index (start from zero) of the endpoint to
retrieve
@param Descriptor The variable to receive the descriptor
retrieve.
@param Descriptor The variable to receive the descriptor.
@retval EFI_SUCCESS The endpoint descriptor is returned
@retval EFI_INVALID_PARAMETER Some parameter is invalid
@retval EFI_SUCCESS The endpoint descriptor is returned.
@retval EFI_INVALID_PARAMETER Some parameter is invalid.
**/
STATIC
EFI_STATUS
EFIAPI
UsbIoGetEndpointDescriptor (
@ -666,16 +648,15 @@ UsbIoGetEndpointDescriptor (
/**
Retrieve the supported language ID table from the device
Retrieve the supported language ID table from the device.
@param This The USB IO instance
@param LangIDTable The table to return the language IDs
@param TableSize The number of supported languanges
@param This The USB IO instance.
@param LangIDTable The table to return the language IDs.
@param TableSize The number of supported languanges.
@retval EFI_SUCCESS The language ID is return
@retval EFI_SUCCESS The language ID is return.
**/
STATIC
EFI_STATUS
EFIAPI
UsbIoGetSupportedLanguages (
@ -702,18 +683,17 @@ UsbIoGetSupportedLanguages (
/**
Retrieve an indexed string in the language of LangID
Retrieve an indexed string in the language of LangID.
@param This The USB IO instance
@param LangID The language ID of the string to retrieve
@param StringIndex The index of the string
@param String The variable to receive the string
@param This The USB IO instance.
@param LangID The language ID of the string to retrieve.
@param StringIndex The index of the string.
@param String The variable to receive the string.
@retval EFI_SUCCESS The string is returned
@retval EFI_NOT_FOUND No such string existed
@retval EFI_SUCCESS The string is returned.
@retval EFI_NOT_FOUND No such string existed.
**/
STATIC
EFI_STATUS
EFIAPI
UsbIoGetStringDescriptor (
@ -793,10 +773,10 @@ ON_EXIT:
Reset the device, then if that succeeds, reconfigure the
device with its address and current active configuration.
@param This The USB IO instance
@param This The USB IO instance.
@retval EFI_SUCCESS The device is reset and configured
@retval Others Failed to reset the device
@retval EFI_SUCCESS The device is reset and configured.
@retval Others Failed to reset the device.
**/
EFI_STATUS
@ -873,15 +853,15 @@ ON_EXIT:
/**
Install Usb Bus Protocol on host controller, and start the Usb bus
Install Usb Bus Protocol on host controller, and start the Usb bus.
@param This The USB bus driver binding instance
@param Controller The controller to check
@param RemainingDevicePath The remaining device patch
@param This The USB bus driver binding instance.
@param Controller The controller to check.
@param RemainingDevicePath The remaining device patch.
@retval EFI_SUCCESS The controller is controlled by the usb bus
@retval EFI_ALREADY_STARTED The controller is already controlled by the usb bus
@retval EFI_OUT_OF_RESOURCES Failed to allocate resources
@retval EFI_SUCCESS The controller is controlled by the usb bus.
@retval EFI_ALREADY_STARTED The controller is already controlled by the usb bus.
@retval EFI_OUT_OF_RESOURCES Failed to allocate resources.
**/
EFI_STATUS
@ -1074,29 +1054,22 @@ EFI_USB_IO_PROTOCOL mUsbIoProtocol = {
};
/**
The USB bus driver entry pointer.
@param ImageHandle The driver image handle.
@param SystemTable The system table.
@return EFI_SUCCESS The component name protocol is installed.
@return Others Failed to init the usb driver.
**/
EFI_STATUS
EFIAPI
UsbBusDriverEntryPoint (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
/*++
Routine Description:
The USB bus driver entry pointer
Arguments:
ImageHandle - The driver image handle
SystemTable - The system table
Returns:
EFI_SUCCESS - The component name protocol is installed
Others - Failed to init the usb driver
--*/
{
return EfiLibInstallDriverBindingComponentName2 (
ImageHandle,
@ -1110,14 +1083,14 @@ Returns:
/**
Check whether USB bus driver support this device
Check whether USB bus driver support this device.
@param This The USB bus driver binding protocol
@param Controller The controller handle to test againist
@param RemainingDevicePath The remaining device path
@param This The USB bus driver binding protocol.
@param Controller The controller handle to test againist.
@param RemainingDevicePath The remaining device path.
@retval EFI_SUCCESS The bus supports this controller.
@retval EFI_UNSUPPORTED This device isn't supported
@retval EFI_UNSUPPORTED This device isn't supported.
**/
EFI_STATUS
@ -1231,16 +1204,16 @@ UsbBusControllerDriverSupported (
/**
Start to process the controller
Start to process the controller.
@param This The USB bus driver binding instance
@param Controller The controller to check
@param RemainingDevicePath The remaining device patch
@param This The USB bus driver binding instance.
@param Controller The controller to check.
@param RemainingDevicePath The remaining device patch.
@retval EFI_SUCCESS The controller is controlled by the usb bus
@retval EFI_SUCCESS The controller is controlled by the usb bus.
@retval EFI_ALREADY_STARTED The controller is already controlled by the usb
bus
@retval EFI_OUT_OF_RESOURCES Failed to allocate resources
bus.
@retval EFI_OUT_OF_RESOURCES Failed to allocate resources.
**/
EFI_STATUS
@ -1312,16 +1285,16 @@ UsbBusControllerDriverStart (
/**
Stop handle the controller by this USB bus driver
Stop handle the controller by this USB bus driver.
@param This The USB bus driver binding protocol
@param Controller The controller to release
@param This The USB bus driver binding protocol.
@param Controller The controller to release.
@param NumberOfChildren The child of USB bus that opened controller
BY_CHILD
@param ChildHandleBuffer The array of child handle
BY_CHILD.
@param ChildHandleBuffer The array of child handle.
@retval EFI_SUCCESS The controller or children are stopped
@retval EFI_DEVICE_ERROR Failed to stop the driver
@retval EFI_SUCCESS The controller or children are stopped.
@retval EFI_DEVICE_ERROR Failed to stop the driver.
**/
EFI_STATUS

View File

@ -1,4 +1,7 @@
/** @file
Usb Bus Driver Binding and Bus IO Protocol.
Copyright (c) 2004 - 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
@ -8,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:
UsbBus.h
Abstract:
Usb Bus Driver Binding and Bus IO Protocol
Revision History
**/
#ifndef _EFI_USB_BUS_H_
@ -55,7 +47,7 @@ typedef struct _USB_HUB_API USB_HUB_API;
#include "UsbHub.h"
#include "UsbEnumer.h"
enum {
typedef enum {
USB_MAX_LANG_ID = 16,
USB_MAX_INTERFACE = 16,
USB_MAX_DEVICES = 128,
@ -125,17 +117,17 @@ enum {
//
// Send clear feature request timeout, set by experience
//
USB_CLEAR_FEATURE_REQUEST_TIMEOUT = 10 * USB_BUS_1_MILLISECOND,
USB_CLEAR_FEATURE_REQUEST_TIMEOUT = 10 * USB_BUS_1_MILLISECOND
}USB_BUS_TIMEOUT_EXPERIENCE_VALUE;
//
// Bus raises TPL to TPL_NOTIFY to serialize all its operations
// to protect shared data structures.
//
USB_BUS_TPL = TPL_NOTIFY,
//
// Bus raises TPL to TPL_NOTIFY to serialize all its operations
// to protect shared data structures.
//
#define USB_BUS_TPL TPL_NOTIFY
USB_INTERFACE_SIGNATURE = EFI_SIGNATURE_32 ('U', 'S', 'B', 'I'),
USB_BUS_SIGNATURE = EFI_SIGNATURE_32 ('U', 'S', 'B', 'B')
};
#define USB_INTERFACE_SIGNATURE EFI_SIGNATURE_32 ('U', 'S', 'B', 'I')
#define USB_BUS_SIGNATURE EFI_SIGNATURE_32 ('U', 'S', 'B', 'B')
#define USB_BIT(a) ((UINTN)(1 << (a)))
#define USB_BIT_IS_SET(Data, Bit) ((BOOLEAN)(((Data) & (Bit)) == (Bit)))
@ -279,12 +271,32 @@ typedef struct {
EFI_DEVICE_PATH_PROTOCOL End;
} USB_CLASS_FORMAT_DEVICE_PATH;
/**
Free a DEVICE_PATH_LIST_ITEM list.
@param UsbIoDPList a DEVICE_PATH_LIST_ITEM list pointer.
@retval EFI_INVALID_PARAMETER If parameters are invalid, return this value.
@retval EFI_SUCCESS If free operation is successful, return this value.
**/
EFI_STATUS
EFIAPI
UsbBusFreeUsbDPList (
IN LIST_ENTRY *UsbIoDPList
);
/**
Store a wanted usb child device info (its Usb part of device path) which is indicated by
RemainingDevicePath in a Usb bus which is indicated by UsbBusId.
@param UsbBusId Point to EFI_USB_BUS_PROTOCOL interface.
@param RemainingDevicePath The remaining device patch.
@retval EFI_SUCCESS Add operation is successful.
@retval EFI_INVALID_PARAMETER The parameters are invalid.
**/
EFI_STATUS
EFIAPI
UsbBusAddWantedUsbIoDP (
@ -292,6 +304,16 @@ UsbBusAddWantedUsbIoDP (
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
);
/**
Check whether a usb child device is the wanted device in a bus.
@param Bus The Usb bus's private data pointer.
@param UsbIf The usb child device inferface.
@retval True If a usb child device is the wanted device in a bus.
@retval False If a usb child device is *NOT* the wanted device in a bus.
**/
BOOLEAN
EFIAPI
UsbBusIsWantedUsbIO (
@ -299,6 +321,16 @@ UsbBusIsWantedUsbIO (
IN USB_INTERFACE *UsbIf
);
/**
Recursively connnect every wanted usb child device to ensure they all fully connected.
Check all the child Usb IO handles in this bus, recursively connecte if it is wanted usb child device.
@param UsbBusId Point to EFI_USB_BUS_PROTOCOL interface.
@retval EFI_SUCCESS Connect is done successfully.
@retval EFI_INVALID_PARAMETER The parameter is invalid.
**/
EFI_STATUS
EFIAPI
UsbBusRecursivelyConnectWantedUsbIo (

View File

@ -1,5 +1,7 @@
/** @file
Manage Usb Descriptor List
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,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:
UsbDesc.c
Abstract:
Manage Usb Descriptor List
Revision History
**/
#include "UsbBus.h"
/**
Free the interface setting descriptor
Free the interface setting descriptor.
@param Setting The descriptor to free
@param Setting The descriptor to free.
@return None
@return None.
**/
STATIC
VOID
UsbFreeInterfaceDesc (
IN USB_INTERFACE_SETTING *Setting
@ -61,17 +51,15 @@ UsbFreeInterfaceDesc (
}
/**
Free a configuration descriptor with its interface
descriptors. It may be initialized partially
descriptors. It may be initialized partially.
@param Config The configuration descriptor to free
@param Config The configuration descriptor to free.
@return None
@return None.
**/
STATIC
VOID
UsbFreeConfigDesc (
IN USB_CONFIG_DESC *Config
@ -112,13 +100,12 @@ UsbFreeConfigDesc (
}
/**
Free a device descriptor with its configurations
Free a device descriptor with its configurations.
@param DevDesc The device descriptor
@param DevDesc The device descriptor.
@return None
@return None.
**/
VOID
@ -143,17 +130,16 @@ UsbFreeDevDesc (
/**
Create a descriptor
Create a descriptor.
@param DescBuf The buffer of raw descriptor
@param Len The lenght of the raw descriptor buffer
@param Type The type of descriptor to create
@param Consumed Number of bytes consumed
@param DescBuf The buffer of raw descriptor.
@param Len The lenght of the raw descriptor buffer.
@param Type The type of descriptor to create.
@param Consumed Number of bytes consumed.
@return Created descriptor or NULL
@return Created descriptor or NULL.
**/
STATIC
VOID *
UsbCreateDesc (
IN UINT8 *DescBuf,
@ -226,16 +212,15 @@ UsbCreateDesc (
/**
Parse an interface desciptor and its endpoints
Parse an interface desciptor and its endpoints.
@param DescBuf The buffer of raw descriptor
@param Len The lenght of the raw descriptor buffer
@param Consumed The number of raw descriptor consumed
@param DescBuf The buffer of raw descriptor.
@param Len The lenght of the raw descriptor buffer.
@param Consumed The number of raw descriptor consumed.
@return The create interface setting or NULL if failed
@return The create interface setting or NULL if failed.
**/
STATIC
USB_INTERFACE_SETTING *
UsbParseInterfaceDesc (
IN UINT8 *DescBuf,
@ -307,13 +292,12 @@ ON_ERROR:
/**
Parse the configuration descriptor and its interfaces.
@param DescBuf The buffer of raw descriptor
@param Len The lenght of the raw descriptor buffer
@param DescBuf The buffer of raw descriptor.
@param Len The lenght of the raw descriptor buffer.
@return The created configuration descriptor
@return The created configuration descriptor.
**/
STATIC
USB_CONFIG_DESC *
UsbParseConfigDesc (
IN UINT8 *DescBuf,
@ -407,25 +391,24 @@ ON_ERROR:
}
/**
USB standard control transfer support routine. This
function is used by USB device. It is possible that
the device's interfaces are still waiting to be
enumerated.
@param UsbDev The usb device
@param Direction The direction of data transfer
@param Type Standard / class specific / vendor specific
@param Target The receiving target
@param Request Which request
@param Value The wValue parameter of the request
@param Index The wIndex parameter of the request
@param Buf The buffer to receive data into / transmit from
@param Length The length of the buffer
@param UsbDev The usb device.
@param Direction The direction of data transfer.
@param Type Standard / class specific / vendor specific.
@param Target The receiving target.
@param Request Which request.
@param Value The wValue parameter of the request.
@param Index The wIndex parameter of the request.
@param Buf The buffer to receive data into / transmit from.
@param Length The length of the buffer.
@retval EFI_SUCCESS The control request is executed
@retval EFI_DEVICE_ERROR Failed to execute the control transfer
@retval EFI_SUCCESS The control request is executed.
@retval EFI_DEVICE_ERROR Failed to execute the control transfer.
**/
EFI_STATUS
@ -473,23 +456,21 @@ UsbCtrlRequest (
}
/**
Get the standard descriptors.
@param UsbDev The USB device to read descriptor from
@param DescType The type of descriptor to read
@param DescIndex The index of descriptor to read
@param UsbDev The USB device to read descriptor from.
@param DescType The type of descriptor to read.
@param DescIndex The index of descriptor to read.
@param LangId Language ID, only used to get string, otherwise set
it to 0
@param Buf The buffer to hold the descriptor read
@param Length The length of the buffer
it to 0.
@param Buf The buffer to hold the descriptor read.
@param Length The length of the buffer.
@retval EFI_SUCCESS The descriptor is read OK
@retval Others Failed to retrieve the descriptor
@retval EFI_SUCCESS The descriptor is read OK.
@retval Others Failed to retrieve the descriptor.
**/
STATIC
EFI_STATUS
UsbCtrlGetDesc (
IN USB_DEVICE *UsbDev,
@ -518,16 +499,15 @@ UsbCtrlGetDesc (
}
/**
Return the max packet size for endpoint zero. This function
is the first function called to get descriptors during bus
enumeration.
@param UsbDev The usb device
@param UsbDev The usb device.
@retval EFI_SUCCESS The max packet size of endpoint zero is retrieved
@retval EFI_DEVICE_ERROR Failed to retrieve it
@retval EFI_SUCCESS The max packet size of endpoint zero is retrieved.
@retval EFI_DEVICE_ERROR Failed to retrieve it.
**/
EFI_STATUS
@ -561,17 +541,15 @@ UsbGetMaxPacketSize0 (
}
/**
Get the device descriptor for the device.
@param UsbDev The Usb device to retrieve descriptor from
@param UsbDev The Usb device to retrieve descriptor from.
@retval EFI_SUCCESS The device descriptor is returned
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory
@retval EFI_SUCCESS The device descriptor is returned.
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
**/
STATIC
EFI_STATUS
UsbGetDevDesc (
IN USB_DEVICE *UsbDev
@ -605,17 +583,16 @@ UsbGetDevDesc (
}
/**
Retrieve the indexed string for the language. It requires two
steps to get a string, first to get the string's length. Then
the string itself.
@param UsbDev The usb device
@param Index The index the string to retrieve
@param LangId Language ID
@param UsbDev The usb device.
@param Index The index the string to retrieve.
@param LangId Language ID.
@return The created string descriptor or NULL
@return The created string descriptor or NULL.
**/
EFI_USB_STRING_DESCRIPTOR *
@ -662,16 +639,14 @@ UsbGetOneString (
}
/**
Build the language ID table for string descriptors
Build the language ID table for string descriptors.
@param UsbDev The Usb device
@param UsbDev The Usb device.
@retval EFI_UNSUPPORTED This device doesn't support string table
@retval EFI_UNSUPPORTED This device doesn't support string table.
**/
STATIC
EFI_STATUS
UsbBuildLangTable (
IN USB_DEVICE *UsbDev
@ -716,20 +691,18 @@ ON_EXIT:
}
/**
Retrieve the indexed configure for the device. USB device
returns the configuration togetther with the interfaces for
this configuration. Configuration descriptor is also of
variable length
variable length.
@param UsbDev The Usb interface
@param Index The index of the configuration
@param UsbDev The Usb interface.
@param Index The index of the configuration.
@return The created configuration descriptor
@return The created configuration descriptor.
**/
STATIC
EFI_USB_CONFIG_DESCRIPTOR *
UsbGetOneConfig (
IN USB_DEVICE *UsbDev,
@ -774,16 +747,15 @@ UsbGetOneConfig (
}
/**
Build the whole array of descriptors. This function must
be called after UsbGetMaxPacketSize0 returns the max packet
size correctly for endpoint 0.
@param UsbDev The Usb device
@param UsbDev The Usb device.
@retval EFI_SUCCESS The descriptor table is build
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource for the descriptor
@retval EFI_SUCCESS The descriptor table is build.
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource for the descriptor.
**/
EFI_STATUS
@ -877,11 +849,11 @@ UsbBuildDescTable (
/**
Set the device's address.
@param UsbDev The device to set address to
@param Address The address to set
@param UsbDev The device to set address to.
@param Address The address to set.
@retval EFI_SUCCESS The device is set to the address
@retval Others Failed to set the device address
@retval EFI_SUCCESS The device is set to the address.
@retval Others Failed to set the device address.
**/
EFI_STATUS
@ -913,11 +885,11 @@ UsbSetAddress (
the device's internal state. UsbSelectConfig changes
the Usb bus's internal state.
@param UsbDev The USB device to set configure to
@param ConfigIndex The configure index to set
@param UsbDev The USB device to set configure to.
@param ConfigIndex The configure index to set.
@retval EFI_SUCCESS The device is configured now
@retval Others Failed to set the device configure
@retval EFI_SUCCESS The device is configured now.
@retval Others Failed to set the device configure.
**/
EFI_STATUS
@ -944,19 +916,18 @@ UsbSetConfig (
}
/**
Usb UsbIo interface to clear the feature. This is should
only be used by HUB which is considered a device driver
on top of the UsbIo interface.
@param UsbIo The UsbIo interface
@param Target The target of the transfer: endpoint/device
@param Feature The feature to clear
@param Index The wIndex parameter
@param UsbIo The UsbIo interface.
@param Target The target of the transfer: endpoint/device.
@param Feature The feature to clear.
@param Index The wIndex parameter.
@retval EFI_SUCCESS The device feature is cleared
@retval Others Failed to clear the feature
@retval EFI_SUCCESS The device feature is cleared.
@retval Others Failed to clear the feature.
**/
EFI_STATUS

View File

@ -1,5 +1,7 @@
/** @file
Manage Usb Descriptor List
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,25 +11,14 @@ 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:
UsbDesc.h
Abstract:
Manage Usb Descriptor List
Revision History
**/
#ifndef _USB_DESCRIPTOR_H_
#define _USB_DESCRIPTOR_H_
enum {
typedef enum {
USB_MAX_INTERFACE_SETTING = 8
};
}USB_INTERFACE_SETTING_MAX;
//
// The RequestType in EFI_USB_DEVICE_REQUEST is composed of
@ -89,6 +80,26 @@ typedef struct {
USB_CONFIG_DESC **Configs;
} USB_DEVICE_DESC;
/**
USB standard control transfer support routine. This
function is used by USB device. It is possible that
the device's interfaces are still waiting to be
enumerated.
@param UsbDev The usb device.
@param Direction The direction of data transfer.
@param Type Standard / class specific / vendor specific.
@param Target The receiving target.
@param Request Which request.
@param Value The wValue parameter of the request.
@param Index The wIndex parameter of the request.
@param Buf The buffer to receive data into / transmit from.
@param Length The length of the buffer.
@retval EFI_SUCCESS The control request is executed.
@retval EFI_DEVICE_ERROR Failed to execute the control transfer.
**/
EFI_STATUS
UsbCtrlRequest (
IN USB_DEVICE *UsbDev,
@ -102,16 +113,47 @@ UsbCtrlRequest (
IN UINTN Length
);
/**
Return the max packet size for endpoint zero. This function
is the first function called to get descriptors during bus
enumeration.
@param UsbDev The usb device.
@retval EFI_SUCCESS The max packet size of endpoint zero is retrieved.
@retval EFI_DEVICE_ERROR Failed to retrieve it.
**/
EFI_STATUS
UsbGetMaxPacketSize0 (
IN USB_DEVICE *UsbDev
);
/**
Free a device descriptor with its configurations.
@param DevDesc The device descriptor.
@return None.
**/
VOID
UsbFreeDevDesc (
IN USB_DEVICE_DESC *DevDesc
);
/**
Retrieve the indexed string for the language. It requires two
steps to get a string, first to get the string's length. Then
the string itself.
@param UsbDev The usb device.
@param StringIndex The index of the string to retrieve.
@param LangId Language ID.
@return The created string descriptor or NULL.
**/
EFI_USB_STRING_DESCRIPTOR*
UsbGetOneString (
IN USB_DEVICE *UsbDev,
@ -119,23 +161,70 @@ UsbGetOneString (
IN UINT16 LangId
);
/**
Build the whole array of descriptors. This function must
be called after UsbGetMaxPacketSize0 returns the max packet
size correctly for endpoint 0.
@param UsbDev The Usb device.
@retval EFI_SUCCESS The descriptor table is build.
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource for the descriptor.
**/
EFI_STATUS
UsbBuildDescTable (
IN USB_DEVICE *UsbDev
);
/**
Set the device's address.
@param UsbDev The device to set address to.
@param Address The address to set.
@retval EFI_SUCCESS The device is set to the address.
@retval Others Failed to set the device address.
**/
EFI_STATUS
UsbSetAddress (
IN USB_DEVICE *UsbDev,
IN UINT8 Address
);
/**
Set the device's configuration. This function changes
the device's internal state. UsbSelectConfig changes
the Usb bus's internal state.
@param UsbDev The USB device to set configure to.
@param ConfigIndex The configure index to set.
@retval EFI_SUCCESS The device is configured now.
@retval Others Failed to set the device configure.
**/
EFI_STATUS
UsbSetConfig (
IN USB_DEVICE *UsbDev,
IN UINT8 ConfigIndex
);
/**
Usb UsbIo interface to clear the feature. This is should
only be used by HUB which is considered a device driver
on top of the UsbIo interface.
@param UsbIo The UsbIo interface.
@param Target The target of the transfer: endpoint/device.
@param Feature The feature to clear.
@param Index The wIndex parameter.
@retval EFI_SUCCESS The device feature is cleared.
@retval Others Failed to clear the feature.
**/
EFI_STATUS
UsbIoClearFeature (
IN EFI_USB_IO_PROTOCOL *UsbIo,

View File

@ -1,5 +1,7 @@
/** @file
Usb bus enumeration support.
Copyright (c) 2007 - 2008, 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,29 +11,18 @@ 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:
UsbEnumer.c
Abstract:
Usb bus enumeration support
Revision History
**/
#include "UsbBus.h"
/**
Return the endpoint descriptor in this interface
Return the endpoint descriptor in this interface.
@param UsbIf The interface to search in
@param EpAddr The address of the endpoint to return
@param UsbIf The interface to search in.
@param EpAddr The address of the endpoint to return.
@return The endpoint descriptor or NULL
@return The endpoint descriptor or NULL.
**/
USB_ENDPOINT_DESC *
@ -56,14 +47,13 @@ UsbGetEndpointDesc (
/**
Free the resource used by USB interface
Free the resource used by USB interface.
@param UsbIf The USB interface to free
@param UsbIf The USB interface to free.
@return None
@return None.
**/
STATIC
VOID
UsbFreeInterface (
IN USB_INTERFACE *UsbIf
@ -92,13 +82,12 @@ UsbFreeInterface (
Create an interface for the descriptor IfDesc. Each
device's configuration can have several interfaces.
@param Device The device has the interface descriptor
@param IfDesc The interface descriptor
@param Device The device has the interface descriptor.
@param IfDesc The interface descriptor.
@return The created USB interface for the descriptor, or NULL.
**/
STATIC
USB_INTERFACE *
UsbCreateInterface (
IN USB_DEVICE *Device,
@ -185,7 +174,7 @@ UsbCreateInterface (
return UsbIf;
ON_ERROR:
if (UsbIf->DevicePath) {
if (UsbIf->DevicePath != NULL) {
gBS->FreePool (UsbIf->DevicePath);
}
@ -195,14 +184,13 @@ ON_ERROR:
/**
Free the resource used by this USB device
Free the resource used by this USB device.
@param Device The USB device to free
@param Device The USB device to free.
@return None
@return None.
**/
STATIC
VOID
UsbFreeDevice (
IN USB_DEVICE *Device
@ -219,13 +207,12 @@ UsbFreeDevice (
/**
Create a device which is on the parent's ParentPort port.
@param ParentIf The parent HUB interface
@param ParentPort The port on the HUB this device is connected to
@param ParentIf The parent HUB interface.
@param ParentPort The port on the HUB this device is connected to.
@return Created USB device
@return Created USB device, Or NULL.
**/
STATIC
USB_DEVICE *
UsbCreateDevice (
IN USB_INTERFACE *ParentIf,
@ -255,13 +242,12 @@ UsbCreateDevice (
Connect the USB interface with its driver. EFI USB bus will
create a USB interface for each seperate interface descriptor.
@param UsbIf The interface to connect driver to
@param UsbIf The interface to connect driver to.
@return EFI_SUCCESS : Interface is managed by some driver
@return Others : Failed to locate a driver for this interface
@return EFI_SUCCESS Interface is managed by some driver.
@return Others Failed to locate a driver for this interface.
**/
STATIC
EFI_STATUS
UsbConnectDriver (
IN USB_INTERFACE *UsbIf
@ -318,10 +304,10 @@ UsbConnectDriver (
settings. Only one setting is active. It will
also reset its endpoints' toggle to zero.
@param IfDesc The interface descriptor to set
@param Alternate The alternate setting number to locate
@param IfDesc The interface descriptor to set.
@param Alternate The alternate setting number to locate.
@retval EFI_NOT_FOUND There is no setting with this alternate index
@retval EFI_NOT_FOUND There is no setting with this alternate index.
@retval EFI_SUCCESS The interface is set to Alternate setting.
**/
@ -371,11 +357,11 @@ UsbSelectSetting (
Select a new configuration for the device. Each
device may support several configurations.
@param Device The device to select configuration
@param ConfigValue The index of the configuration ( != 0)
@param Device The device to select configuration.
@param ConfigValue The index of the configuration ( != 0).
@retval EFI_NOT_FOUND There is no configuration with the index
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource
@retval EFI_NOT_FOUND There is no configuration with the index.
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource.
@retval EFI_SUCCESS The configuration is selected.
**/
@ -455,16 +441,14 @@ UsbSelectConfig (
}
/**
Disconnect the USB interface with its driver.
@param UsbIf The interface to disconnect driver from
@param UsbIf The interface to disconnect driver from.
@return None
@return None.
**/
STATIC
VOID
UsbDisconnectDriver (
IN USB_INTERFACE *UsbIf
@ -503,13 +487,12 @@ UsbDisconnectDriver (
}
/**
Remove the current device configuration
Remove the current device configuration.
@param Device The USB device to remove configuration from
@param Device The USB device to remove configuration from.
@return None
@return None.
**/
VOID
@ -540,13 +523,12 @@ UsbRemoveConfig (
}
/**
Remove the device and all its children from the bus.
@param Device The device to remove
@param Device The device to remove.
@retval EFI_SUCCESS The device is removed
@retval EFI_SUCCESS The device is removed.
**/
EFI_STATUS
@ -592,15 +574,14 @@ UsbRemoveDevice (
/**
Find the child device on the hub's port
Find the child device on the hub's port.
@param HubIf The hub interface
@param Port The port of the hub this child is connected to
@param HubIf The hub interface.
@param Port The port of the hub this child is connected to.
@return The device on the hub's port, or NULL if there is none
@return The device on the hub's port, or NULL if there is none.
**/
STATIC
USB_DEVICE *
UsbFindChild (
IN USB_INTERFACE *HubIf,
@ -630,19 +611,17 @@ UsbFindChild (
}
/**
Enumerate and configure the new device on the port of this HUB interface.
@param HubIf The HUB that has the device connected
@param Port The port index of the hub (started with zero)
@param HubIf The HUB that has the device connected.
@param Port The port index of the hub (started with zero).
@retval EFI_SUCCESS The device is enumerated (added or removed)
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource for the device
@retval Others Failed to enumerate the device
@retval EFI_SUCCESS The device is enumerated (added or removed).
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource for the device.
@retval Others Failed to enumerate the device.
**/
STATIC
EFI_STATUS
UsbEnumerateNewDev (
IN USB_INTERFACE *HubIf,
@ -832,19 +811,17 @@ ON_ERROR:
}
/**
Process the events on the port.
@param HubIf The HUB that has the device connected
@param Port The port index of the hub (started with zero)
@param HubIf The HUB that has the device connected.
@param Port The port index of the hub (started with zero).
@retval EFI_SUCCESS The device is enumerated (added or removed)
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource for the device
@retval Others Failed to enumerate the device
@retval EFI_SUCCESS The device is enumerated (added or removed).
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource for the device.
@retval Others Failed to enumerate the device.
**/
STATIC
EFI_STATUS
UsbEnumeratePort (
IN USB_INTERFACE *HubIf,
@ -949,15 +926,16 @@ UsbEnumeratePort (
/**
Enumerate all the changed hub ports
Enumerate all the changed hub ports.
@param Event The event that is triggered
@param Context The context to the event
@param Event The event that is triggered.
@param Context The context to the event.
@return None
@return None.
**/
VOID
EFIAPI
UsbHubEnumeration (
IN EFI_EVENT Event,
IN VOID *Context
@ -999,12 +977,12 @@ UsbHubEnumeration (
/**
Enumerate all the changed hub ports
Enumerate all the changed hub ports.
@param Event The event that is triggered
@param Context The context to the event
@param Event The event that is triggered.
@param Context The context to the event.
@return None
@return None.
**/
VOID

View File

@ -1,5 +1,7 @@
/** @file
USB bus enumeration interface.
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:
UsbEnumer.h
Abstract:
USB bus enumeration interface
Revision History
**/
#ifndef _USB_ENUMERATION_H_
@ -110,35 +101,93 @@ struct _USB_HUB_API{
USB_HUB_RELEASE Release;
};
/**
Return the endpoint descriptor in this interface.
@param UsbIf The interface to search in.
@param EpAddr The address of the endpoint to return.
@return The endpoint descriptor or NULL.
**/
USB_ENDPOINT_DESC*
UsbGetEndpointDesc (
IN USB_INTERFACE *UsbIf,
IN UINT8 EpAddr
);
/**
Select an alternate setting for the interface.
Each interface can have several mutually exclusive
settings. Only one setting is active. It will
also reset its endpoints' toggle to zero.
@param IfDesc The interface descriptor to set.
@param Alternate The alternate setting number to locate.
@retval EFI_NOT_FOUND There is no setting with this alternate index.
@retval EFI_SUCCESS The interface is set to Alternate setting.
**/
EFI_STATUS
UsbSelectSetting (
IN USB_INTERFACE_DESC *IfDesc,
IN UINT8 Alternate
);
/**
Select a new configuration for the device. Each
device may support several configurations.
@param Device The device to select configuration.
@param ConfigIndex The index of the configuration ( != 0).
@retval EFI_NOT_FOUND There is no configuration with the index.
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource.
@retval EFI_SUCCESS The configuration is selected.
**/
EFI_STATUS
UsbSelectConfig (
IN USB_DEVICE *Device,
IN UINT8 ConfigIndex
);
/**
Remove the current device configuration.
@param Device The USB device to remove configuration from.
@return None.
**/
VOID
UsbRemoveConfig (
IN USB_DEVICE *Device
);
/**
Remove the device and all its children from the bus.
@param Device The device to remove.
@retval EFI_SUCCESS The device is removed.
**/
EFI_STATUS
UsbRemoveDevice (
IN USB_DEVICE *Device
);
/**
Enumerate all the changed hub ports.
@param Event The event that is triggered.
@param Context The context to the event.
@return None.
**/
VOID
EFIAPI
UsbHubEnumeration (
@ -146,6 +195,15 @@ UsbHubEnumeration (
IN VOID *Context
);
/**
Enumerate all the changed hub ports.
@param Event The event that is triggered.
@param Context The context to the event.
@return None.
**/
VOID
EFIAPI
UsbRootHubEnumeration (

View File

@ -1,5 +1,7 @@
/** @file
Unified interface for RootHub and Hub.
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:
UsbHub.c
Abstract:
Unified interface for RootHub and Hub
Revision History
**/
#include "UsbBus.h"
@ -32,16 +23,15 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
/**
USB hub control transfer to clear the hub feature
USB hub control transfer to clear the hub feature.
@param HubDev The device of the hub
@param Feature The feature to clear
@param HubDev The device of the hub.
@param Feature The feature to clear.
@retval EFI_SUCCESS Feature of the hub is cleared
@retval Others Failed to clear the feature
@retval EFI_SUCCESS Feature of the hub is cleared.
@retval Others Failed to clear the feature.
**/
STATIC
EFI_STATUS
UsbHubCtrlClearHubFeature (
IN USB_DEVICE *HubDev,
@ -67,17 +57,16 @@ UsbHubCtrlClearHubFeature (
/**
Clear the feature of the device's port
Clear the feature of the device's port.
@param HubDev The hub device
@param Port The port to clear feature
@param Feature The feature to clear
@param HubDev The hub device.
@param Port The port to clear feature.
@param Feature The feature to clear.
@retval EFI_SUCCESS The feature of the port is cleared.
@retval Others Failed to clear the feature.
**/
STATIC
EFI_STATUS
UsbHubCtrlClearPortFeature (
IN USB_DEVICE *HubDev,
@ -107,7 +96,6 @@ UsbHubCtrlClearPortFeature (
}
/**
Clear the transaction translate buffer if full/low
speed control/bulk transfer failed and the transfer
@ -115,14 +103,14 @@ UsbHubCtrlClearPortFeature (
buffer of transaction translator, not that of the
parent.
@param HubDev The hub device
@param Port The port of the hub
@param DevAddr Address of the failed transaction
@param EpNum The endpoint number of the failed transaction
@param EpType The type of failed transaction
@param HubDev The hub device.
@param Port The port of the hub.
@param DevAddr Address of the failed transaction.
@param EpNum The endpoint number of the failed transaction.
@param EpType The type of failed transaction.
@retval EFI_SUCCESS The TT buffer is cleared
@retval Others Failed to clear the TT buffer
@retval EFI_SUCCESS The TT buffer is cleared.
@retval Others Failed to clear the TT buffer.
**/
EFI_STATUS
@ -160,17 +148,16 @@ UsbHubCtrlClearTTBuffer (
/**
Usb hub control transfer to get the hub descriptor
Usb hub control transfer to get the hub descriptor.
@param HubDev The hub device
@param Buf The buffer to hold the descriptor
@param Len The length to retrieve
@param HubDev The hub device.
@param Buf The buffer to hold the descriptor.
@param Len The length to retrieve.
@retval EFI_SUCCESS The hub descriptor is retrieved
@retval Others Failed to retrieve the hub descriptor
@retval EFI_SUCCESS The hub descriptor is retrieved.
@retval Others Failed to retrieve the hub descriptor.
**/
STATIC
EFI_STATUS
UsbHubCtrlGetHubDesc (
IN USB_DEVICE *HubDev,
@ -197,16 +184,15 @@ UsbHubCtrlGetHubDesc (
/**
Usb hub control transfer to get the hub status
Usb hub control transfer to get the hub status.
@param HubDev The hub device
@param State The variable to return the status
@param HubDev The hub device.
@param State The variable to return the status.
@retval EFI_SUCCESS The hub status is returned in State
@retval Others Failed to get the hub status
@retval EFI_SUCCESS The hub status is returned in State.
@retval Others Failed to get the hub status.
**/
STATIC
EFI_STATUS
UsbHubCtrlGetHubStatus (
IN USB_DEVICE *HubDev,
@ -232,17 +218,16 @@ UsbHubCtrlGetHubStatus (
/**
Usb hub control transfer to get the port status
Usb hub control transfer to get the port status.
@param HubDev The hub device
@param Port The port of the hub
@param State Variable to return the hub port state
@param HubDev The hub device.
@param Port The port of the hub.
@param State Variable to return the hub port state.
@retval EFI_SUCCESS The port state is returned in State
@retval Others Failed to retrive the port state
@retval EFI_SUCCESS The port state is returned in State.
@retval Others Failed to retrive the port state.
**/
STATIC
EFI_STATUS
UsbHubCtrlGetPortStatus (
IN USB_DEVICE *HubDev,
@ -275,13 +260,13 @@ UsbHubCtrlGetPortStatus (
/**
Usb hub control transfer to reset the TT (Transaction Transaltor)
Usb hub control transfer to reset the TT (Transaction Transaltor).
@param HubDev The hub device
@param Port The port of the hub
@param HubDev The hub device.
@param Port The port of the hub.
@retval EFI_SUCCESS The TT of the hub is reset
@retval Others Failed to reset the port
@retval EFI_SUCCESS The TT of the hub is reset.
@retval Others Failed to reset the port.
**/
EFI_STATUS
@ -309,13 +294,13 @@ UsbHubCtrlResetTT (
/**
Usb hub control transfer to set the hub feature
Usb hub control transfer to set the hub feature.
@param HubDev The hub device
@param Feature The feature to set
@param HubDev The hub device.
@param Feature The feature to set.
@retval EFI_SUCESS The feature is set for the hub
@retval Others Failed to set the feature
@retval EFI_SUCESS The feature is set for the hub.
@retval Others Failed to set the feature.
**/
EFI_STATUS
@ -343,17 +328,16 @@ UsbHubCtrlSetHubFeature (
/**
Usb hub control transfer to set the port feature
Usb hub control transfer to set the port feature.
@param HubDev The Usb hub device
@param Port The Usb port to set feature for
@param Feature The feature to set
@param HubDev The Usb hub device.
@param Port The Usb port to set feature for.
@param Feature The feature to set.
@retval EFI_SUCCESS The feature is set for the port
@retval Others Failed to set the feature
@retval EFI_SUCCESS The feature is set for the port.
@retval Others Failed to set the feature.
**/
STATIC
EFI_STATUS
UsbHubCtrlSetPortFeature (
IN USB_DEVICE *HubDev,
@ -386,16 +370,15 @@ UsbHubCtrlSetPortFeature (
/**
Read the whole usb hub descriptor. It is necessary
to do it in two steps because hub descriptor is of
variable length
variable length.
@param HubDev The hub device
@param HubDesc The variable to return the descriptor
@param HubDev The hub device.
@param HubDesc The variable to return the descriptor.
@retval EFI_SUCCESS The hub descriptor is read
@retval Others Failed to read the hub descriptor
@retval EFI_SUCCESS The hub descriptor is read.
@retval Others Failed to read the hub descriptor.
**/
STATIC
EFI_STATUS
UsbHubReadDesc (
IN USB_DEVICE *HubDev,
@ -427,10 +410,10 @@ UsbHubReadDesc (
Ack the hub change bits. If these bits are not ACKed, Hub will
always return changed bit map from its interrupt endpoint.
@param HubDev The hub device
@param HubDev The hub device.
@retval EFI_SUCCESS The hub change status is ACKed
@retval Others Failed to ACK the hub status
@retval EFI_SUCCESS The hub change status is ACKed.
@retval Others Failed to ACK the hub status.
**/
EFI_STATUS
@ -462,10 +445,10 @@ UsbHubAckHubStatus (
/**
Test whether the interface is a hub interface.
@param UsbIf The interface to test
@param UsbIf The interface to test.
@retval TRUE The interface is a hub interface
@retval FALSE The interface isn't a hub interface
@retval TRUE The interface is a hub interface.
@retval FALSE The interface isn't a hub interface.
**/
BOOLEAN
@ -496,16 +479,15 @@ UsbIsHubInterface (
interrupt endpoint. It is called periodically by
the underlying host controller.
@param Data The data read
@param DataLength The length of the data read
@param Context The context
@param Result The result of the last interrupt transfer
@param Data The data read.
@param DataLength The length of the data read.
@param Context The context.
@param Result The result of the last interrupt transfer.
@retval EFI_SUCCESS The process is OK
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource
@retval EFI_SUCCESS The process is OK.
@retval EFI_OUT_OF_RESOURCES Failed to allocate resource.
**/
STATIC
EFI_STATUS
UsbOnHubInterrupt (
IN VOID *Data,
@ -624,15 +606,14 @@ USB_CHANGE_FEATURE_MAP mRootHubFeatureMap[USB_ROOT_HUB_MAP_SIZE] = {
/**
Initialize the device for a non-root hub
Initialize the device for a non-root hub.
@param HubIf The USB hub interface
@param HubIf The USB hub interface.
@retval EFI_SUCCESS The hub is initialized
@retval EFI_DEVICE_ERROR Failed to initialize the hub
@retval EFI_SUCCESS The hub is initialized.
@retval EFI_DEVICE_ERROR Failed to initialize the hub.
**/
STATIC
EFI_STATUS
UsbHubInit (
IN USB_INTERFACE *HubIf
@ -760,15 +741,14 @@ UsbHubInit (
the port changes in PortState. Bus enumeration code
doesn't need to ACK the port change bits.
@param HubIf The hub interface
@param Port The port of the hub to get state
@param PortState Variable to return the port state
@param HubIf The hub interface.
@param Port The port of the hub to get state.
@param PortState Variable to return the port state.
@retval EFI_SUCCESS The port status is successfully returned
@retval Others Failed to return the status
@retval EFI_SUCCESS The port status is successfully returned.
@retval Others Failed to return the status.
**/
STATIC
EFI_STATUS
UsbHubGetPortStatus (
IN USB_INTERFACE *HubIf,
@ -788,13 +768,12 @@ UsbHubGetPortStatus (
/**
Clear the port change status.
@param HubIf The hub interface
@param Port The hub port
@param HubIf The hub interface.
@param Port The hub port.
@return None
@return None.
**/
STATIC
VOID
UsbHubClearPortChange (
IN USB_INTERFACE *HubIf,
@ -830,17 +809,16 @@ UsbHubClearPortChange (
/**
Function to set the port feature for non-root hub
Function to set the port feature for non-root hub.
@param HubIf The hub interface
@param Port The port of the hub
@param Feature The feature of the port to set
@param HubIf The hub interface.
@param Port The port of the hub.
@param Feature The feature of the port to set.
@retval EFI_SUCCESS The hub port feature is set
@retval Others Failed to set the port feature
@retval EFI_SUCCESS The hub port feature is set.
@retval Others Failed to set the port feature.
**/
STATIC
EFI_STATUS
UsbHubSetPortFeature (
IN USB_INTERFACE *HubIf,
@ -857,17 +835,16 @@ UsbHubSetPortFeature (
/**
Interface function to clear the port feature for non-root hub
Interface function to clear the port feature for non-root hub.
@param HubIf The hub interface
@param Port The port of the hub to clear feature for
@param Feature The feature to clear
@param HubIf The hub interface.
@param Port The port of the hub to clear feature for.
@param Feature The feature to clear.
@retval EFI_SUCCESS The port feature is cleared
@retval Others Failed to clear the port feature
@retval EFI_SUCCESS The port feature is cleared.
@retval Others Failed to clear the port feature.
**/
STATIC
EFI_STATUS
UsbHubClearPortFeature (
IN USB_INTERFACE *HubIf,
@ -884,17 +861,16 @@ UsbHubClearPortFeature (
/**
Interface funtion to reset the port
Interface funtion to reset the port.
@param HubIf The hub interface
@param Port The port to reset
@param HubIf The hub interface.
@param Port The port to reset.
@retval EFI_SUCCESS The hub port is reset
@retval EFI_TIMEOUT Failed to reset the port in time
@retval Others Failed to reset the port
@retval EFI_SUCCESS The hub port is reset.
@retval EFI_TIMEOUT Failed to reset the port in time.
@retval Others Failed to reset the port.
**/
STATIC
EFI_STATUS
UsbHubResetPort (
IN USB_INTERFACE *HubIf,
@ -939,14 +915,13 @@ UsbHubResetPort (
/**
Release the hub's control of the interface
Release the hub's control of the interface.
@param HubIf The hub interface
@param HubIf The hub interface.
@retval EFI_SUCCESS The interface is release of hub control
@retval EFI_SUCCESS The interface is release of hub control.
**/
STATIC
EFI_STATUS
UsbHubRelease (
IN USB_INTERFACE *HubIf
@ -984,15 +959,14 @@ UsbHubRelease (
/**
Initialize the interface for root hub
Initialize the interface for root hub.
@param HubIf The root hub interface
@param HubIf The root hub interface.
@retval EFI_SUCCESS The interface is initialied for root hub
@retval Others Failed to initialize the hub
@retval EFI_SUCCESS The interface is initialied for root hub.
@retval Others Failed to initialize the hub.
**/
STATIC
EFI_STATUS
UsbRootHubInit (
IN USB_INTERFACE *HubIf
@ -1054,22 +1028,20 @@ UsbRootHubInit (
}
/**
Get the port status. This function is required to
ACK the port change bits although it will return
the port changes in PortState. Bus enumeration code
doesn't need to ACK the port change bits.
@param HubIf The root hub interface
@param Port The root hub port to get the state
@param PortState Variable to return the port state
@param HubIf The root hub interface.
@param Port The root hub port to get the state.
@param PortState Variable to return the port state.
@retval EFI_SUCCESS The port state is returned
@retval Others Failed to retrieve the port state
@retval EFI_SUCCESS The port state is returned.
@retval Others Failed to retrieve the port state.
**/
STATIC
EFI_STATUS
UsbRootHubGetPortStatus (
IN USB_INTERFACE *HubIf,
@ -1090,14 +1062,13 @@ UsbRootHubGetPortStatus (
/**
Clear the port change status.
@param HubIf The root hub interface
@param Port The root hub port
@param HubIf The root hub interface.
@param Port The root hub port.
@retval EFI_SUCCESS The port state is returned
@retval Others Failed to retrieve the port state
@retval EFI_SUCCESS The port state is returned.
@retval Others Failed to retrieve the port state.
**/
STATIC
VOID
UsbRootHubClearPortChange (
IN USB_INTERFACE *HubIf,
@ -1131,19 +1102,17 @@ UsbRootHubClearPortChange (
}
/**
Set the root hub port feature
Set the root hub port feature.
@param HubIf The Usb hub interface
@param Port The hub port
@param Feature The feature to set
@param HubIf The Usb hub interface.
@param Port The hub port.
@param Feature The feature to set.
@retval EFI_SUCCESS The root hub port is set with the feature
@retval Others Failed to set the feature
@retval EFI_SUCCESS The root hub port is set with the feature.
@retval Others Failed to set the feature.
**/
STATIC
EFI_STATUS
UsbRootHubSetPortFeature (
IN USB_INTERFACE *HubIf,
@ -1160,17 +1129,16 @@ UsbRootHubSetPortFeature (
/**
Clear the root hub port feature
Clear the root hub port feature.
@param HubIf The root hub interface
@param Port The root hub port
@param Feature The feature to clear
@param HubIf The root hub interface.
@param Port The root hub port.
@param Feature The feature to clear.
@retval EFI_SUCCESS The root hub port is cleared of the feature
@retval Others Failed to clear the feature
@retval EFI_SUCCESS The root hub port is cleared of the feature.
@retval Others Failed to clear the feature.
**/
STATIC
EFI_STATUS
UsbRootHubClearPortFeature (
IN USB_INTERFACE *HubIf,
@ -1187,19 +1155,18 @@ UsbRootHubClearPortFeature (
/**
Interface funtion to reset the root hub port
Interface funtion to reset the root hub port.
@param RootIf The root hub interface
@param Port The port to reset
@param RootIf The root hub interface.
@param Port The port to reset.
@retval EFI_SUCCESS The hub port is reset
@retval EFI_TIMEOUT Failed to reset the port in time
@retval EFI_NOT_FOUND The low/full speed device connected to high speed
root hub is released to the companion UHCI
@retval Others Failed to reset the port
@retval EFI_SUCCESS The hub port is reset.
@retval EFI_TIMEOUT Failed to reset the port in time.
@retval EFI_NOT_FOUND The low/full speed device connected to high speed.
root hub is released to the companion UHCI.
@retval Others Failed to reset the port.
**/
STATIC
EFI_STATUS
UsbRootHubResetPort (
IN USB_INTERFACE *RootIf,
@ -1295,15 +1262,14 @@ UsbRootHubResetPort (
/**
Release the root hub's control of the interface
Release the root hub's control of the interface.
@param HubIf The root hub interface
@param HubIf The root hub interface.
@retval EFI_SUCCESS The root hub's control of the interface is
released.
**/
STATIC
EFI_STATUS
UsbRootHubRelease (
IN USB_INTERFACE *HubIf

View File

@ -1,5 +1,7 @@
/** @file
The definition for USB hub.
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:
UsbHub.h
Abstract:
The definition for USB hub
Revision History
**/
#ifndef _USB_HUB_H_
@ -30,7 +21,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#define USB_ENDPOINT_ADDR(EpAddr) ((EpAddr) & 0x7F)
#define USB_ENDPOINT_TYPE(Desc) ((Desc)->Attributes & USB_ENDPOINT_TYPE_MASK)
enum {
typedef enum {
USB_DESC_TYPE_HUB = 0x29,
//
@ -95,7 +86,7 @@ enum {
// after 500ms(LOOP * STALL = 100 * 5ms), set by experience
//
USB_WAIT_PORT_STS_CHANGE_LOOP = 100
};
}USB_HUB_FLAGS_VALUE;
#pragma pack(1)
//
@ -119,6 +110,23 @@ typedef struct {
} USB_CHANGE_FEATURE_MAP;
/**
Clear the transaction translate buffer if full/low
speed control/bulk transfer failed and the transfer
uses this hub as translator.Remember to clear the TT
buffer of transaction translator, not that of the
parent.
@param UsbDev The Usb device.
@param Port The port of the hub.
@param DevAddr Address of the failed transaction.
@param EpNum The endpoint number of the failed transaction.
@param EpType The type of failed transaction.
@retval EFI_SUCCESS The TT buffer is cleared.
@retval Others Failed to clear the TT buffer.
**/
EFI_STATUS
UsbHubCtrlClearTTBuffer (
IN USB_DEVICE *UsbDev,
@ -129,11 +137,31 @@ UsbHubCtrlClearTTBuffer (
);
/**
Test whether the interface is a hub interface.
@param UsbIf The interface to test.
@retval TRUE The interface is a hub interface.
@retval FALSE The interface isn't a hub interface.
**/
BOOLEAN
UsbIsHubInterface (
IN USB_INTERFACE *UsbIf
);
/**
Ack the hub change bits. If these bits are not ACKed, Hub will
always return changed bit map from its interrupt endpoint.
@param UsbDev The Usb device.
@retval EFI_SUCCESS The hub change status is ACKed.
@retval Others Failed to ACK the hub status.
**/
EFI_STATUS
UsbHubAckHubStatus (
IN USB_DEVICE *UsbDev

View File

@ -1,5 +1,7 @@
/** @file
Wrapper function for usb host controller interface.
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:
UsbUtility.c
Abstract:
Wrapper function for usb host controller interface
Revision History
**/
@ -59,14 +50,14 @@ STATIC USB_CLASS_FORMAT_DEVICE_PATH mAllUsbClassDevicePath = {
/**
Get the capability of the host controller
Get the capability of the host controller.
@param UsbBus The usb driver
@param MaxSpeed The maximum speed this host controller supports
@param NumOfPort The number of the root hub port
@param Is64BitCapable Whether this controller support 64 bit addressing
@param UsbBus The usb driver.
@param MaxSpeed The maximum speed this host controller supports.
@param NumOfPort The number of the root hub port.
@param Is64BitCapable Whether this controller support 64 bit addressing.
@retval EFI_SUCCESS The host controller capability is returned
@retval EFI_SUCCESS The host controller capability is returned.
@retval Others Failed to retrieve the host controller capability.
**/
@ -100,13 +91,16 @@ UsbHcGetCapability (
/**
Reset the host controller
Reset the host controller.
@param UsbBus The usb bus driver
@param Attributes The reset type, only global reset is used by this driver
@return GC_TODO: add return values
@param UsbBus The usb bus driver.
@param Attributes The reset type, only global reset is used by this driver.
@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.
**/
EFI_STATUS
UsbHcReset (
@ -127,13 +121,13 @@ UsbHcReset (
/**
Get the current operation state of the host controller
Get the current operation state of the host controller.
@param UsbBus The USB bus driver
@param State The host controller operation state
@param UsbBus The USB bus driver.
@param State The host controller operation state.
@retval EFI_SUCCESS The operation state is returned in State
@retval Others Failed to get the host controller state
@retval EFI_SUCCESS The operation state is returned in State.
@retval Others Failed to get the host controller state.
**/
EFI_STATUS
@ -155,13 +149,13 @@ UsbHcGetState (
/**
Set the host controller operation state
Set the host controller operation state.
@param UsbBus The USB bus driver
@param State The state to set
@param UsbBus The USB bus driver.
@param State The state to set.
@retval EFI_SUCCESS The host controller is now working at State
@retval Others Failed to set operation state
@retval EFI_SUCCESS The host controller is now working at State.
@retval Others Failed to set operation state.
**/
EFI_STATUS
@ -183,14 +177,14 @@ UsbHcSetState (
/**
Get the root hub port state
Get the root hub port state.
@param UsbBus The USB bus driver
@param PortIndex The index of port
@param PortStatus The variable to save port state
@param UsbBus The USB bus driver.
@param PortIndex The index of port.
@param PortStatus The variable to save port state.
@retval EFI_SUCCESS The root port state is returned in
@retval Others Failed to get the root hub port state
@retval EFI_SUCCESS The root port state is returned in.
@retval Others Failed to get the root hub port state.
**/
EFI_STATUS
@ -213,14 +207,14 @@ UsbHcGetRootHubPortStatus (
/**
Set the root hub port feature
Set the root hub port feature.
@param UsbBus The USB bus driver
@param PortIndex The port index
@param Feature The port feature to set
@param UsbBus The USB bus driver.
@param PortIndex The port index.
@param Feature The port feature to set.
@retval EFI_SUCCESS The port feature is set
@retval Others Failed to set port feature
@retval EFI_SUCCESS The port feature is set.
@retval Others Failed to set port feature.
**/
EFI_STATUS
@ -244,14 +238,14 @@ UsbHcSetRootHubPortFeature (
/**
Clear the root hub port feature
Clear the root hub port feature.
@param UsbBus The USB bus driver
@param PortIndex The port index
@param Feature The port feature to clear
@param UsbBus The USB bus driver.
@param PortIndex The port index.
@param Feature The port feature to clear.
@retval EFI_SUCCESS The port feature is clear
@retval Others Failed to clear port feature
@retval EFI_SUCCESS The port feature is clear.
@retval Others Failed to clear port feature.
**/
EFI_STATUS
@ -274,22 +268,22 @@ UsbHcClearRootHubPortFeature (
/**
Execute a control transfer to the device
Execute a control transfer to the device.
@param UsbBus The USB bus driver
@param DevAddr The device address
@param DevSpeed The device speed
@param MaxPacket Maximum packet size of endpoint 0
@param Request The control transfer request
@param Direction The direction of data stage
@param Data The buffer holding data
@param DataLength The length of the data
@param TimeOut Timeout (in ms) to wait until timeout
@param Translator The transaction translator for low/full speed device
@param UsbResult The result of transfer
@param UsbBus The USB bus driver.
@param DevAddr The device address.
@param DevSpeed The device speed.
@param MaxPacket Maximum packet size of endpoint 0.
@param Request The control transfer request.
@param Direction The direction of data stage.
@param Data The buffer holding data.
@param DataLength The length of the data.
@param TimeOut Timeout (in ms) to wait until timeout.
@param Translator The transaction translator for low/full speed device.
@param UsbResult The result of transfer.
@retval EFI_SUCCESS The control transfer finished without error
@retval Others The control transfer failed, reason returned in UsbReslt
@retval EFI_SUCCESS The control transfer finished without error.
@retval Others The control transfer failed, reason returned in UsbReslt.
**/
EFI_STATUS
@ -346,25 +340,25 @@ UsbHcControlTransfer (
/**
Execute a bulk transfer to the device's endpoint
Execute a bulk transfer to the device's endpoint.
@param UsbBus The USB bus driver
@param DevAddr The target device address
@param UsbBus The USB bus driver.
@param DevAddr The target device address.
@param EpAddr The target endpoint address, with direction encoded in
bit 7
@param DevSpeed The device's speed
@param MaxPacket The endpoint's max packet size
@param BufferNum The number of data buffer
@param Data Array of pointers to data buffer
@param DataLength The length of data buffer
bit 7.
@param DevSpeed The device's speed.
@param MaxPacket The endpoint's max packet size.
@param BufferNum The number of data buffer.
@param Data Array of pointers to data buffer.
@param DataLength The length of data buffer.
@param DataToggle On input, the initial data toggle to use, also return
the next toggle on output.
@param TimeOut The time to wait until timeout
@param Translator The transaction translator for low/full speed device
@param UsbResult The result of USB execution
@param TimeOut The time to wait until timeout.
@param Translator The transaction translator for low/full speed device.
@param UsbResult The result of USB execution.
@retval EFI_SUCCESS The bulk transfer is finished without error
@retval Others Failed to execute bulk transfer, result in UsbResult
@retval EFI_SUCCESS The bulk transfer is finished without error.
@retval Others Failed to execute bulk transfer, result in UsbResult.
**/
EFI_STATUS
@ -419,25 +413,25 @@ UsbHcBulkTransfer (
/**
Queue or cancel an asynchronous interrupt transfer
Queue or cancel an asynchronous interrupt transfer.
@param UsbBus The USB bus driver
@param DevAddr The target device address
@param UsbBus The USB bus driver.
@param DevAddr The target device address.
@param EpAddr The target endpoint address, with direction encoded in
bit 7
@param DevSpeed The device's speed
@param MaxPacket The endpoint's max packet size
bit 7.
@param DevSpeed The device's speed.
@param MaxPacket The endpoint's max packet size.
@param IsNewTransfer Whether this is a new request. If not, cancel the old
request
@param DataToggle Data toggle to use on input, next toggle on output
@param PollingInterval The interval to poll the interrupt transfer (in ms)
@param DataLength The length of periodical data receive
@param Translator The transaction translator for low/full speed device
@param Callback Function to call when data is received
@param Context The context to the callback
request.
@param DataToggle Data toggle to use on input, next toggle on output.
@param PollingInterval The interval to poll the interrupt transfer (in ms).
@param DataLength The length of periodical data receive.
@param Translator The transaction translator for low/full speed device.
@param Callback Function to call when data is received.
@param Context The context to the callback.
@retval EFI_SUCCESS The asynchronous transfer is queued
@retval Others Failed to queue the transfer
@retval EFI_SUCCESS The asynchronous transfer is queued.
@retval Others Failed to queue the transfer.
**/
EFI_STATUS
@ -497,24 +491,24 @@ UsbHcAsyncInterruptTransfer (
/**
Execute a synchronous interrupt transfer to the target endpoint
Execute a synchronous interrupt transfer to the target endpoint.
@param UsbBus The USB bus driver
@param DevAddr The target device address
@param UsbBus The USB bus driver.
@param DevAddr The target device address.
@param EpAddr The target endpoint address, with direction encoded in
bit 7
@param DevSpeed The device's speed
@param MaxPacket The endpoint's max packet size
@param Data Pointer to data buffer
@param DataLength The length of data buffer
bit 7.
@param DevSpeed The device's speed.
@param MaxPacket The endpoint's max packet size.
@param Data Pointer to data buffer.
@param DataLength The length of data buffer.
@param DataToggle On input, the initial data toggle to use, also return
the next toggle on output.
@param TimeOut The time to wait until timeout
@param Translator The transaction translator for low/full speed device
@param UsbResult The result of USB execution
@param TimeOut The time to wait until timeout.
@param Translator The transaction translator for low/full speed device.
@param UsbResult The result of USB execution.
@retval EFI_SUCCESS The synchronous interrupt transfer is OK
@retval Others Failed to execute the synchronous interrupt transfer
@retval EFI_SUCCESS The synchronous interrupt transfer is OK.
@retval Others Failed to execute the synchronous interrupt transfer.
**/
EFI_STATUS
@ -570,21 +564,21 @@ UsbHcSyncInterruptTransfer (
/**
Execute a synchronous Isochronous USB transfer
Execute a synchronous Isochronous USB transfer.
@param UsbBus The USB bus driver
@param DevAddr The target device address
@param UsbBus The USB bus driver.
@param DevAddr The target device address.
@param EpAddr The target endpoint address, with direction encoded in
bit 7
@param DevSpeed The device's speed
@param MaxPacket The endpoint's max packet size
@param BufferNum The number of data buffer
@param Data Array of pointers to data buffer
@param DataLength The length of data buffer
@param Translator The transaction translator for low/full speed device
@param UsbResult The result of USB execution
bit 7.
@param DevSpeed The device's speed.
@param MaxPacket The endpoint's max packet size.
@param BufferNum The number of data buffer.
@param Data Array of pointers to data buffer.
@param DataLength The length of data buffer.
@param Translator The transaction translator for low/full speed device.
@param UsbResult The result of USB execution.
@retval EFI_UNSUPPORTED The isochronous transfer isn't supported now
@retval EFI_UNSUPPORTED The isochronous transfer isn't supported now.
**/
EFI_STATUS
@ -606,22 +600,22 @@ UsbHcIsochronousTransfer (
/**
Queue an asynchronous isochronous transfer
Queue an asynchronous isochronous transfer.
@param UsbBus The USB bus driver
@param DevAddr The target device address
@param UsbBus The USB bus driver.
@param DevAddr The target device address.
@param EpAddr The target endpoint address, with direction encoded in
bit 7
@param DevSpeed The device's speed
@param MaxPacket The endpoint's max packet size
@param BufferNum The number of data buffer
@param Data Array of pointers to data buffer
@param DataLength The length of data buffer
@param Translator The transaction translator for low/full speed device
@param Callback The function to call when data is transferred
@param Context The context to the callback function
bit 7.
@param DevSpeed The device's speed.
@param MaxPacket The endpoint's max packet size.
@param BufferNum The number of data buffer.
@param Data Array of pointers to data buffer.
@param DataLength The length of data buffer.
@param Translator The transaction translator for low/full speed device.
@param Callback The function to call when data is transferred.
@param Context The context to the callback function.
@retval EFI_UNSUPPORTED The asynchronous isochronous transfer isn't supported
@retval EFI_UNSUPPORTED The asynchronous isochronous transfer isn't supported.
**/
EFI_STATUS
@ -644,12 +638,12 @@ UsbHcAsyncIsochronousTransfer (
/**
Open the USB host controller protocol BY_CHILD
Open the USB host controller protocol BY_CHILD.
@param Bus The USB bus driver
@param Child The child handle
@param Bus The USB bus driver.
@param Child The child handle.
@return The open protocol return
@return The open protocol return.
**/
EFI_STATUS
@ -688,12 +682,12 @@ UsbOpenHostProtoByChild (
/**
Close the USB host controller protocol BY_CHILD
Close the USB host controller protocol BY_CHILD.
@param Bus The USB bus driver
@param Child The child handle
@param Bus The USB bus driver.
@param Child The child handle.
@return None
@return None.
**/
VOID
@ -721,13 +715,12 @@ UsbCloseHostProtoByChild (
}
/**
return the current TPL, copied from the EDKII glue lib.
VOID
@param VOID.
@return Current TPL
@return Current TPL.
**/
EFI_TPL
@ -744,11 +737,11 @@ UsbGetCurrentTpl (
}
/**
Create a new device path which only contain the first Usb part of the DevicePath
Create a new device path which only contain the first Usb part of the DevicePath.
@param DevicePath A full device path which contain the usb nodes
@param DevicePath A full device path which contain the usb nodes.
@return A new device path which only contain the Usb part of the DevicePath
@return A new device path which only contain the Usb part of the DevicePath.
**/
EFI_DEVICE_PATH_PROTOCOL *
@ -816,11 +809,11 @@ GetUsbDPFromFullDP (
/**
Check whether a usb device path is in a DEVICE_PATH_LIST_ITEM list.
@param UsbDP a usb device path of DEVICE_PATH_LIST_ITEM
@parem UsbIoDPList a DEVICE_PATH_LIST_ITEM list
@param UsbDP a usb device path of DEVICE_PATH_LIST_ITEM.
@param UsbIoDPList a DEVICE_PATH_LIST_ITEM list.
@retval TRUE there is a DEVICE_PATH_LIST_ITEM in UsbIoDPList which contains the passed in UsbDP
@retval FALSE there is no DEVICE_PATH_LIST_ITEM in UsbIoDPList which contains the passed in UsbDP
@retval TRUE there is a DEVICE_PATH_LIST_ITEM in UsbIoDPList which contains the passed in UsbDP.
@retval FALSE there is no DEVICE_PATH_LIST_ITEM in UsbIoDPList which contains the passed in UsbDP.
**/
BOOLEAN
@ -867,11 +860,11 @@ SearchUsbDPInList (
/**
Add a usb device path into the DEVICE_PATH_LIST_ITEM list.
@param UsbDP a usb device path of DEVICE_PATH_LIST_ITEM
@param UsbIoDPList a DEVICE_PATH_LIST_ITEM list
@param UsbDP a usb device path of DEVICE_PATH_LIST_ITEM.
@param UsbIoDPList a DEVICE_PATH_LIST_ITEM list.
@retval EFI_INVALID_PARAMETER
@retval EFI_SUCCESS
@retval EFI_INVALID_PARAMETER If parameters are invalid, return this value.
@retval EFI_SUCCESS If Add operation is successful, return this value.
**/
EFI_STATUS
@ -909,13 +902,13 @@ AddUsbDPToList (
/**
Check whether usb device, whose interface is UsbIf, matches the usb class which indicated by
UsbClassDevicePathPtr whose is a short form usb class device path
UsbClassDevicePathPtr whose is a short form usb class device path.
@param UsbClassDevicePathPtr a short form usb class device path
@param UsbIf a usb device interface
@param UsbClassDevicePathPtr a short form usb class device path.
@param UsbIf a usb device interface.
@retval TRUE the usb device match the usb class
@retval FALSE the usb device does not match the usb class
@retval TRUE the usb device match the usb class.
@retval FALSE the usb device does not match the usb class.
**/
BOOLEAN
@ -989,16 +982,15 @@ MatchUsbClass (
/**
Check whether usb device, whose interface is UsbIf, matches the usb WWID requirement which indicated by
UsbWWIDDevicePathPtr whose is a short form usb WWID device path
UsbWWIDDevicePathPtr whose is a short form usb WWID device path.
@param UsbClassDevicePathPtr a short form usb WWID device path
@param UsbIf a usb device interface
@param UsbWWIDDevicePathPtr a short form usb WWID device path.
@param UsbIf a usb device interface.
@retval TRUE the usb device match the usb WWID requirement
@retval FALSE the usb device does not match the usb WWID requirement
@retval TRUE the usb device match the usb WWID requirement.
@retval FALSE the usb device does not match the usb WWID requirement.
**/
STATIC
BOOLEAN
MatchUsbWwid (
IN USB_WWID_DEVICE_PATH *UsbWWIDDevicePathPtr,
@ -1047,12 +1039,12 @@ MatchUsbWwid (
}
/**
Free a DEVICE_PATH_LIST_ITEM list
Free a DEVICE_PATH_LIST_ITEM list.
@param UsbIoDPList a DEVICE_PATH_LIST_ITEM list pointer
@param UsbIoDPList a DEVICE_PATH_LIST_ITEM list pointer.
@retval EFI_INVALID_PARAMETER
@retval EFI_SUCCESS
@retval EFI_INVALID_PARAMETER If parameters are invalid, return this value.
@retval EFI_SUCCESS If free operation is successful, return this value.
**/
EFI_STATUS
@ -1094,14 +1086,13 @@ UsbBusFreeUsbDPList (
/**
Store a wanted usb child device info (its Usb part of device path) which is indicated by
RemainingDevicePath in a Usb bus which is indicated by UsbBusId
RemainingDevicePath in a Usb bus which is indicated by UsbBusId.
@param UsbBusId Point to EFI_USB_BUS_PROTOCOL interface
@param RemainingDevicePath The remaining device patch
@param UsbBusId Point to EFI_USB_BUS_PROTOCOL interface.
@param RemainingDevicePath The remaining device patch.
@retval EFI_SUCCESS
@retval EFI_INVALID_PARAMETER
@retval EFI_OUT_OF_RESOURCES
@retval EFI_SUCCESS Add operation is successful.
@retval EFI_INVALID_PARAMETER The parameters are invalid.
**/
EFI_STATUS
@ -1158,14 +1149,13 @@ UsbBusAddWantedUsbIoDP (
}
/**
Check whether a usb child device is the wanted device in a bus
Check whether a usb child device is the wanted device in a bus.
@param Bus The Usb bus's private data pointer
@param UsbIf The usb child device inferface
@param Bus The Usb bus's private data pointer.
@param UsbIf The usb child device inferface.
@retval EFI_SUCCESS
@retval EFI_INVALID_PARAMETER
@retval EFI_OUT_OF_RESOURCES
@retval True If a usb child device is the wanted device in a bus.
@retval False If a usb child device is *NOT* the wanted device in a bus.
**/
BOOLEAN
@ -1265,13 +1255,12 @@ UsbBusIsWantedUsbIO (
/**
Recursively connnect every wanted usb child device to ensure they all fully connected.
Check all the child Usb IO handles in this bus, recursively connecte if it is wanted usb child device
Check all the child Usb IO handles in this bus, recursively connecte if it is wanted usb child device.
@param UsbBusId point to EFI_USB_BUS_PROTOCOL interface
@param UsbBusId Point to EFI_USB_BUS_PROTOCOL interface.
@retval EFI_SUCCESS
@retval EFI_INVALID_PARAMETER
@retval EFI_OUT_OF_RESOURCES
@retval EFI_SUCCESS Connect is done successfully.
@retval EFI_INVALID_PARAMETER The parameter is invalid.
**/
EFI_STATUS

View File

@ -1,5 +1,7 @@
/** @file
Manage Usb Port/Hc/Etc.
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,22 +11,23 @@ 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:
UsbUtility.h
Abstract:
Manage Usb Port/Hc/Etc
Revision History
**/
#ifndef _USB_UTILITY_H
#define _USB_UTILITY_H
#ifndef _EFI_USB_UTILITY_H_
#define _EFI_USB_UTILITY_H_
/**
Get the capability of the host controller.
@param UsbBus The usb driver.
@param MaxSpeed The maximum speed this host controller supports.
@param NumOfPort The number of the root hub port.
@param Is64BitCapable Whether this controller support 64 bit addressing.
@retval EFI_SUCCESS The host controller capability is returned.
@retval Others Failed to retrieve the host controller capability.
**/
EFI_STATUS
UsbHcGetCapability (
IN USB_BUS *UsbBus,
@ -33,27 +36,67 @@ UsbHcGetCapability (
OUT UINT8 *Is64BitCapable
);
/**
Reset the host controller.
@param UsbBus The usb bus driver.
@param Attributes The reset type, only global reset is used by this driver.
@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.
**/
EFI_STATUS
UsbHcReset (
IN USB_BUS *UsbBus,
IN UINT16 Attributes
);
/**
Get the current operation state of the host controller.
@param UsbBus The USB bus driver.
@param State The host controller operation state.
@retval EFI_SUCCESS The operation state is returned in State.
@retval Others Failed to get the host controller state.
**/
EFI_STATUS
UsbHcGetState (
IN USB_BUS *UsbBus,
OUT EFI_USB_HC_STATE *State
);
/**
Set the host controller operation state.
@param UsbBus The USB bus driver.
@param State The state to set.
@retval EFI_SUCCESS The host controller is now working at State.
@retval Others Failed to set operation state.
**/
EFI_STATUS
UsbHcSetState (
IN USB_BUS *UsbBus,
IN EFI_USB_HC_STATE State
);
/**
Get the root hub port state.
@param UsbBus The USB bus driver.
@param PortIndex The index of port.
@param PortStatus The variable to save port state.
@retval EFI_SUCCESS The root port state is returned in.
@retval Others Failed to get the root hub port state.
**/
EFI_STATUS
UsbHcGetRootHubPortStatus (
IN USB_BUS *UsbBus,
@ -61,7 +104,17 @@ UsbHcGetRootHubPortStatus (
OUT EFI_USB_PORT_STATUS *PortStatus
);
/**
Set the root hub port feature.
@param UsbBus The USB bus driver.
@param PortIndex The port index.
@param Feature The port feature to set.
@retval EFI_SUCCESS The port feature is set.
@retval Others Failed to set port feature.
**/
EFI_STATUS
UsbHcSetRootHubPortFeature (
IN USB_BUS *UsbBus,
@ -69,7 +122,17 @@ UsbHcSetRootHubPortFeature (
IN EFI_USB_PORT_FEATURE Feature
);
/**
Clear the root hub port feature.
@param UsbBus The USB bus driver.
@param PortIndex The port index.
@param Feature The port feature to clear.
@retval EFI_SUCCESS The port feature is clear.
@retval Others Failed to clear port feature.
**/
EFI_STATUS
UsbHcClearRootHubPortFeature (
IN USB_BUS *UsbBus,
@ -77,7 +140,25 @@ UsbHcClearRootHubPortFeature (
IN EFI_USB_PORT_FEATURE Feature
);
/**
Execute a control transfer to the device.
@param UsbBus The USB bus driver.
@param DevAddr The device address.
@param DevSpeed The device speed.
@param MaxPacket Maximum packet size of endpoint 0.
@param Request The control transfer request.
@param Direction The direction of data stage.
@param Data The buffer holding data.
@param DataLength The length of the data.
@param TimeOut Timeout (in ms) to wait until timeout.
@param Translator The transaction translator for low/full speed device.
@param UsbResult The result of transfer.
@retval EFI_SUCCESS The control transfer finished without error.
@retval Others The control transfer failed, reason returned in UsbReslt.
**/
EFI_STATUS
UsbHcControlTransfer (
IN USB_BUS *UsbBus,
@ -93,7 +174,28 @@ UsbHcControlTransfer (
OUT UINT32 *UsbResult
);
/**
Execute a bulk transfer to the device's endpoint.
@param UsbBus The USB bus driver.
@param DevAddr The target device address.
@param EpAddr The target endpoint address, with direction encoded in
bit 7.
@param DevSpeed The device's speed.
@param MaxPacket The endpoint's max packet size.
@param BufferNum The number of data buffer.
@param Data Array of pointers to data buffer.
@param DataLength The length of data buffer.
@param DataToggle On input, the initial data toggle to use, also return
the next toggle on output.
@param TimeOut The time to wait until timeout.
@param Translator The transaction translator for low/full speed device.
@param UsbResult The result of USB execution.
@retval EFI_SUCCESS The bulk transfer is finished without error.
@retval Others Failed to execute bulk transfer, result in UsbResult.
**/
EFI_STATUS
UsbHcBulkTransfer (
IN USB_BUS *UsbBus,
@ -110,7 +212,28 @@ UsbHcBulkTransfer (
OUT UINT32 *UsbResult
);
/**
Queue or cancel an asynchronous interrupt transfer.
@param UsbBus The USB bus driver.
@param DevAddr The target device address.
@param EpAddr The target endpoint address, with direction encoded in
bit 7.
@param DevSpeed The device's speed.
@param MaxPacket The endpoint's max packet size.
@param IsNewTransfer Whether this is a new request. If not, cancel the old
request.
@param DataToggle Data toggle to use on input, next toggle on output.
@param PollingInterval The interval to poll the interrupt transfer (in ms).
@param DataLength The length of periodical data receive.
@param Translator The transaction translator for low/full speed device.
@param Callback Function to call when data is received.
@param Context The context to the callback.
@retval EFI_SUCCESS The asynchronous transfer is queued.
@retval Others Failed to queue the transfer.
**/
EFI_STATUS
UsbHcAsyncInterruptTransfer (
IN USB_BUS *UsbBus,
@ -127,7 +250,27 @@ UsbHcAsyncInterruptTransfer (
IN VOID *Context OPTIONAL
);
/**
Execute a synchronous interrupt transfer to the target endpoint.
@param UsbBus The USB bus driver.
@param DevAddr The target device address.
@param EpAddr The target endpoint address, with direction encoded in
bit 7.
@param DevSpeed The device's speed.
@param MaxPacket The endpoint's max packet size.
@param Data Pointer to data buffer.
@param DataLength The length of data buffer.
@param DataToggle On input, the initial data toggle to use, also return
the next toggle on output.
@param TimeOut The time to wait until timeout.
@param Translator The transaction translator for low/full speed device.
@param UsbResult The result of USB execution.
@retval EFI_SUCCESS The synchronous interrupt transfer is OK.
@retval Others Failed to execute the synchronous interrupt transfer.
**/
EFI_STATUS
UsbHcSyncInterruptTransfer (
IN USB_BUS *UsbBus,
@ -143,7 +286,24 @@ UsbHcSyncInterruptTransfer (
OUT UINT32 *UsbResult
);
/**
Execute a synchronous Isochronous USB transfer.
@param UsbBus The USB bus driver.
@param DevAddr The target device address.
@param EpAddr The target endpoint address, with direction encoded in
bit 7.
@param DevSpeed The device's speed.
@param MaxPacket The endpoint's max packet size.
@param BufferNum The number of data buffer.
@param Data Array of pointers to data buffer.
@param DataLength The length of data buffer.
@param Translator The transaction translator for low/full speed device.
@param UsbResult The result of USB execution.
@retval EFI_UNSUPPORTED The isochronous transfer isn't supported now.
**/
EFI_STATUS
UsbHcIsochronousTransfer (
IN USB_BUS *UsbBus,
@ -158,7 +318,25 @@ UsbHcIsochronousTransfer (
OUT UINT32 *UsbResult
);
/**
Queue an asynchronous isochronous transfer.
@param UsbBus The USB bus driver.
@param DevAddr The target device address.
@param EpAddr The target endpoint address, with direction encoded in
bit 7.
@param DevSpeed The device's speed.
@param MaxPacket The endpoint's max packet size.
@param BufferNum The number of data buffer.
@param Data Array of pointers to data buffer.
@param DataLength The length of data buffer.
@param Translator The transaction translator for low/full speed device.
@param Callback The function to call when data is transferred.
@param Context The context to the callback function.
@retval EFI_UNSUPPORTED The asynchronous isochronous transfer isn't supported.
**/
EFI_STATUS
UsbHcAsyncIsochronousTransfer (
IN USB_BUS *UsbBus,
@ -174,37 +352,47 @@ UsbHcAsyncIsochronousTransfer (
IN VOID *Context
);
/**
Open the USB host controller protocol BY_CHILD.
@param Bus The USB bus driver.
@param Child The child handle.
@return The open protocol return.
**/
EFI_STATUS
UsbOpenHostProtoByChild (
IN USB_BUS *Bus,
IN EFI_HANDLE Child
);
/**
Close the USB host controller protocol BY_CHILD.
@param Bus The USB bus driver.
@param Child The child handle.
@return None.
**/
VOID
UsbCloseHostProtoByChild (
IN USB_BUS *Bus,
IN EFI_HANDLE Child
);
/**
return the current TPL, copied from the EDKII glue lib.
@param VOID.
@return Current TPL.
**/
EFI_TPL
UsbGetCurrentTpl (
VOID
);
VOID
UsbDebug (
IN CHAR8 *Format,
...
);
VOID
UsbError (
IN CHAR8 *Format,
...
);
#endif