EmuBusDriverDxe.h 2.7 KB

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