2011-05-11 20:31:20 +02:00
|
|
|
/*++ @file
|
|
|
|
|
|
|
|
Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
|
|
|
|
Portions copyright (c) 2011, Apple Inc. All rights reserved.
|
2011-06-28 18:50:26 +02:00
|
|
|
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.
|
2011-05-11 20:31:20 +02:00
|
|
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
#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
|