| /*++ @file | |
| Copyright (c) 2006, Intel Corporation. All rights reserved.<BR> | |
| Portions copyright (c) 2011, Apple Inc. 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. | |
| **/ | |
| #ifndef __EMU_BUS_DRIVER_H__ | |
| #define __EMU_BUS_DRIVER_H__ | |
| #include <PiDxe.h> | |
| #include <Protocol/DevicePath.h> | |
| #include <Protocol/EmuThunk.h> | |
| #include <Protocol/EmuIoThunk.h> | |
| #include <Library/DebugLib.h> | |
| #include <Library/BaseLib.h> | |
| #include <Library/UefiDriverEntryPoint.h> | |
| #include <Library/UefiLib.h> | |
| #include <Library/PcdLib.h> | |
| #include <Library/BaseMemoryLib.h> | |
| #include <Library/MemoryAllocationLib.h> | |
| #include <Library/UefiBootServicesTableLib.h> | |
| #include <Library/DevicePathLib.h> | |
| extern EFI_DRIVER_BINDING_PROTOCOL gEmuBusDriverBinding; | |
| extern EFI_COMPONENT_NAME_PROTOCOL gEmuBusDriverComponentName; | |
| extern EFI_COMPONENT_NAME2_PROTOCOL gEmuBusDriverComponentName2; | |
| // | |
| // Unix Bus Controller Structure | |
| // | |
| #define EMU_BUS_DEVICE_SIGNATURE SIGNATURE_32 ('L', 'X', 'B', 'D') | |
| typedef struct { | |
| UINT64 Signature; | |
| EFI_UNICODE_STRING_TABLE *ControllerNameTable; | |
| } EMU_BUS_DEVICE; | |
| // | |
| // Unix Child Device Controller Structure | |
| // | |
| #define EMU_IO_DEVICE_SIGNATURE SIGNATURE_32 ('L', 'X', 'V', 'D') | |
| typedef struct { | |
| UINT64 Signature; | |
| EFI_HANDLE Handle; | |
| EMU_IO_THUNK_PROTOCOL EmuIoThunk; | |
| EFI_DEVICE_PATH_PROTOCOL *DevicePath; | |
| // | |
| // Private data about the parent | |
| // | |
| EFI_HANDLE ControllerHandle; | |
| EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; | |
| EFI_UNICODE_STRING_TABLE *ControllerNameTable; | |
| } EMU_IO_DEVICE; | |
| #define EMU_IO_DEVICE_FROM_THIS(a) \ | |
| CR(a, EMU_IO_DEVICE, EmuIoThunk, EMU_IO_DEVICE_SIGNATURE) | |
| // | |
| // Driver Binding Protocol function prototypes | |
| // | |
| EFI_STATUS | |
| EFIAPI | |
| EmuBusDriverBindingSupported ( | |
| IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
| IN EFI_HANDLE Handle, | |
| IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| EmuBusDriverBindingStart ( | |
| IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
| IN EFI_HANDLE ParentHandle, | |
| IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | |
| ); | |
| EFI_STATUS | |
| EFIAPI | |
| EmuBusDriverBindingStop ( | |
| IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
| IN EFI_HANDLE Handle, | |
| IN UINTN NumberOfChildren, | |
| IN EFI_HANDLE *ChildHandleBuffer | |
| ); | |
| // | |
| // Unix Bus Driver private worker functions | |
| // | |
| EFI_DEVICE_PATH_PROTOCOL * | |
| EmuBusCreateDevicePath ( | |
| IN EFI_DEVICE_PATH_PROTOCOL *RootDevicePath, | |
| IN EFI_GUID *Guid, | |
| IN UINT16 InstanceNumber | |
| ); | |
| #endif |