Home | History | Annotate | Download | only in EmuBusDriverDxe
      1 /*++ @file
      2 
      3 Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
      4 Portions copyright (c) 2011, Apple Inc. All rights reserved.
      5 This program and the accompanying materials
      6 are licensed and made available under the terms and conditions of the BSD License
      7 which accompanies this distribution.  The full text of the license may be found at
      8 http://opensource.org/licenses/bsd-license.php
      9 
     10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 
     13 **/
     14 
     15 #ifndef __EMU_BUS_DRIVER_H__
     16 #define __EMU_BUS_DRIVER_H__
     17 
     18 #include <PiDxe.h>
     19 
     20 #include <Protocol/DevicePath.h>
     21 #include <Protocol/EmuThunk.h>
     22 #include <Protocol/EmuIoThunk.h>
     23 
     24 #include <Library/DebugLib.h>
     25 #include <Library/BaseLib.h>
     26 #include <Library/UefiDriverEntryPoint.h>
     27 #include <Library/UefiLib.h>
     28 #include <Library/PcdLib.h>
     29 #include <Library/BaseMemoryLib.h>
     30 #include <Library/MemoryAllocationLib.h>
     31 #include <Library/UefiBootServicesTableLib.h>
     32 #include <Library/DevicePathLib.h>
     33 
     34 extern EFI_DRIVER_BINDING_PROTOCOL  gEmuBusDriverBinding;
     35 extern EFI_COMPONENT_NAME_PROTOCOL  gEmuBusDriverComponentName;
     36 extern EFI_COMPONENT_NAME2_PROTOCOL gEmuBusDriverComponentName2;
     37 
     38 
     39 //
     40 // Unix Bus Controller Structure
     41 //
     42 #define EMU_BUS_DEVICE_SIGNATURE SIGNATURE_32 ('L', 'X', 'B', 'D')
     43 
     44 typedef struct {
     45   UINT64                    Signature;
     46   EFI_UNICODE_STRING_TABLE  *ControllerNameTable;
     47 } EMU_BUS_DEVICE;
     48 
     49 //
     50 // Unix Child Device Controller Structure
     51 //
     52 #define EMU_IO_DEVICE_SIGNATURE  SIGNATURE_32 ('L', 'X', 'V', 'D')
     53 
     54 typedef struct {
     55   UINT64                    Signature;
     56   EFI_HANDLE                Handle;
     57   EMU_IO_THUNK_PROTOCOL     EmuIoThunk;
     58   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
     59 
     60   //
     61   // Private data about the parent
     62   //
     63   EFI_HANDLE                ControllerHandle;
     64   EFI_DEVICE_PATH_PROTOCOL  *ParentDevicePath;
     65 
     66   EFI_UNICODE_STRING_TABLE  *ControllerNameTable;
     67 
     68 } EMU_IO_DEVICE;
     69 
     70 #define EMU_IO_DEVICE_FROM_THIS(a) \
     71   CR(a, EMU_IO_DEVICE, EmuIoThunk, EMU_IO_DEVICE_SIGNATURE)
     72 
     73 
     74 
     75 //
     76 // Driver Binding Protocol function prototypes
     77 //
     78 EFI_STATUS
     79 EFIAPI
     80 EmuBusDriverBindingSupported (
     81   IN EFI_DRIVER_BINDING_PROTOCOL    *This,
     82   IN EFI_HANDLE                     Handle,
     83   IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath
     84   );
     85 
     86 
     87 EFI_STATUS
     88 EFIAPI
     89 EmuBusDriverBindingStart (
     90   IN EFI_DRIVER_BINDING_PROTOCOL    *This,
     91   IN EFI_HANDLE                     ParentHandle,
     92   IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath
     93   );
     94 
     95 
     96 EFI_STATUS
     97 EFIAPI
     98 EmuBusDriverBindingStop (
     99   IN  EFI_DRIVER_BINDING_PROTOCOL  *This,
    100   IN  EFI_HANDLE                   Handle,
    101   IN  UINTN                        NumberOfChildren,
    102   IN  EFI_HANDLE                   *ChildHandleBuffer
    103   );
    104 
    105 //
    106 // Unix Bus Driver private worker functions
    107 //
    108 EFI_DEVICE_PATH_PROTOCOL  *
    109 EmuBusCreateDevicePath (
    110   IN  EFI_DEVICE_PATH_PROTOCOL  *RootDevicePath,
    111   IN  EFI_GUID                  *Guid,
    112   IN  UINT16                    InstanceNumber
    113   );
    114 
    115 
    116 #endif
    117