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
9 #ifndef __EMU_BUS_DRIVER_H__
10 #define __EMU_BUS_DRIVER_H__
14 #include <Protocol/DevicePath.h>
15 #include <Protocol/EmuThunk.h>
16 #include <Protocol/EmuIoThunk.h>
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>
28 extern EFI_DRIVER_BINDING_PROTOCOL gEmuBusDriverBinding
;
29 extern EFI_COMPONENT_NAME_PROTOCOL gEmuBusDriverComponentName
;
30 extern EFI_COMPONENT_NAME2_PROTOCOL gEmuBusDriverComponentName2
;
34 // Unix Bus Controller Structure
36 #define EMU_BUS_DEVICE_SIGNATURE SIGNATURE_32 ('L', 'X', 'B', 'D')
40 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
44 // Unix Child Device Controller Structure
46 #define EMU_IO_DEVICE_SIGNATURE SIGNATURE_32 ('L', 'X', 'V', 'D')
51 EMU_IO_THUNK_PROTOCOL EmuIoThunk
;
52 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
55 // Private data about the parent
57 EFI_HANDLE ControllerHandle
;
58 EFI_DEVICE_PATH_PROTOCOL
*ParentDevicePath
;
60 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
64 #define EMU_IO_DEVICE_FROM_THIS(a) \
65 CR(a, EMU_IO_DEVICE, EmuIoThunk, EMU_IO_DEVICE_SIGNATURE)
70 // Driver Binding Protocol function prototypes
74 EmuBusDriverBindingSupported (
75 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
77 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
83 EmuBusDriverBindingStart (
84 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
85 IN EFI_HANDLE ParentHandle
,
86 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
92 EmuBusDriverBindingStop (
93 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
95 IN UINTN NumberOfChildren
,
96 IN EFI_HANDLE
*ChildHandleBuffer
100 // Unix Bus Driver private worker functions
102 EFI_DEVICE_PATH_PROTOCOL
*
103 EmuBusCreateDevicePath (
104 IN EFI_DEVICE_PATH_PROTOCOL
*RootDevicePath
,
106 IN UINT16 InstanceNumber