iPXE
Data Structures | Defines | Typedefs | Enumerations | Functions
Usb.h File Reference

Support for USB 2.0 standard. More...

Go to the source code of this file.

Data Structures

struct  USB_DEVICE_REQUEST
 Format of Setup Data for USB Device Requests USB 2.0 spec, Section 9.3. More...
struct  USB_DEVICE_DESCRIPTOR
 Standard Device Descriptor USB 2.0 spec, Section 9.6.1. More...
struct  USB_CONFIG_DESCRIPTOR
 Standard Configuration Descriptor USB 2.0 spec, Section 9.6.3. More...
struct  USB_INTERFACE_DESCRIPTOR
 Standard Interface Descriptor USB 2.0 spec, Section 9.6.5. More...
struct  USB_ENDPOINT_DESCRIPTOR
 Standard Endpoint Descriptor USB 2.0 spec, Section 9.6.6. More...
struct  EFI_USB_STRING_DESCRIPTOR
 UNICODE String Descriptor USB 2.0 spec, Section 9.6.7. More...
struct  hid_class_descriptor
 Descriptor header for Report/Physical Descriptors HID 1.1, section 6.2.1. More...
struct  hid_descriptor
 The HID descriptor identifies the length and type of subordinate descriptors for a device. More...

Defines

#define USB_MASS_STORE_CLASS   0x08
#define USB_MASS_STORE_RBC   0x01
 Reduced Block Commands.
#define USB_MASS_STORE_8020I   0x02
 SFF-8020i, typically a CD/DVD device.
#define USB_MASS_STORE_QIC   0x03
 Typically a tape device.
#define USB_MASS_STORE_UFI   0x04
 Typically a floppy disk driver device.
#define USB_MASS_STORE_8070I   0x05
 SFF-8070i, typically a floppy disk driver device.
#define USB_MASS_STORE_SCSI   0x06
 SCSI transparent command set.
#define USB_MASS_STORE_CBI0   0x00
 CBI protocol with command completion interrupt.
#define USB_MASS_STORE_CBI1   0x01
 CBI protocol without command completion interrupt.
#define USB_MASS_STORE_BOT   0x50
 Bulk-Only Transport.
#define USB_DEV_GET_STATUS   0x00
#define USB_DEV_GET_STATUS_REQ_TYPE_D   0x80
#define USB_DEV_GET_STATUS_REQ_TYPE_I   0x81
#define USB_DEV_GET_STATUS_REQ_TYPE_E   0x82
#define USB_DEV_CLEAR_FEATURE   0x01
#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_D   0x00
#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_I   0x01
#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_E   0x02
#define USB_DEV_SET_FEATURE   0x03
#define USB_DEV_SET_FEATURE_REQ_TYPE_D   0x00
#define USB_DEV_SET_FEATURE_REQ_TYPE_I   0x01
#define USB_DEV_SET_FEATURE_REQ_TYPE_E   0x02
#define USB_DEV_SET_ADDRESS   0x05
#define USB_DEV_SET_ADDRESS_REQ_TYPE   0x00
#define USB_DEV_GET_DESCRIPTOR   0x06
#define USB_DEV_GET_DESCRIPTOR_REQ_TYPE   0x80
#define USB_DEV_SET_DESCRIPTOR   0x07
#define USB_DEV_SET_DESCRIPTOR_REQ_TYPE   0x00
#define USB_DEV_GET_CONFIGURATION   0x08
#define USB_DEV_GET_CONFIGURATION_REQ_TYPE   0x80
#define USB_DEV_SET_CONFIGURATION   0x09
#define USB_DEV_SET_CONFIGURATION_REQ_TYPE   0x00
#define USB_DEV_GET_INTERFACE   0x0A
#define USB_DEV_GET_INTERFACE_REQ_TYPE   0x81
#define USB_DEV_SET_INTERFACE   0x0B
#define USB_DEV_SET_INTERFACE_REQ_TYPE   0x01
#define USB_DEV_SYNCH_FRAME   0x0C
#define USB_DEV_SYNCH_FRAME_REQ_TYPE   0x82
#define USB_HID_GET_DESCRIPTOR_REQ_TYPE   0x81
#define USB_HID_CLASS_GET_REQ_TYPE   0xa1
#define USB_HID_CLASS_SET_REQ_TYPE   0x21
#define HID_ITEM_FORMAT_SHORT   0
#define HID_ITEM_FORMAT_LONG   1
#define HID_ITEM_TAG_LONG   15
#define HID_ITEM_TYPE_MAIN   0
#define HID_ITEM_TYPE_GLOBAL   1
#define HID_ITEM_TYPE_LOCAL   2
#define HID_ITEM_TYPE_RESERVED   3
#define HID_MAIN_ITEM_TAG_INPUT   8
#define HID_MAIN_ITEM_TAG_OUTPUT   9
#define HID_MAIN_ITEM_TAG_FEATURE   11
#define HID_MAIN_ITEM_TAG_BEGIN_COLLECTION   10
#define HID_MAIN_ITEM_TAG_END_COLLECTION   12
#define HID_MAIN_ITEM_CONSTANT   0x001
#define HID_MAIN_ITEM_VARIABLE   0x002
#define HID_MAIN_ITEM_RELATIVE   0x004
#define HID_MAIN_ITEM_WRAP   0x008
#define HID_MAIN_ITEM_NONLINEAR   0x010
#define HID_MAIN_ITEM_NO_PREFERRED   0x020
#define HID_MAIN_ITEM_NULL_STATE   0x040
#define HID_MAIN_ITEM_VOLATILE   0x080
#define HID_MAIN_ITEM_BUFFERED_BYTE   0x100
#define HID_COLLECTION_PHYSICAL   0
#define HID_COLLECTION_APPLICATION   1
#define HID_COLLECTION_LOGICAL   2
#define HID_GLOBAL_ITEM_TAG_USAGE_PAGE   0
#define HID_GLOBAL_ITEM_TAG_LOGICAL_MINIMUM   1
#define HID_GLOBAL_ITEM_TAG_LOGICAL_MAXIMUM   2
#define HID_GLOBAL_ITEM_TAG_PHYSICAL_MINIMUM   3
#define HID_GLOBAL_ITEM_TAG_PHYSICAL_MAXIMUM   4
#define HID_GLOBAL_ITEM_TAG_UNIT_EXPONENT   5
#define HID_GLOBAL_ITEM_TAG_UNIT   6
#define HID_GLOBAL_ITEM_TAG_REPORT_SIZE   7
#define HID_GLOBAL_ITEM_TAG_REPORT_ID   8
#define HID_GLOBAL_ITEM_TAG_REPORT_COUNT   9
#define HID_GLOBAL_ITEM_TAG_PUSH   10
#define HID_GLOBAL_ITEM_TAG_POP   11
#define HID_LOCAL_ITEM_TAG_USAGE   0
#define HID_LOCAL_ITEM_TAG_USAGE_MINIMUM   1
#define HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM   2
#define HID_LOCAL_ITEM_TAG_DESIGNATOR_INDEX   3
#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MINIMUM   4
#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MAXIMUM   5
#define HID_LOCAL_ITEM_TAG_STRING_INDEX   7
#define HID_LOCAL_ITEM_TAG_STRING_MINIMUM   8
#define HID_LOCAL_ITEM_TAG_STRING_MAXIMUM   9
#define HID_LOCAL_ITEM_TAG_DELIMITER   10
#define HID_INPUT_REPORT   1
#define HID_OUTPUT_REPORT   2
#define HID_FEATURE_REPORT   3
#define EFI_USB_GET_REPORT_REQUEST   0x01
#define EFI_USB_GET_IDLE_REQUEST   0x02
#define EFI_USB_GET_PROTOCOL_REQUEST   0x03
#define EFI_USB_SET_REPORT_REQUEST   0x09
#define EFI_USB_SET_IDLE_REQUEST   0x0a
#define EFI_USB_SET_PROTOCOL_REQUEST   0x0b

Typedefs

typedef struct hid_class_descriptor EFI_USB_HID_CLASS_DESCRIPTOR
 Descriptor header for Report/Physical Descriptors HID 1.1, section 6.2.1.
typedef struct hid_descriptor EFI_USB_HID_DESCRIPTOR
 The HID descriptor identifies the length and type of subordinate descriptors for a device.

Enumerations

enum  USB_TYPES_DEFINITION {
  USB_REQ_TYPE_STANDARD = (0x00 << 5), USB_REQ_TYPE_CLASS = (0x01 << 5), USB_REQ_TYPE_VENDOR = (0x02 << 5), USB_REQ_GET_STATUS = 0x00,
  USB_REQ_CLEAR_FEATURE = 0x01, USB_REQ_SET_FEATURE = 0x03, USB_REQ_SET_ADDRESS = 0x05, USB_REQ_GET_DESCRIPTOR = 0x06,
  USB_REQ_SET_DESCRIPTOR = 0x07, USB_REQ_GET_CONFIG = 0x08, USB_REQ_SET_CONFIG = 0x09, USB_REQ_GET_INTERFACE = 0x0A,
  USB_REQ_SET_INTERFACE = 0x0B, USB_REQ_SYNCH_FRAME = 0x0C, USB_TARGET_DEVICE = 0, USB_TARGET_INTERFACE = 0x01,
  USB_TARGET_ENDPOINT = 0x02, USB_TARGET_OTHER = 0x03, USB_DESC_TYPE_DEVICE = 0x01, USB_DESC_TYPE_CONFIG = 0x02,
  USB_DESC_TYPE_STRING = 0x03, USB_DESC_TYPE_INTERFACE = 0x04, USB_DESC_TYPE_ENDPOINT = 0x05, USB_DESC_TYPE_HID = 0x21,
  USB_DESC_TYPE_REPORT = 0x22, USB_FEATURE_ENDPOINT_HALT = 0, USB_ENDPOINT_CONTROL = 0x00, USB_ENDPOINT_ISO = 0x01,
  USB_ENDPOINT_BULK = 0x02, USB_ENDPOINT_INTERRUPT = 0x03, USB_ENDPOINT_TYPE_MASK = 0x03, USB_ENDPOINT_DIR_IN = 0x80,
  EFI_USB_INTERRUPT_DELAY = 2000000
}

Functions

 FILE_LICENCE (BSD3)

Detailed Description

Support for USB 2.0 standard.

Copyright (c) 2006 - 2014, 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.

Definition in file Usb.h.


Define Documentation

#define USB_MASS_STORE_CLASS   0x08

Definition at line 27 of file Usb.h.

#define USB_MASS_STORE_RBC   0x01

Reduced Block Commands.

Definition at line 32 of file Usb.h.

#define USB_MASS_STORE_8020I   0x02

SFF-8020i, typically a CD/DVD device.

Definition at line 33 of file Usb.h.

#define USB_MASS_STORE_QIC   0x03

Typically a tape device.

Definition at line 34 of file Usb.h.

#define USB_MASS_STORE_UFI   0x04

Typically a floppy disk driver device.

Definition at line 35 of file Usb.h.

#define USB_MASS_STORE_8070I   0x05

SFF-8070i, typically a floppy disk driver device.

Definition at line 36 of file Usb.h.

#define USB_MASS_STORE_SCSI   0x06

SCSI transparent command set.

Definition at line 37 of file Usb.h.

#define USB_MASS_STORE_CBI0   0x00

CBI protocol with command completion interrupt.

Definition at line 42 of file Usb.h.

#define USB_MASS_STORE_CBI1   0x01

CBI protocol without command completion interrupt.

Definition at line 43 of file Usb.h.

#define USB_MASS_STORE_BOT   0x50

Bulk-Only Transport.

Definition at line 44 of file Usb.h.

#define USB_DEV_GET_STATUS   0x00

Definition at line 50 of file Usb.h.

#define USB_DEV_GET_STATUS_REQ_TYPE_D   0x80

Definition at line 51 of file Usb.h.

#define USB_DEV_GET_STATUS_REQ_TYPE_I   0x81

Definition at line 52 of file Usb.h.

#define USB_DEV_GET_STATUS_REQ_TYPE_E   0x82

Definition at line 53 of file Usb.h.

#define USB_DEV_CLEAR_FEATURE   0x01

Definition at line 55 of file Usb.h.

Definition at line 56 of file Usb.h.

Definition at line 57 of file Usb.h.

Definition at line 58 of file Usb.h.

#define USB_DEV_SET_FEATURE   0x03

Definition at line 60 of file Usb.h.

#define USB_DEV_SET_FEATURE_REQ_TYPE_D   0x00

Definition at line 61 of file Usb.h.

#define USB_DEV_SET_FEATURE_REQ_TYPE_I   0x01

Definition at line 62 of file Usb.h.

#define USB_DEV_SET_FEATURE_REQ_TYPE_E   0x02

Definition at line 63 of file Usb.h.

#define USB_DEV_SET_ADDRESS   0x05

Definition at line 65 of file Usb.h.

#define USB_DEV_SET_ADDRESS_REQ_TYPE   0x00

Definition at line 66 of file Usb.h.

#define USB_DEV_GET_DESCRIPTOR   0x06

Definition at line 68 of file Usb.h.

Definition at line 69 of file Usb.h.

#define USB_DEV_SET_DESCRIPTOR   0x07

Definition at line 71 of file Usb.h.

Definition at line 72 of file Usb.h.

#define USB_DEV_GET_CONFIGURATION   0x08

Definition at line 74 of file Usb.h.

Definition at line 75 of file Usb.h.

#define USB_DEV_SET_CONFIGURATION   0x09

Definition at line 77 of file Usb.h.

Definition at line 78 of file Usb.h.

#define USB_DEV_GET_INTERFACE   0x0A

Definition at line 80 of file Usb.h.

#define USB_DEV_GET_INTERFACE_REQ_TYPE   0x81

Definition at line 81 of file Usb.h.

#define USB_DEV_SET_INTERFACE   0x0B

Definition at line 83 of file Usb.h.

#define USB_DEV_SET_INTERFACE_REQ_TYPE   0x01

Definition at line 84 of file Usb.h.

#define USB_DEV_SYNCH_FRAME   0x0C

Definition at line 86 of file Usb.h.

#define USB_DEV_SYNCH_FRAME_REQ_TYPE   0x82

Definition at line 87 of file Usb.h.

Definition at line 259 of file Usb.h.

#define USB_HID_CLASS_GET_REQ_TYPE   0xa1

Definition at line 264 of file Usb.h.

#define USB_HID_CLASS_SET_REQ_TYPE   0x21

Definition at line 265 of file Usb.h.

#define HID_ITEM_FORMAT_SHORT   0

Definition at line 270 of file Usb.h.

#define HID_ITEM_FORMAT_LONG   1

Definition at line 271 of file Usb.h.

#define HID_ITEM_TAG_LONG   15

Definition at line 276 of file Usb.h.

#define HID_ITEM_TYPE_MAIN   0

Definition at line 281 of file Usb.h.

#define HID_ITEM_TYPE_GLOBAL   1

Definition at line 282 of file Usb.h.

#define HID_ITEM_TYPE_LOCAL   2

Definition at line 283 of file Usb.h.

#define HID_ITEM_TYPE_RESERVED   3

Definition at line 284 of file Usb.h.

#define HID_MAIN_ITEM_TAG_INPUT   8

Definition at line 289 of file Usb.h.

#define HID_MAIN_ITEM_TAG_OUTPUT   9

Definition at line 290 of file Usb.h.

#define HID_MAIN_ITEM_TAG_FEATURE   11

Definition at line 291 of file Usb.h.

Definition at line 292 of file Usb.h.

Definition at line 293 of file Usb.h.

#define HID_MAIN_ITEM_CONSTANT   0x001

Definition at line 298 of file Usb.h.

#define HID_MAIN_ITEM_VARIABLE   0x002

Definition at line 299 of file Usb.h.

#define HID_MAIN_ITEM_RELATIVE   0x004

Definition at line 300 of file Usb.h.

#define HID_MAIN_ITEM_WRAP   0x008

Definition at line 301 of file Usb.h.

#define HID_MAIN_ITEM_NONLINEAR   0x010

Definition at line 302 of file Usb.h.

#define HID_MAIN_ITEM_NO_PREFERRED   0x020

Definition at line 303 of file Usb.h.

#define HID_MAIN_ITEM_NULL_STATE   0x040

Definition at line 304 of file Usb.h.

#define HID_MAIN_ITEM_VOLATILE   0x080

Definition at line 305 of file Usb.h.

#define HID_MAIN_ITEM_BUFFERED_BYTE   0x100

Definition at line 306 of file Usb.h.

#define HID_COLLECTION_PHYSICAL   0

Definition at line 311 of file Usb.h.

Definition at line 312 of file Usb.h.

#define HID_COLLECTION_LOGICAL   2

Definition at line 313 of file Usb.h.

Definition at line 318 of file Usb.h.

Definition at line 319 of file Usb.h.

Definition at line 320 of file Usb.h.

Definition at line 321 of file Usb.h.

Definition at line 322 of file Usb.h.

Definition at line 323 of file Usb.h.

#define HID_GLOBAL_ITEM_TAG_UNIT   6

Definition at line 324 of file Usb.h.

Definition at line 325 of file Usb.h.

Definition at line 326 of file Usb.h.

Definition at line 327 of file Usb.h.

#define HID_GLOBAL_ITEM_TAG_PUSH   10

Definition at line 328 of file Usb.h.

#define HID_GLOBAL_ITEM_TAG_POP   11

Definition at line 329 of file Usb.h.

#define HID_LOCAL_ITEM_TAG_USAGE   0

Definition at line 334 of file Usb.h.

Definition at line 335 of file Usb.h.

Definition at line 336 of file Usb.h.

Definition at line 337 of file Usb.h.

Definition at line 338 of file Usb.h.

Definition at line 339 of file Usb.h.

Definition at line 340 of file Usb.h.

Definition at line 341 of file Usb.h.

Definition at line 342 of file Usb.h.

Definition at line 343 of file Usb.h.

#define HID_INPUT_REPORT   1

Definition at line 348 of file Usb.h.

#define HID_OUTPUT_REPORT   2

Definition at line 349 of file Usb.h.

#define HID_FEATURE_REPORT   3

Definition at line 350 of file Usb.h.

#define EFI_USB_GET_REPORT_REQUEST   0x01

Definition at line 355 of file Usb.h.

#define EFI_USB_GET_IDLE_REQUEST   0x02

Definition at line 356 of file Usb.h.

#define EFI_USB_GET_PROTOCOL_REQUEST   0x03

Definition at line 357 of file Usb.h.

#define EFI_USB_SET_REPORT_REQUEST   0x09

Definition at line 358 of file Usb.h.

#define EFI_USB_SET_IDLE_REQUEST   0x0a

Definition at line 359 of file Usb.h.

#define EFI_USB_SET_PROTOCOL_REQUEST   0x0b

Definition at line 360 of file Usb.h.


Typedef Documentation

Descriptor header for Report/Physical Descriptors HID 1.1, section 6.2.1.

The HID descriptor identifies the length and type of subordinate descriptors for a device.

HID 1.1, section 6.2.1


Enumeration Type Documentation

Enumerator:
USB_REQ_TYPE_STANDARD 
USB_REQ_TYPE_CLASS 
USB_REQ_TYPE_VENDOR 
USB_REQ_GET_STATUS 
USB_REQ_CLEAR_FEATURE 
USB_REQ_SET_FEATURE 
USB_REQ_SET_ADDRESS 
USB_REQ_GET_DESCRIPTOR 
USB_REQ_SET_DESCRIPTOR 
USB_REQ_GET_CONFIG 
USB_REQ_SET_CONFIG 
USB_REQ_GET_INTERFACE 
USB_REQ_SET_INTERFACE 
USB_REQ_SYNCH_FRAME 
USB_TARGET_DEVICE 
USB_TARGET_INTERFACE 
USB_TARGET_ENDPOINT 
USB_TARGET_OTHER 
USB_DESC_TYPE_DEVICE 
USB_DESC_TYPE_CONFIG 
USB_DESC_TYPE_STRING 
USB_DESC_TYPE_INTERFACE 
USB_DESC_TYPE_ENDPOINT 
USB_DESC_TYPE_HID 
USB_DESC_TYPE_REPORT 
USB_FEATURE_ENDPOINT_HALT 
USB_ENDPOINT_CONTROL 
USB_ENDPOINT_ISO 
USB_ENDPOINT_BULK 
USB_ENDPOINT_INTERRUPT 
USB_ENDPOINT_TYPE_MASK 
USB_ENDPOINT_DIR_IN 
EFI_USB_INTERRUPT_DELAY 

Definition at line 185 of file Usb.h.

             {
  //
  // USB request type
  //
  USB_REQ_TYPE_STANDARD   = (0x00 << 5),
  USB_REQ_TYPE_CLASS      = (0x01 << 5),
  USB_REQ_TYPE_VENDOR     = (0x02 << 5),

  //
  // Standard control transfer request type, or the value
  // to fill in EFI_USB_DEVICE_REQUEST.Request
  //
  USB_REQ_GET_STATUS      = 0x00,
  USB_REQ_CLEAR_FEATURE   = 0x01,
  USB_REQ_SET_FEATURE     = 0x03,
  USB_REQ_SET_ADDRESS     = 0x05,
  USB_REQ_GET_DESCRIPTOR  = 0x06,
  USB_REQ_SET_DESCRIPTOR  = 0x07,
  USB_REQ_GET_CONFIG      = 0x08,
  USB_REQ_SET_CONFIG      = 0x09,
  USB_REQ_GET_INTERFACE   = 0x0A,
  USB_REQ_SET_INTERFACE   = 0x0B,
  USB_REQ_SYNCH_FRAME     = 0x0C,

  //
  // Usb control transfer target
  //
  USB_TARGET_DEVICE       = 0,
  USB_TARGET_INTERFACE    = 0x01,
  USB_TARGET_ENDPOINT     = 0x02,
  USB_TARGET_OTHER        = 0x03,

  //
  // USB Descriptor types
  //
  USB_DESC_TYPE_DEVICE    = 0x01,
  USB_DESC_TYPE_CONFIG    = 0x02,
  USB_DESC_TYPE_STRING    = 0x03,
  USB_DESC_TYPE_INTERFACE = 0x04,
  USB_DESC_TYPE_ENDPOINT  = 0x05,
  USB_DESC_TYPE_HID       = 0x21,
  USB_DESC_TYPE_REPORT    = 0x22,

  //
  // Features to be cleared by CLEAR_FEATURE requests
  //
  USB_FEATURE_ENDPOINT_HALT = 0,

  //
  // USB endpoint types: 00: control, 01: isochronous, 10: bulk, 11: interrupt
  //
  USB_ENDPOINT_CONTROL    = 0x00,
  USB_ENDPOINT_ISO        = 0x01,
  USB_ENDPOINT_BULK       = 0x02,
  USB_ENDPOINT_INTERRUPT  = 0x03,

  USB_ENDPOINT_TYPE_MASK  = 0x03,
  USB_ENDPOINT_DIR_IN     = 0x80,

  //
  //Use 200 ms to increase the error handling response time
  //
  EFI_USB_INTERRUPT_DELAY = 2000000
} USB_TYPES_DEFINITION;

Function Documentation

FILE_LICENCE ( BSD3  )