Home | History | Annotate | Download | only in UsbIo
      1 /*++
      2 
      3 Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>
      4 This program and the accompanying materials
      5 are licensed and made available under the terms and conditions of the BSD License
      6 which accompanies this distribution.  The full text of the license may be found at
      7 http://opensource.org/licenses/bsd-license.php
      8 
      9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 
     12 Module Name:
     13 
     14     UsbIo.h
     15 
     16 Abstract:
     17 
     18     EFI Usb I/O Protocol
     19 
     20 Revision History
     21 
     22 --*/
     23 
     24 #ifndef _EFI_USB_IO_H
     25 #define _EFI_USB_IO_H
     26 
     27 #include "usb.h"
     28 
     29 //
     30 // Global ID for the USB I/O Protocol
     31 //
     32 #define EFI_USB_IO_PROTOCOL_GUID \
     33   { \
     34     0x2B2F68D6, 0x0CD2, 0x44cf, {0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75} \
     35   }
     36 
     37 EFI_FORWARD_DECLARATION (EFI_USB_IO_PROTOCOL);
     38 
     39 //
     40 //  Asynchronous USB transfer call back function
     41 //
     42 typedef
     43 EFI_STATUS
     44 (EFIAPI *EFI_ASYNC_USB_TRANSFER_CALLBACK) (
     45   IN VOID         *Data,
     46   IN UINTN        DataLength,
     47   IN VOID         *Context,
     48   IN UINT32       Status
     49   );
     50 
     51 //
     52 // Prototype for EFI USB I/O protocol
     53 //
     54 typedef
     55 EFI_STATUS
     56 (EFIAPI *EFI_USB_IO_CONTROL_TRANSFER) (
     57   IN EFI_USB_IO_PROTOCOL                        * This,
     58   IN EFI_USB_DEVICE_REQUEST                     * Request,
     59   IN EFI_USB_DATA_DIRECTION                     Direction,
     60   IN UINT32                                     Timeout,
     61   IN OUT VOID                                   *Data OPTIONAL,
     62   IN UINTN                                      DataLength  OPTIONAL,
     63   OUT UINT32                                    *Status
     64   );
     65 
     66 typedef
     67 EFI_STATUS
     68 (EFIAPI *EFI_USB_IO_BULK_TRANSFER) (
     69   IN EFI_USB_IO_PROTOCOL            * This,
     70   IN UINT8                          DeviceEndpoint,
     71   IN OUT VOID                       *Data,
     72   IN OUT UINTN                      *DataLength,
     73   IN UINTN                          Timeout,
     74   OUT UINT32                        *Status
     75   );
     76 
     77 typedef
     78 EFI_STATUS
     79 (EFIAPI *EFI_USB_IO_ASYNC_INTERRUPT_TRANSFER) (
     80   IN EFI_USB_IO_PROTOCOL                                 * This,
     81   IN UINT8                                               DeviceEndpoint,
     82   IN BOOLEAN                                             IsNewTransfer,
     83   IN UINTN                                               PollingInterval    OPTIONAL,
     84   IN UINTN                                               DataLength         OPTIONAL,
     85   IN EFI_ASYNC_USB_TRANSFER_CALLBACK                     InterruptCallBack  OPTIONAL,
     86   IN VOID                                                *Context OPTIONAL
     87   );
     88 
     89 typedef
     90 EFI_STATUS
     91 (EFIAPI *EFI_USB_IO_SYNC_INTERRUPT_TRANSFER) (
     92   IN EFI_USB_IO_PROTOCOL            * This,
     93   IN     UINT8                      DeviceEndpoint,
     94   IN OUT VOID                       *Data,
     95   IN OUT UINTN                      *DataLength,
     96   IN     UINTN                      Timeout,
     97   OUT    UINT32                     *Status
     98   );
     99 
    100 typedef
    101 EFI_STATUS
    102 (EFIAPI *EFI_USB_IO_ISOCHRONOUS_TRANSFER) (
    103   IN EFI_USB_IO_PROTOCOL            * This,
    104   IN     UINT8                      DeviceEndpoint,
    105   IN OUT VOID                       *Data,
    106   IN     UINTN                      DataLength,
    107   OUT    UINT32                     *Status
    108   );
    109 
    110 typedef
    111 EFI_STATUS
    112 (EFIAPI *EFI_USB_IO_ASYNC_ISOCHRONOUS_TRANSFER) (
    113   IN EFI_USB_IO_PROTOCOL              * This,
    114   IN UINT8                            DeviceEndpoint,
    115   IN OUT VOID                         *Data,
    116   IN     UINTN                        DataLength,
    117   IN EFI_ASYNC_USB_TRANSFER_CALLBACK  IsochronousCallBack,
    118   IN VOID                             *Context OPTIONAL
    119   );
    120 
    121 typedef
    122 EFI_STATUS
    123 (EFIAPI *EFI_USB_IO_PORT_RESET) (
    124   IN EFI_USB_IO_PROTOCOL    * This
    125   );
    126 
    127 typedef
    128 EFI_STATUS
    129 (EFIAPI *EFI_USB_IO_GET_DEVICE_DESCRIPTOR) (
    130   IN EFI_USB_IO_PROTOCOL            * This,
    131   OUT EFI_USB_DEVICE_DESCRIPTOR     * DeviceDescriptor
    132   );
    133 
    134 typedef
    135 EFI_STATUS
    136 (EFIAPI *EFI_USB_IO_GET_CONFIG_DESCRIPTOR) (
    137   IN EFI_USB_IO_PROTOCOL            * This,
    138   OUT EFI_USB_CONFIG_DESCRIPTOR     * ConfigurationDescriptor
    139   );
    140 
    141 typedef
    142 EFI_STATUS
    143 (EFIAPI *EFI_USB_IO_GET_INTERFACE_DESCRIPTOR) (
    144   IN EFI_USB_IO_PROTOCOL            * This,
    145   OUT EFI_USB_INTERFACE_DESCRIPTOR  * InterfaceDescriptor
    146   );
    147 
    148 typedef
    149 EFI_STATUS
    150 (EFIAPI *EFI_USB_IO_GET_ENDPOINT_DESCRIPTOR) (
    151   IN EFI_USB_IO_PROTOCOL            * This,
    152   IN  UINT8                         EndpointIndex,
    153   OUT EFI_USB_ENDPOINT_DESCRIPTOR   * EndpointDescriptor
    154   );
    155 
    156 typedef
    157 EFI_STATUS
    158 (EFIAPI *EFI_USB_IO_GET_STRING_DESCRIPTOR) (
    159   IN EFI_USB_IO_PROTOCOL            * This,
    160   IN  UINT16                        LangID,
    161   IN  UINT8                         StringID,
    162   OUT CHAR16                        **String
    163   );
    164 
    165 typedef
    166 EFI_STATUS
    167 (EFIAPI *EFI_USB_IO_GET_SUPPORTED_LANGUAGE) (
    168   IN EFI_USB_IO_PROTOCOL            * This,
    169   OUT UINT16                        **LangIDTable,
    170   OUT UINT16                        *TableSize
    171   );
    172 
    173 //
    174 //  Protocol Interface Structure
    175 //
    176 struct _EFI_USB_IO_PROTOCOL {
    177   //
    178   // IO transfer
    179   //
    180   EFI_USB_IO_CONTROL_TRANSFER           UsbControlTransfer;
    181   EFI_USB_IO_BULK_TRANSFER              UsbBulkTransfer;
    182   EFI_USB_IO_ASYNC_INTERRUPT_TRANSFER   UsbAsyncInterruptTransfer;
    183   EFI_USB_IO_SYNC_INTERRUPT_TRANSFER    UsbSyncInterruptTransfer;
    184   EFI_USB_IO_ISOCHRONOUS_TRANSFER       UsbIsochronousTransfer;
    185   EFI_USB_IO_ASYNC_ISOCHRONOUS_TRANSFER UsbAsyncIsochronousTransfer;
    186 
    187   //
    188   // Common device request
    189   //
    190   EFI_USB_IO_GET_DEVICE_DESCRIPTOR      UsbGetDeviceDescriptor;
    191   EFI_USB_IO_GET_CONFIG_DESCRIPTOR      UsbGetConfigDescriptor;
    192   EFI_USB_IO_GET_INTERFACE_DESCRIPTOR   UsbGetInterfaceDescriptor;
    193   EFI_USB_IO_GET_ENDPOINT_DESCRIPTOR    UsbGetEndpointDescriptor;
    194   EFI_USB_IO_GET_STRING_DESCRIPTOR      UsbGetStringDescriptor;
    195   EFI_USB_IO_GET_SUPPORTED_LANGUAGE     UsbGetSupportedLanguages;
    196 
    197   //
    198   // Reset controller's parent port
    199   //
    200   EFI_USB_IO_PORT_RESET                 UsbPortReset;
    201 };
    202 
    203 extern EFI_GUID gEfiUsbIoProtocolGuid;
    204 
    205 #endif
    206