diff options
author | rsun3 <rsun3@6f19259b-4bc3-4df7-8a09-765794883524> | 2010-01-19 06:42:21 +0000 |
---|---|---|
committer | rsun3 <rsun3@6f19259b-4bc3-4df7-8a09-765794883524> | 2010-01-19 06:42:21 +0000 |
commit | 1ccdbf2a3e61fe9494fcd39432107ba0eb74f584 (patch) | |
tree | f8f2bcf407258369b67023955eb4374ff1a8f901 /MdeModulePkg/Bus/Usb/UsbMassStorageDxe | |
parent | cd730ec08d8fc5afc557ae7f39c948998cd96bbb (diff) | |
download | edk2-platforms-1ccdbf2a3e61fe9494fcd39432107ba0eb74f584.tar.xz |
Improve coding style in MdeModulePkg.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9793 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Bus/Usb/UsbMassStorageDxe')
-rw-r--r-- | MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMass.h | 60 | ||||
-rw-r--r-- | MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c | 12 | ||||
-rw-r--r-- | MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.h | 150 | ||||
-rw-r--r-- | MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.h | 70 | ||||
-rw-r--r-- | MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassCbi.h | 35 |
5 files changed, 158 insertions, 169 deletions
diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMass.h b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMass.h index 33b2381621..b89014a812 100644 --- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMass.h +++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMass.h @@ -2,7 +2,7 @@ Definition of USB Mass Storage Class and its value, USB Mass Transport Protocol,
and other common definitions.
-Copyright (c) 2007 - 2008, Intel Corporation
+Copyright (c) 2007 - 2010, 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
@@ -38,36 +38,34 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #define USB_IS_INTERRUPT_ENDPOINT(Attribute) (((Attribute) & (BIT0 | BIT1)) == USB_ENDPOINT_INTERRUPT)
#define USB_IS_ERROR(Result, Error) (((Result) & (Error)) != 0)
-typedef enum {
- //
- // Usb mass storage class code
- //
- USB_MASS_STORE_CLASS = 0x08,
-
- //
- // Usb mass storage subclass code, specify the command set used.
- //
- USB_MASS_STORE_RBC = 0x01, ///< Reduced Block Commands
- USB_MASS_STORE_8020I = 0x02, ///< SFF-8020i, typically a CD/DVD device
- USB_MASS_STORE_QIC = 0x03, ///< Typically a tape device
- USB_MASS_STORE_UFI = 0x04, ///< Typically a floppy disk driver device
- USB_MASS_STORE_8070I = 0x05, ///< SFF-8070i, typically a floppy disk driver device.
- USB_MASS_STORE_SCSI = 0x06, ///< SCSI transparent command set
-
- //
- // Usb mass storage protocol code, specify the transport protocol
- //
- USB_MASS_STORE_CBI0 = 0x00, ///< CBI protocol with command completion interrupt
- USB_MASS_STORE_CBI1 = 0x01, ///< CBI protocol without command completion interrupt
- USB_MASS_STORE_BOT = 0x50, ///< Bulk-Only Transport
-
- USB_MASS_1_MILLISECOND = 1000,
- USB_MASS_1_SECOND = 1000 * USB_MASS_1_MILLISECOND,
-
- USB_MASS_CMD_SUCCESS = 0,
- USB_MASS_CMD_FAIL,
- USB_MASS_CMD_PERSISTENT
-} USB_MASS_DEV_CLASS_AND_VALUE;
+//
+// Usb mass storage class code
+//
+#define USB_MASS_STORE_CLASS 0x08
+
+//
+// Usb mass storage subclass code, specify the command set used.
+//
+#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
+
+//
+// Usb mass storage protocol code, specify the transport protocol
+//
+#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_MASS_1_MILLISECOND 1000
+#define USB_MASS_1_SECOND (1000 * USB_MASS_1_MILLISECOND)
+
+#define USB_MASS_CMD_SUCCESS 0
+#define USB_MASS_CMD_FAIL 1
+#define USB_MASS_CMD_PERSISTENT 2
/**
Initializes USB transport protocol.
diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c index cc6f2e8cee..1b200bb4ec 100644 --- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c +++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c @@ -2,7 +2,7 @@ Implementation of the command set of USB Mass Storage Specification
for Bootability, Revision 1.0.
-Copyright (c) 2007 - 2008, Intel Corporation
+Copyright (c) 2007 - 2010, 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
@@ -92,10 +92,10 @@ UsbBootRequestSense ( case USB_BOOT_SENSE_NOT_READY:
Status = EFI_DEVICE_ERROR;
- if (SenseData.ASC == USB_BOOT_ASC_NO_MEDIA) {
+ if (SenseData.Asc == USB_BOOT_ASC_NO_MEDIA) {
Media->MediaPresent = FALSE;
Status = EFI_NO_MEDIA;
- } else if (SenseData.ASC == USB_BOOT_ASC_NOT_READY) {
+ } else if (SenseData.Asc == USB_BOOT_ASC_NOT_READY) {
Status = EFI_NOT_READY;
}
break;
@@ -106,7 +106,7 @@ UsbBootRequestSense ( case USB_BOOT_SENSE_UNIT_ATTENTION:
Status = EFI_DEVICE_ERROR;
- if (SenseData.ASC == USB_BOOT_ASC_MEDIA_CHANGE) {
+ if (SenseData.Asc == USB_BOOT_ASC_MEDIA_CHANGE) {
//
// If MediaChange, reset ReadOnly and new MediaId
//
@@ -129,8 +129,8 @@ UsbBootRequestSense ( DEBUG ((EFI_D_INFO, "UsbBootRequestSense: (%r) with sense key %x/%x/%x\n",
Status,
USB_BOOT_SENSE_KEY (SenseData.SenseKey),
- SenseData.ASC,
- SenseData.ASCQ
+ SenseData.Asc,
+ SenseData.Ascq
));
return Status;
diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.h b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.h index cd66d825ef..91a21fc571 100644 --- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.h +++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.h @@ -2,7 +2,7 @@ Definition of the command set of USB Mass Storage Specification
for Bootability, Revision 1.0.
-Copyright (c) 2007 - 2008, Intel Corporation
+Copyright (c) 2007 - 2010, 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
@@ -18,79 +18,77 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include "UsbMass.h"
-typedef enum {
- //
- // The opcodes of various USB boot commands:
- // INQUIRY/REQUEST_SENSE are "No Timeout Commands" as specified
- // by Multi-Media Commands (MMC) set.
- // Others are "Group 1 Timeout Commands". That is,
- // they should be retried if driver is ready.
- //
- USB_BOOT_INQUIRY_OPCODE = 0x12,
- USB_BOOT_REQUEST_SENSE_OPCODE = 0x03,
- USB_BOOT_MODE_SENSE10_OPCODE = 0x5A,
- USB_BOOT_READ_CAPACITY_OPCODE = 0x25,
- USB_BOOT_TEST_UNIT_READY_OPCODE = 0x00,
- USB_BOOT_READ10_OPCODE = 0x28,
- USB_BOOT_WRITE10_OPCODE = 0x2A,
-
- USB_SCSI_MODE_SENSE6_OPCODE = 0x1A,
-
- //
- // The Sense Key part of the sense data. Sense data has three levels:
- // Sense key, Additional Sense Code and Additional Sense Code Qualifier
- //
- USB_BOOT_SENSE_NO_SENSE = 0x00, ///< No sense key
- USB_BOOT_SENSE_RECOVERED = 0x01, ///< Last command succeed with recovery actions
- USB_BOOT_SENSE_NOT_READY = 0x02, ///< Device not ready
- USB_BOOT_SNESE_MEDIUM_ERROR = 0X03, ///< Failed probably because flaw in the media
- USB_BOOT_SENSE_HARDWARE_ERROR = 0X04, ///< Non-recoverable hardware failure
- USB_BOOT_SENSE_ILLEGAL_REQUEST = 0X05, ///< Illegal parameters in the request
- USB_BOOT_SENSE_UNIT_ATTENTION = 0X06, ///< Removable medium may have been changed
- USB_BOOT_SENSE_DATA_PROTECT = 0X07, ///< Write protected
- USB_BOOT_SENSE_BLANK_CHECK = 0X08, ///< Blank/non-blank medium while reading/writing
- USB_BOOT_SENSE_VENDOR = 0X09, ///< Vendor specific sense key
- USB_BOOT_SENSE_ABORTED = 0X0B, ///< Command aborted by the device
- USB_BOOT_SENSE_VOLUME_OVERFLOW = 0x0D, ///< Partition overflow
- USB_BOOT_SENSE_MISCOMPARE = 0x0E, ///< Source data mis-match while verfying.
-
- USB_BOOT_ASC_NOT_READY = 0x04,
- USB_BOOT_ASC_NO_MEDIA = 0x3A,
- USB_BOOT_ASC_MEDIA_CHANGE = 0x28,
-
- //
- // Supported PDT codes, or Peripheral Device Type
- //
- USB_PDT_DIRECT_ACCESS = 0x00, ///< Direct access device
- USB_PDT_CDROM = 0x05, ///< CDROM
- USB_PDT_OPTICAL = 0x07, ///< Non-CD optical disks
- USB_PDT_SIMPLE_DIRECT = 0x0E, ///< Simplified direct access device
-
- //
- // Other parameters, Max carried size is 512B * 128 = 64KB
- //
- USB_BOOT_IO_BLOCKS = 128,
-
- //
- // Retry mass command times, set by experience
- //
- USB_BOOT_COMMAND_RETRY = 5,
- USB_BOOT_INIT_MEDIA_RETRY = 5,
-
- //
- // Wait for unit ready command, set by experience
- //
- USB_BOOT_RETRY_UNIT_READY_STALL = 500 * USB_MASS_1_MILLISECOND,
-
- //
- // Mass command timeout, refers to specification[USB20-9.2.6.1]
- //
- // USB2.0 Spec define the up-limit timeout 5s for all command. USB floppy,
- // USB CD-Rom and iPod devices are much slower than USB key when reponse
- // most of commands, So we set 5s as timeout here.
- //
- USB_BOOT_GENERAL_CMD_TIMEOUT = 5 * USB_MASS_1_SECOND
-}USB_BOOT_OPTCODE;
+//
+// The opcodes of various USB boot commands:
+// INQUIRY/REQUEST_SENSE are "No Timeout Commands" as specified
+// by Multi-Media Commands (MMC) set.
+// Others are "Group 1 Timeout Commands". That is,
+// they should be retried if driver is ready.
+//
+#define USB_BOOT_INQUIRY_OPCODE 0x12
+#define USB_BOOT_REQUEST_SENSE_OPCODE 0x03
+#define USB_BOOT_MODE_SENSE10_OPCODE 0x5A
+#define USB_BOOT_READ_CAPACITY_OPCODE 0x25
+#define USB_BOOT_TEST_UNIT_READY_OPCODE 0x00
+#define USB_BOOT_READ10_OPCODE 0x28
+#define USB_BOOT_WRITE10_OPCODE 0x2A
+
+#define USB_SCSI_MODE_SENSE6_OPCODE 0x1A
+
+//
+// The Sense Key part of the sense data. Sense data has three levels:
+// Sense key, Additional Sense Code and Additional Sense Code Qualifier
+//
+#define USB_BOOT_SENSE_NO_SENSE 0x00 ///< No sense key
+#define USB_BOOT_SENSE_RECOVERED 0x01 ///< Last command succeed with recovery actions
+#define USB_BOOT_SENSE_NOT_READY 0x02 ///< Device not ready
+#define USB_BOOT_SNESE_MEDIUM_ERROR 0X03 ///< Failed probably because flaw in the media
+#define USB_BOOT_SENSE_HARDWARE_ERROR 0X04 ///< Non-recoverable hardware failure
+#define USB_BOOT_SENSE_ILLEGAL_REQUEST 0X05 ///< Illegal parameters in the request
+#define USB_BOOT_SENSE_UNIT_ATTENTION 0X06 ///< Removable medium may have been changed
+#define USB_BOOT_SENSE_DATA_PROTECT 0X07 ///< Write protected
+#define USB_BOOT_SENSE_BLANK_CHECK 0X08 ///< Blank/non-blank medium while reading/writing
+#define USB_BOOT_SENSE_VENDOR 0X09 ///< Vendor specific sense key
+#define USB_BOOT_SENSE_ABORTED 0X0B ///< Command aborted by the device
+#define USB_BOOT_SENSE_VOLUME_OVERFLOW 0x0D ///< Partition overflow
+#define USB_BOOT_SENSE_MISCOMPARE 0x0E ///< Source data mis-match while verfying.
+
+#define USB_BOOT_ASC_NOT_READY 0x04
+#define USB_BOOT_ASC_NO_MEDIA 0x3A
+#define USB_BOOT_ASC_MEDIA_CHANGE 0x28
+
+//
+// Supported PDT codes, or Peripheral Device Type
+//
+#define USB_PDT_DIRECT_ACCESS 0x00 ///< Direct access device
+#define USB_PDT_CDROM 0x05 ///< CDROM
+#define USB_PDT_OPTICAL 0x07 ///< Non-CD optical disks
+#define USB_PDT_SIMPLE_DIRECT 0x0E ///< Simplified direct access device
+
+//
+// Other parameters, Max carried size is 512B * 128 = 64KB
+//
+#define USB_BOOT_IO_BLOCKS 128
+
+//
+// Retry mass command times, set by experience
+//
+#define USB_BOOT_COMMAND_RETRY 5
+#define USB_BOOT_INIT_MEDIA_RETRY 5
+
+//
+// Wait for unit ready command, set by experience
+//
+#define USB_BOOT_RETRY_UNIT_READY_STALL (500 * USB_MASS_1_MILLISECOND)
+
+//
+// Mass command timeout, refers to specification[USB20-9.2.6.1]
+//
+// USB2.0 Spec define the up-limit timeout 5s for all command. USB floppy,
+// USB CD-Rom and iPod devices are much slower than USB key when reponse
+// most of commands, So we set 5s as timeout here.
+//
+#define USB_BOOT_GENERAL_CMD_TIMEOUT (5 * USB_MASS_1_SECOND)
//
// The required commands are INQUIRY, READ CAPACITY, TEST UNIT READY,
@@ -193,8 +191,8 @@ typedef struct { UINT8 Infor[4];
UINT8 AddLen; ///< Additional Sense length, 10
UINT8 Reserved1[4];
- UINT8 ASC; ///< Additional Sense Code
- UINT8 ASCQ; ///< Additional Sense Code Qualifier
+ UINT8 Asc; ///< Additional Sense Code
+ UINT8 Ascq; ///< Additional Sense Code Qualifier
UINT8 Reserverd2[4];
} USB_BOOT_REQUEST_SENSE_DATA;
diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.h b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.h index 63d9fecd81..341adce9b8 100644 --- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.h +++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.h @@ -3,7 +3,7 @@ based on the "Universal Serial Bus Mass Storage Class Bulk-Only
Transport" Revision 1.0, September 31, 1999.
-Copyright (c) 2007 - 2008, Intel Corporation
+Copyright (c) 2007 - 2010, 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
@@ -21,41 +21,39 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. extern USB_MASS_TRANSPORT mUsbBotTransport;
-typedef 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 to get CSW, refers to specification[BOT10-5.3, it says 2 times]
- //
- USB_BOT_RECV_CSW_RETRY = 3,
-
- //
- // Usb Bot wait device reset complete, set by experience
- //
- USB_BOT_RESET_DEVICE_STALL = 100 * USB_MASS_1_MILLISECOND,
-
- //
- // Usb Bot transport timeout, set by experience
- //
- USB_BOT_SEND_CBW_TIMEOUT = 3 * USB_MASS_1_SECOND,
- USB_BOT_RECV_CSW_TIMEOUT = 3 * USB_MASS_1_SECOND,
- USB_BOT_RESET_DEVICE_TIMEOUT = 3 * USB_MASS_1_SECOND
-} USB_BOT_SUBCLASS;
+//
+// Usb Bulk-Only class specfic request
+//
+#define USB_BOT_RESET_REQUEST 0xFF ///< Bulk-Only Mass Storage Reset
+#define USB_BOT_GETLUN_REQUEST 0xFE ///< Get Max Lun
+#define USB_BOT_CBW_SIGNATURE 0x43425355 ///< dCBWSignature, tag the packet as CBW
+#define USB_BOT_CSW_SIGNATURE 0x53425355 ///< dCSWSignature, tag the packet as CSW
+#define USB_BOT_MAX_LUN 0x0F ///< Lun number is from 0 to 15
+#define USB_BOT_MAX_CMDLEN 16 ///< Maxium number of command from command set
+
+//
+// Usb BOT command block status values
+//
+#define USB_BOT_COMMAND_OK 0x00 ///< Command passed, good status
+#define USB_BOT_COMMAND_FAILED 0x01 ///< Command failed
+#define USB_BOT_COMMAND_ERROR 0x02 ///< Phase error, need to reset the device
+
+//
+// Usb Bot retry to get CSW, refers to specification[BOT10-5.3, it says 2 times]
+//
+#define USB_BOT_RECV_CSW_RETRY 3
+
+//
+// Usb Bot wait device reset complete, set by experience
+//
+#define USB_BOT_RESET_DEVICE_STALL (100 * USB_MASS_1_MILLISECOND)
+
+//
+// Usb Bot transport timeout, set by experience
+//
+#define USB_BOT_SEND_CBW_TIMEOUT (3 * USB_MASS_1_SECOND)
+#define USB_BOT_RECV_CSW_TIMEOUT (3 * USB_MASS_1_SECOND)
+#define USB_BOT_RESET_DEVICE_TIMEOUT (3 * USB_MASS_1_SECOND)
#pragma pack(1)
///
diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassCbi.h b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassCbi.h index 05f3795d17..aeffb5fc67 100644 --- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassCbi.h +++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassCbi.h @@ -2,7 +2,7 @@ Defination for the USB mass storage Control/Bulk/Interrupt (CBI) transport,
according to USB Mass Storage Class Control/Bulk/Interrupt (CBI) Transport, Revision 1.1.
-Copyright (c) 2007 - 2008, Intel Corporation
+Copyright (c) 2007 - 2010, 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
@@ -21,25 +21,20 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. extern USB_MASS_TRANSPORT mUsbCbi0Transport;
extern USB_MASS_TRANSPORT mUsbCbi1Transport;
-typedef enum {
- USB_CBI_MAX_PACKET_NUM = 16,
- USB_CBI_RESET_CMD_LEN = 12,
-
- //
- // USB CBI retry C/B/I transport times, set by experience
- //
- USB_CBI_MAX_RETRY = 3,
-
- //
- // Time to wait for USB CBI reset to complete, set by experience
- //
- USB_CBI_RESET_DEVICE_STALL = 50 * USB_MASS_1_MILLISECOND,
-
- //
- // USB CBI transport timeout, set by experience
- //
- USB_CBI_RESET_DEVICE_TIMEOUT = 1 * USB_MASS_1_SECOND
-} USB_CBI_DATA;
+#define USB_CBI_MAX_PACKET_NUM 16
+#define USB_CBI_RESET_CMD_LEN 12
+//
+// USB CBI retry C/B/I transport times, set by experience
+//
+#define USB_CBI_MAX_RETRY 3
+//
+// Time to wait for USB CBI reset to complete, set by experience
+//
+#define USB_CBI_RESET_DEVICE_STALL (50 * USB_MASS_1_MILLISECOND)
+//
+// USB CBI transport timeout, set by experience
+//
+#define USB_CBI_RESET_DEVICE_TIMEOUT (1 * USB_MASS_1_SECOND)
typedef struct {
//
|