/** @file Protocol to describe devices that are not on a discoverable bus Copyright (c) 2016, Linaro, Ltd. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef __NON_DISCOVERABLE_DEVICE_H__ #define __NON_DISCOVERABLE_DEVICE_H__ #include #define EDKII_NON_DISCOVERABLE_DEVICE_PROTOCOL_GUID \ { 0x0d51905b, 0xb77e, 0x452a, {0xa2, 0xc0, 0xec, 0xa0, 0xcc, 0x8d, 0x51, 0x4a } } // // Protocol interface structure // typedef struct _NON_DISCOVERABLE_DEVICE NON_DISCOVERABLE_DEVICE; // // Data Types // typedef enum { NonDiscoverableDeviceDmaTypeCoherent, NonDiscoverableDeviceDmaTypeNonCoherent, NonDiscoverableDeviceDmaTypeMax, } NON_DISCOVERABLE_DEVICE_DMA_TYPE; // // Function Prototypes // /** Perform device specific initialization before the device is started @param This The non-discoverable device protocol pointer @retval EFI_SUCCESS Initialization successful, the device may be used @retval Other Initialization failed, device should not be started **/ typedef EFI_STATUS (EFIAPI *NON_DISCOVERABLE_DEVICE_INIT) ( IN NON_DISCOVERABLE_DEVICE *This ); struct _NON_DISCOVERABLE_DEVICE { // // The type of device // CONST EFI_GUID *Type; // // Whether this device is DMA coherent // NON_DISCOVERABLE_DEVICE_DMA_TYPE DmaType; // // Initialization function for the device // NON_DISCOVERABLE_DEVICE_INIT Initialize; // // The MMIO and I/O regions owned by the device // EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Resources; }; extern EFI_GUID gEdkiiNonDiscoverableDeviceProtocolGuid; #endif