/** @file
  Protocol to describe devices that are not on a discoverable bus

  Copyright (c) 2016, Linaro, Ltd. All rights reserved.<BR>

  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#pragma once

#include <IndustryStandard/Acpi.h>

#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;
