]> git.proxmox.com Git - mirror_edk2.git/blob - EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.h
EmulatorPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / EmulatorPkg / EmuBusDriverDxe / EmuBusDriverDxe.h
1 /*++ @file
2
3 Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
4 Portions copyright (c) 2011, Apple Inc. All rights reserved.
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 **/
8
9 #ifndef __EMU_BUS_DRIVER_H__
10 #define __EMU_BUS_DRIVER_H__
11
12 #include <PiDxe.h>
13
14 #include <Protocol/DevicePath.h>
15 #include <Protocol/EmuThunk.h>
16 #include <Protocol/EmuIoThunk.h>
17
18 #include <Library/DebugLib.h>
19 #include <Library/BaseLib.h>
20 #include <Library/UefiDriverEntryPoint.h>
21 #include <Library/UefiLib.h>
22 #include <Library/PcdLib.h>
23 #include <Library/BaseMemoryLib.h>
24 #include <Library/MemoryAllocationLib.h>
25 #include <Library/UefiBootServicesTableLib.h>
26 #include <Library/DevicePathLib.h>
27
28 extern EFI_DRIVER_BINDING_PROTOCOL gEmuBusDriverBinding;
29 extern EFI_COMPONENT_NAME_PROTOCOL gEmuBusDriverComponentName;
30 extern EFI_COMPONENT_NAME2_PROTOCOL gEmuBusDriverComponentName2;
31
32
33 //
34 // Unix Bus Controller Structure
35 //
36 #define EMU_BUS_DEVICE_SIGNATURE SIGNATURE_32 ('L', 'X', 'B', 'D')
37
38 typedef struct {
39 UINT64 Signature;
40 EFI_UNICODE_STRING_TABLE *ControllerNameTable;
41 } EMU_BUS_DEVICE;
42
43 //
44 // Unix Child Device Controller Structure
45 //
46 #define EMU_IO_DEVICE_SIGNATURE SIGNATURE_32 ('L', 'X', 'V', 'D')
47
48 typedef struct {
49 UINT64 Signature;
50 EFI_HANDLE Handle;
51 EMU_IO_THUNK_PROTOCOL EmuIoThunk;
52 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
53
54 //
55 // Private data about the parent
56 //
57 EFI_HANDLE ControllerHandle;
58 EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;
59
60 EFI_UNICODE_STRING_TABLE *ControllerNameTable;
61
62 } EMU_IO_DEVICE;
63
64 #define EMU_IO_DEVICE_FROM_THIS(a) \
65 CR(a, EMU_IO_DEVICE, EmuIoThunk, EMU_IO_DEVICE_SIGNATURE)
66
67
68
69 //
70 // Driver Binding Protocol function prototypes
71 //
72 EFI_STATUS
73 EFIAPI
74 EmuBusDriverBindingSupported (
75 IN EFI_DRIVER_BINDING_PROTOCOL *This,
76 IN EFI_HANDLE Handle,
77 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
78 );
79
80
81 EFI_STATUS
82 EFIAPI
83 EmuBusDriverBindingStart (
84 IN EFI_DRIVER_BINDING_PROTOCOL *This,
85 IN EFI_HANDLE ParentHandle,
86 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
87 );
88
89
90 EFI_STATUS
91 EFIAPI
92 EmuBusDriverBindingStop (
93 IN EFI_DRIVER_BINDING_PROTOCOL *This,
94 IN EFI_HANDLE Handle,
95 IN UINTN NumberOfChildren,
96 IN EFI_HANDLE *ChildHandleBuffer
97 );
98
99 //
100 // Unix Bus Driver private worker functions
101 //
102 EFI_DEVICE_PATH_PROTOCOL *
103 EmuBusCreateDevicePath (
104 IN EFI_DEVICE_PATH_PROTOCOL *RootDevicePath,
105 IN EFI_GUID *Guid,
106 IN UINT16 InstanceNumber
107 );
108
109
110 #endif