/*++ @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