123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- /** @file
- Provides the parent dispatch service for the USB SMI source generator.
- Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- @par Revision Reference:
- This Protocol is defined in Framework of EFI SMM Core Interface Spec
- Version 0.9.
- **/
- #ifndef _EFI_SMM_USB_DISPATCH_H_
- #define _EFI_SMM_USB_DISPATCH_H_
- //
- // Share some common definitions with PI SMM
- //
- #include <Protocol/SmmUsbDispatch2.h>
- //
- // Global ID for the USB Protocol
- //
- #define EFI_SMM_USB_DISPATCH_PROTOCOL_GUID \
- { \
- 0xa05b6ffd, 0x87af, 0x4e42, {0x95, 0xc9, 0x62, 0x28, 0xb6, 0x3c, 0xf3, 0xf3 } \
- }
- typedef struct _EFI_SMM_USB_DISPATCH_PROTOCOL EFI_SMM_USB_DISPATCH_PROTOCOL;
- typedef struct {
- ///
- /// Describes whether this child handler will be invoked in response to a USB legacy
- /// emulation event, such as port-trap on the PS/2* keyboard control registers, or to a
- /// USB wake event, such as resumption from a sleep state.
- ///
- EFI_USB_SMI_TYPE Type;
- ///
- /// The device path is part of the context structure and describes the location of the
- /// particular USB host controller in the system for which this register event will occur.
- /// This location is important because of the possible integration of several USB host
- /// controllers in a system.
- ///
- EFI_DEVICE_PATH_PROTOCOL *Device;
- } EFI_SMM_USB_DISPATCH_CONTEXT;
- //
- // Member functions
- //
- /**
- Dispatch function for a USB SMI handler.
- @param[in] DispatchHandle Handle of this dispatch function.
- @param[in] DispatchContext Pointer to the dispatch function's context.
- The DispatchContext fields are filled in
- by the dispatching driver prior to
- invoking this dispatch function.
- **/
- typedef
- VOID
- (EFIAPI *EFI_SMM_USB_DISPATCH)(
- IN EFI_HANDLE DispatchHandle,
- IN EFI_SMM_USB_DISPATCH_CONTEXT *DispatchContext
- );
- /**
- Register a child SMI source dispatch function with a parent SMM driver.
- @param[in] This The pointer to the EFI_SMM_USB_DISPATCH_PROTOCOL instance.
- @param[in] DispatchFunction The pointer to dispatch function to be invoked
- for this SMI source.
- @param[in] DispatchContext The pointer to the dispatch function's context.
- The caller fills this context in before calling
- the register function to indicate to the register
- function the USB SMI types for which the dispatch
- function should be invoked.
- @param[out] DispatchHandle The handle generated by the dispatcher to track the
- function instance.
- @retval EFI_SUCCESS The dispatch function has been successfully
- registered and the SMI source has been enabled.
- @retval EFI_DEVICE_ERROR The driver was unable to enable the SMI source.
- @retval EFI_OUT_OF_RESOURCES Not enough memory (system or SMM) to manage this
- child.
- @retval EFI_INVALID_PARAMETER DispatchContext is invalid. The USB SMI type
- is not within valid range.
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_SMM_USB_REGISTER)(
- IN EFI_SMM_USB_DISPATCH_PROTOCOL *This,
- IN EFI_SMM_USB_DISPATCH DispatchFunction,
- IN EFI_SMM_USB_DISPATCH_CONTEXT *DispatchContext,
- OUT EFI_HANDLE *DispatchHandle
- );
- /**
- Unregisters a USB service.
- @param[in] This The pointer to the EFI_SMM_USB_DISPATCH_PROTOCOL instance.
- @param[in] DispatchHandle Handle of the service to remove.
- @retval EFI_SUCCESS The dispatch function has been successfully
- unregistered and the SMI source has been disabled
- if there are no other registered child dispatch
- functions for this SMI source.
- @retval EFI_INVALID_PARAMETER The DispatchHandle was not valid.
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_SMM_USB_UNREGISTER)(
- IN EFI_SMM_USB_DISPATCH_PROTOCOL *This,
- IN EFI_HANDLE DispatchHandle
- );
- ///
- /// The EFI_SMM_USB_DISPATCH_PROTOCOL provides the ability to install child handlers for the
- /// given event types.
- ///
- struct _EFI_SMM_USB_DISPATCH_PROTOCOL {
- EFI_SMM_USB_REGISTER Register;
- EFI_SMM_USB_UNREGISTER UnRegister;
- };
- extern EFI_GUID gEfiSmmUsbDispatchProtocolGuid;
- #endif
|