Initial import.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
261
EdkModulePkg/Bus/Usb/UsbBus/Dxe/usbbus.h
Normal file
261
EdkModulePkg/Bus/Usb/UsbBus/Dxe/usbbus.h
Normal file
@@ -0,0 +1,261 @@
|
||||
/*++
|
||||
Copyright (c) 2006, 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
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
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:
|
||||
|
||||
Header file for USB bus driver Interface
|
||||
|
||||
Revision History
|
||||
|
||||
|
||||
|
||||
--*/
|
||||
|
||||
#ifndef _EFI_USB_BUS_H
|
||||
#define _EFI_USB_BUS_H
|
||||
|
||||
|
||||
#include <IndustryStandard/usb.h>
|
||||
#include "Hub.h"
|
||||
#include "Usbutil.h"
|
||||
|
||||
//#ifdef EFI_DEBUG
|
||||
extern UINTN gUSBDebugLevel;
|
||||
extern UINTN gUSBErrorLevel;
|
||||
//#endif
|
||||
|
||||
#define MICROSECOND 10000
|
||||
#define ONESECOND (1000 * MICROSECOND)
|
||||
#define BUSPOLLING_PERIOD ONESECOND
|
||||
//
|
||||
// We define some maximun value here
|
||||
//
|
||||
#define USB_MAXCONFIG 8
|
||||
#define USB_MAXALTSETTING 4
|
||||
#define USB_MAXINTERFACES 32
|
||||
#define USB_MAXENDPOINTS 16
|
||||
#define USB_MAXSTRINGS 16
|
||||
#define USB_MAXLANID 16
|
||||
#define USB_MAXCHILDREN 8
|
||||
#define USB_MAXCONTROLLERS 4
|
||||
|
||||
#define USB_IO_CONTROLLER_SIGNATURE EFI_SIGNATURE_32 ('u', 's', 'b', 'd')
|
||||
|
||||
typedef struct {
|
||||
LIST_ENTRY Link;
|
||||
UINT16 StringIndex;
|
||||
CHAR16 *String;
|
||||
} STR_LIST_ENTRY;
|
||||
|
||||
typedef struct {
|
||||
LIST_ENTRY Link;
|
||||
UINT16 Toggle;
|
||||
EFI_USB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
|
||||
} ENDPOINT_DESC_LIST_ENTRY;
|
||||
|
||||
typedef struct {
|
||||
LIST_ENTRY Link;
|
||||
EFI_USB_INTERFACE_DESCRIPTOR InterfaceDescriptor;
|
||||
LIST_ENTRY EndpointDescListHead;
|
||||
} INTERFACE_DESC_LIST_ENTRY;
|
||||
|
||||
typedef struct {
|
||||
LIST_ENTRY Link;
|
||||
EFI_USB_CONFIG_DESCRIPTOR CongfigDescriptor;
|
||||
LIST_ENTRY InterfaceDescListHead;
|
||||
UINTN ActiveInterface;
|
||||
} CONFIG_DESC_LIST_ENTRY;
|
||||
|
||||
//
|
||||
// Forward declaring
|
||||
//
|
||||
struct usb_io_device;
|
||||
|
||||
//
|
||||
// This is used to form the USB Controller Handle
|
||||
//
|
||||
typedef struct usb_io_controller_device {
|
||||
UINTN Signature;
|
||||
EFI_HANDLE Handle;
|
||||
EFI_USB_IO_PROTOCOL UsbIo;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
EFI_HANDLE HostController;
|
||||
UINT8 CurrentConfigValue;
|
||||
UINT8 InterfaceNumber;
|
||||
struct usb_io_device *UsbDevice;
|
||||
|
||||
BOOLEAN IsUsbHub;
|
||||
BOOLEAN IsManagedByDriver;
|
||||
|
||||
//
|
||||
// Fields specified for USB Hub
|
||||
//
|
||||
EFI_EVENT HubNotify;
|
||||
UINT8 HubEndpointAddress;
|
||||
UINT8 StatusChangePort;
|
||||
UINT8 DownstreamPorts;
|
||||
|
||||
UINT8 ParentPort;
|
||||
struct usb_io_controller_device *Parent;
|
||||
struct usb_io_device *Children[USB_MAXCHILDREN];
|
||||
} USB_IO_CONTROLLER_DEVICE;
|
||||
|
||||
#define USB_IO_CONTROLLER_DEVICE_FROM_USB_IO_THIS(a) \
|
||||
CR(a, USB_IO_CONTROLLER_DEVICE, UsbIo, USB_IO_CONTROLLER_SIGNATURE)
|
||||
|
||||
//
|
||||
// This is used to keep the topology of USB bus
|
||||
//
|
||||
struct _usb_bus_controller_device;
|
||||
|
||||
typedef struct usb_io_device {
|
||||
UINT8 DeviceAddress;
|
||||
BOOLEAN IsConfigured;
|
||||
BOOLEAN IsSlowDevice;
|
||||
EFI_USB_DEVICE_DESCRIPTOR DeviceDescriptor;
|
||||
LIST_ENTRY ConfigDescListHead;
|
||||
CONFIG_DESC_LIST_ENTRY *ActiveConfig;
|
||||
UINT16 LangID[USB_MAXLANID];
|
||||
|
||||
struct _usb_bus_controller_device *BusController;
|
||||
|
||||
//
|
||||
// Track the controller handle
|
||||
//
|
||||
UINT8 NumOfControllers;
|
||||
USB_IO_CONTROLLER_DEVICE *UsbController[USB_MAXCONTROLLERS];
|
||||
|
||||
} USB_IO_DEVICE;
|
||||
|
||||
//
|
||||
// Usb Bus Controller device strcuture
|
||||
//
|
||||
#define EFI_USB_BUS_PROTOCOL_GUID \
|
||||
{ 0x2B2F68CC, 0x0CD2, 0x44cf, { 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 } }
|
||||
|
||||
typedef struct _EFI_USB_BUS_PROTOCOL {
|
||||
UINT64 Reserved;
|
||||
} EFI_USB_BUS_PROTOCOL;
|
||||
|
||||
#define USB_BUS_DEVICE_SIGNATURE EFI_SIGNATURE_32 ('u', 'b', 'u', 's')
|
||||
|
||||
typedef struct _usb_bus_controller_device {
|
||||
UINTN Signature;
|
||||
|
||||
EFI_USB_BUS_PROTOCOL BusIdentify;
|
||||
EFI_USB_HC_PROTOCOL *UsbHCInterface;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
UINT8 AddressPool[16];
|
||||
USB_IO_DEVICE *Root;
|
||||
} USB_BUS_CONTROLLER_DEVICE;
|
||||
|
||||
#define USB_BUS_CONTROLLER_DEVICE_FROM_THIS(a) \
|
||||
CR(a, USB_BUS_CONTROLLER_DEVICE, BusIdentify, USB_BUS_DEVICE_SIGNATURE)
|
||||
|
||||
|
||||
//
|
||||
// Global Variables
|
||||
//
|
||||
extern EFI_DRIVER_BINDING_PROTOCOL gUsbBusDriverBinding;
|
||||
extern EFI_COMPONENT_NAME_PROTOCOL gUsbBusComponentName;
|
||||
extern EFI_GUID gUSBBusDriverGuid;
|
||||
|
||||
//
|
||||
// Usb Device Configuration functions
|
||||
//
|
||||
BOOLEAN
|
||||
IsHub (
|
||||
IN USB_IO_CONTROLLER_DEVICE *Dev
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
UsbGetStringtable (
|
||||
IN USB_IO_DEVICE *UsbIoDevice
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
UsbGetAllConfigurations (
|
||||
IN USB_IO_DEVICE *UsbIoDevice
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
UsbSetConfiguration (
|
||||
IN USB_IO_DEVICE *Dev,
|
||||
IN UINTN ConfigurationValue
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
UsbSetDefaultConfiguration (
|
||||
IN USB_IO_DEVICE *Dev
|
||||
);
|
||||
|
||||
//
|
||||
// Device Deconfiguration functions
|
||||
//
|
||||
VOID
|
||||
UsbDestroyAllConfiguration (
|
||||
IN USB_IO_DEVICE *UsbIoDevice
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
DoHubConfig (
|
||||
IN USB_IO_CONTROLLER_DEVICE *HubIoDevice
|
||||
);
|
||||
|
||||
VOID
|
||||
GetDeviceEndPointMaxPacketLength (
|
||||
IN EFI_USB_IO_PROTOCOL *UsbIo,
|
||||
IN UINT8 EndpointAddr,
|
||||
OUT UINT8 *MaxPacketLength
|
||||
);
|
||||
|
||||
VOID
|
||||
GetDataToggleBit (
|
||||
IN EFI_USB_IO_PROTOCOL *UsbIo,
|
||||
IN UINT8 EndpointAddr,
|
||||
OUT UINT8 *DataToggle
|
||||
);
|
||||
|
||||
VOID
|
||||
SetDataToggleBit (
|
||||
IN EFI_USB_IO_PROTOCOL *UsbIo,
|
||||
IN UINT8 EndpointAddr,
|
||||
IN UINT8 DataToggle
|
||||
);
|
||||
|
||||
INTERFACE_DESC_LIST_ENTRY *
|
||||
FindInterfaceListEntry (
|
||||
IN EFI_USB_IO_PROTOCOL *This
|
||||
);
|
||||
|
||||
ENDPOINT_DESC_LIST_ENTRY *
|
||||
FindEndPointListEntry (
|
||||
IN EFI_USB_IO_PROTOCOL *This,
|
||||
IN UINT8 EndPointAddress
|
||||
);
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
IsDeviceDisconnected (
|
||||
IN USB_IO_CONTROLLER_DEVICE *UsbIoController,
|
||||
IN OUT BOOLEAN *Disconnected
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
UsbDeviceDeConfiguration (
|
||||
IN USB_IO_DEVICE *UsbIoDevice
|
||||
);
|
||||
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user