summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassImpl.h
blob: e3952e40a4f778963f732ef0589312979dda32dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/** @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:

  UsbMassImpl.h

Abstract:

  The implementation of USB mass storage class device driver.

Revision History


**/

#ifndef _EFI_USBMASS_IMPL_H_
#define _EFI_USBMASS_IMPL_H_

typedef struct _USB_MASS_DEVICE USB_MASS_DEVICE;

#include "UsbMass.h"
#include "UsbMassBot.h"
#include "UsbMassCbi.h"
#include "UsbMassBoot.h"

enum {
  //
  // MassStorage raises TPL to TPL_NOTIFY to serialize all its operations
  // to protect shared data structures.
  //
  USB_MASS_TPL          = TPL_NOTIFY,
  
  USB_MASS_SIGNATURE    = EFI_SIGNATURE_32 ('U', 's', 'b', 'M')
};

struct _USB_MASS_DEVICE {
  UINT32                Signature;
  EFI_HANDLE            Controller;
  EFI_USB_IO_PROTOCOL   *UsbIo;
  EFI_BLOCK_IO_PROTOCOL BlockIo;
  EFI_BLOCK_IO_MEDIA    BlockIoMedia;
  BOOLEAN               OpticalStorage;
  UINT8                 Lun;          // Logical Unit Number
  UINT8                 Pdt;          // Peripheral Device Type
  USB_MASS_TRANSPORT    *Transport;   // USB mass storage transport protocol
  VOID                  *Context;     // Opaque storage for mass transport
};

#define USB_MASS_DEVICE_FROM_BLOCKIO(a) \
        CR (a, USB_MASS_DEVICE, BlockIo, USB_MASS_SIGNATURE)

extern EFI_COMPONENT_NAME_PROTOCOL   gUsbMassStorageComponentName;
extern EFI_COMPONENT_NAME2_PROTOCOL  gUsbMassStorageComponentName2;

#endif