[Description]:
[people/mcb30/edk2.git] / edk2 / MdeModulePkg / Bus / Usb / UsbMassStorageDxe / UsbMassImpl.h
1 /** @file\r
2 \r
3 Copyright (c) 2007 - 2008, Intel Corporation\r
4 All rights reserved. This program and the accompanying materials\r
5 are licensed and made available under the terms and conditions of the BSD License\r
6 which accompanies this distribution.  The full text of the license may be found at\r
7 http://opensource.org/licenses/bsd-license.php\r
8 \r
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11 \r
12 Module Name:\r
13 \r
14   UsbMassImpl.h\r
15 \r
16 Abstract:\r
17 \r
18   The implementation of USB mass storage class device driver.\r
19 \r
20 Revision History\r
21 \r
22 \r
23 **/\r
24 \r
25 #ifndef _EFI_USBMASS_IMPL_H_\r
26 #define _EFI_USBMASS_IMPL_H_\r
27 \r
28 typedef struct _USB_MASS_DEVICE USB_MASS_DEVICE;\r
29 \r
30 #include "UsbMass.h"\r
31 #include "UsbMassBot.h"\r
32 #include "UsbMassCbi.h"\r
33 #include "UsbMassBoot.h"\r
34 \r
35 enum {\r
36   //\r
37   // MassStorage raises TPL to TPL_NOTIFY to serialize all its operations\r
38   // to protect shared data structures.\r
39   //\r
40   USB_MASS_TPL          = TPL_NOTIFY,\r
41   \r
42   USB_MASS_SIGNATURE    = EFI_SIGNATURE_32 ('U', 's', 'b', 'M')\r
43 };\r
44 \r
45 struct _USB_MASS_DEVICE {\r
46   UINT32                    Signature;\r
47   EFI_HANDLE                Controller;\r
48   EFI_USB_IO_PROTOCOL       *UsbIo;\r
49   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;\r
50   EFI_BLOCK_IO_PROTOCOL     BlockIo;\r
51   EFI_BLOCK_IO_MEDIA        BlockIoMedia;\r
52   BOOLEAN                   OpticalStorage;\r
53   UINT8                     Lun;          // Logical Unit Number\r
54   UINT8                     Pdt;          // Peripheral Device Type\r
55   USB_MASS_TRANSPORT        *Transport;   // USB mass storage transport protocol\r
56   VOID                      *Context;     // Opaque storage for mass transport\r
57 };\r
58 \r
59 #define USB_MASS_DEVICE_FROM_BLOCKIO(a) \\r
60         CR (a, USB_MASS_DEVICE, BlockIo, USB_MASS_SIGNATURE)\r
61 \r
62 extern EFI_COMPONENT_NAME_PROTOCOL   gUsbMassStorageComponentName;\r
63 extern EFI_COMPONENT_NAME2_PROTOCOL  gUsbMassStorageComponentName2;\r
64 \r
65 #endif\r