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
;
33 // Unix Bus Controller Structure
35 #define EMU_BUS_DEVICE_SIGNATURE SIGNATURE_32 ('L', 'X', 'B', 'D')
39 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
43 // Unix Child Device Controller Structure
45 #define EMU_IO_DEVICE_SIGNATURE SIGNATURE_32 ('L', 'X', 'V', 'D')
50 EMU_IO_THUNK_PROTOCOL EmuIoThunk
;
51 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
54 // Private data about the parent
56 EFI_HANDLE ControllerHandle
;
57 EFI_DEVICE_PATH_PROTOCOL
*ParentDevicePath
;
59 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
62 #define EMU_IO_DEVICE_FROM_THIS(a) \
63 CR(a, EMU_IO_DEVICE, EmuIoThunk, EMU_IO_DEVICE_SIGNATURE)
66 // Driver Binding Protocol function prototypes
70 EmuBusDriverBindingSupported (
71 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
73 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
78 EmuBusDriverBindingStart (
79 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
80 IN EFI_HANDLE ParentHandle
,
81 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
86 EmuBusDriverBindingStop (
87 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
89 IN UINTN NumberOfChildren
,
90 IN EFI_HANDLE
*ChildHandleBuffer
94 // Unix Bus Driver private worker functions
96 EFI_DEVICE_PATH_PROTOCOL
*
97 EmuBusCreateDevicePath (
98 IN EFI_DEVICE_PATH_PROTOCOL
*RootDevicePath
,
100 IN UINT16 InstanceNumber