Import Usb/UsbBusDxe and Usb/UsbMassStorageDxe into MdeModulePkg.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3193 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
102
MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.h
Normal file
102
MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.h
Normal file
@@ -0,0 +1,102 @@
|
||||
/** @file
|
||||
|
||||
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
|
||||
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:
|
||||
|
||||
UsbMassBot.h
|
||||
|
||||
Abstract:
|
||||
|
||||
Defination for the USB mass storage Bulk-Only Transport protocol.
|
||||
This implementation is based on the "Universal Serial Bus Mass
|
||||
Storage Class Bulk-Only Transport" Revision 1.0, September 31, 1999.
|
||||
|
||||
Revision History
|
||||
|
||||
|
||||
**/
|
||||
|
||||
#ifndef _EFI_USBMASS_BOT_H_
|
||||
#define _EFI_USBMASS_BOT_H_
|
||||
|
||||
enum {
|
||||
//
|
||||
// Usb Bulk-Only class specfic request
|
||||
//
|
||||
USB_BOT_RESET_REQUEST = 0xFF, // Bulk-Only Mass Storage Reset
|
||||
USB_BOT_GETLUN_REQUEST = 0xFE, // Get Max Lun
|
||||
USB_BOT_CBW_SIGNATURE = 0x43425355, // dCBWSignature, tag the packet as CBW
|
||||
USB_BOT_CSW_SIGNATURE = 0x53425355, // dCSWSignature, tag the packet as CSW
|
||||
USB_BOT_MAX_LUN = 0x0F, // Lun number is from 0 to 15
|
||||
USB_BOT_MAX_CMDLEN = 16, // Maxium number of command from command set
|
||||
|
||||
//
|
||||
// Usb BOT command block status values
|
||||
//
|
||||
USB_BOT_COMMAND_OK = 0x00, // Command passed, good status
|
||||
USB_BOT_COMMAND_FAILED = 0x01, // Command failed
|
||||
USB_BOT_COMMAND_ERROR = 0x02, // Phase error, need to reset the device
|
||||
|
||||
//
|
||||
// Usb Bot retry times
|
||||
//
|
||||
USB_BOT_GET_STATUS_RETRY = 3,
|
||||
|
||||
//
|
||||
// Usb Bot stall time
|
||||
//
|
||||
USB_BOT_RESET_STALL = 100 * USB_MASS_STALL_1_MS,
|
||||
|
||||
//
|
||||
// Usb Bot transfer timeout
|
||||
//
|
||||
USB_BOT_CBW_TIMEOUT = 1 * USB_MASS_STALL_1_S,
|
||||
USB_BOT_CSW_TIMEOUT = 1 * USB_MASS_STALL_1_S,
|
||||
USB_BOT_RESET_TIMEOUT = 3 * USB_MASS_STALL_1_S,
|
||||
};
|
||||
|
||||
//
|
||||
// The CBW (Command Block Wrapper) and CSW (Command Status Wrapper)
|
||||
// structures used by the Usb BOT protocol.
|
||||
//
|
||||
#pragma pack(1)
|
||||
typedef struct {
|
||||
UINT32 Signature;
|
||||
UINT32 Tag;
|
||||
UINT32 DataLen; // Length of data between CBW and CSW
|
||||
UINT8 Flag; // Bit 7, 0 ~ Data-Out, 1 ~ Data-In
|
||||
UINT8 Lun; // Lun number. Bits 0~3 are used
|
||||
UINT8 CmdLen; // Length of the command. Bits 0~4 are used
|
||||
UINT8 CmdBlock[USB_BOT_MAX_CMDLEN];
|
||||
} USB_BOT_CBW;
|
||||
|
||||
typedef struct {
|
||||
UINT32 Signature;
|
||||
UINT32 Tag;
|
||||
UINT32 DataResidue;
|
||||
UINT8 CmdStatus;
|
||||
} USB_BOT_CSW;
|
||||
#pragma pack()
|
||||
|
||||
//
|
||||
// Put Interface at the first field is to make it easy to get by Context, which
|
||||
// could be BOT/CBI Protocol instance
|
||||
//
|
||||
typedef struct {
|
||||
EFI_USB_INTERFACE_DESCRIPTOR Interface;
|
||||
EFI_USB_ENDPOINT_DESCRIPTOR *BulkInEndpoint;
|
||||
EFI_USB_ENDPOINT_DESCRIPTOR *BulkOutEndpoint;
|
||||
UINT32 CbwTag;
|
||||
EFI_USB_IO_PROTOCOL *UsbIo;
|
||||
} USB_BOT_PROTOCOL;
|
||||
|
||||
extern USB_MASS_TRANSPORT mUsbBotTransport;
|
||||
#endif
|
Reference in New Issue
Block a user