/** @file Header file for Driver Binding Protocol. Copyright (c) 2010 - 2019 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _SIO_DRIVER_H_ #define _SIO_DRIVER_H_ #include #include #include #include #include #include #include #include #include #include #include #include // // Driver Consumed Protocol Prototypes // #include #include #include // // Driver Produced Protocol Prototypes // #include #include "SioChip.h" #include "SioService.h" #include "ComponentName.h" // // Global Variables definitions // extern EFI_DRIVER_BINDING_PROTOCOL mSioDriver; extern EFI_COMPONENT_NAME_PROTOCOL mSioComponentName; extern EFI_COMPONENT_NAME2_PROTOCOL mSioComponentName2; // // SIO device private data structure // #define SIO_DEV_SIGNATURE SIGNATURE_32 ('_', 'S', 'I', 'O') typedef struct _SIO_DEV { UINT32 Signature; EFI_HANDLE PciHandle; EFI_SIO_ACPI_DEVICE_ID Device; EFI_HANDLE Handle; EFI_SIO_PROTOCOL Sio; EFI_DEVICE_PATH_PROTOCOL *DevicePath; LIST_ENTRY Link; } SIO_DEV; #define SIO_DEV_FROM_THIS(a) CR (a, SIO_DEV, Sio, SIO_DEV_SIGNATURE) // // Prototypes for Driver model protocol interface // /** Test to see if this driver supports Controller Handle. @param[in] This Protocol instance pointer. @param[in] Controller Handle of device to test @param[in] RemainingDevicePath Optional parameter use to pick a specific child device to start. @retval EFI_SUCCESS This driver supports this device @retval EFI_ALREADY_STARTED This driver is already running on this device @retval other This driver does not support this device **/ EFI_STATUS EFIAPI SioDriverSupported ( IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ); /** Start this driver on ControllerHandle. @param[in] This Protocol instance pointer. @param[in] Controller Handle of device to bind driver to @param[in] RemainingDevicePath Optional parameter use to pick a specific child device to start. @retval EFI_SUCCESS This driver is added to ControllerHandle @retval EFI_ALREADY_STARTED This driver is already running on ControllerHandle @retval other This driver does not support this device **/ EFI_STATUS EFIAPI SioDriverStart ( IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ); /** Stop this driver on ControllerHandle. @param[in] This Protocol instance pointer. @param[in] Controller Handle of device to stop driver on @param[in] NumberOfChildren Number of Handles in ChildHandleBuffer. If number of children is zero stop the entire bus driver. @param[in] ChildHandleBuffer List of Child Handles to Stop. @retval EFI_SUCCESS This driver is removed ControllerHandle @retval other This driver was not removed from this device **/ EFI_STATUS EFIAPI SioDriverStop ( IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer ); #endif