/** @file
  Deal with devices that just exist in memory space.

  To follow the EFI driver model you need a root handle to start with. An
  EFI driver will have a driver binding protocol (Supported, Start, Stop)
  that is used to layer on top of a handle via a gBS->ConnectController.
  The first handle has to just be in the system to make that work. For
  PCI it is a PCI Root Bridge IO protocol that provides the root.

  On an embedded system with MMIO device we need a handle to just
  show up. That handle will have this protocol and a device path
  protocol on it.

  For an ethernet device the device path must contain a MAC address device path
  node.

  Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>

  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef __EMBEDDED_DEVICE_PROTOCOL_H__
#define __EMBEDDED_DEVICE_PROTOCOL_H__

//
// Protocol GUID
//
// BF4B9D10-13EC-43dd-8880-E90B718F27DE

#define EMBEDDED_DEVICE_PROTOCOL_GUID \
  { 0xbf4b9d10, 0x13ec, 0x43dd, { 0x88, 0x80, 0xe9, 0xb, 0x71, 0x8f, 0x27, 0xde } }

typedef struct {
  UINT16    VendorId;
  UINT16    DeviceId;
  UINT16    RevisionId;
  UINT16    SubsystemId;
  UINT16    SubsystemVendorId;
  UINT8     ClassCode[3];
  UINT8     HeaderSize;
  UINTN     BaseAddress;
} EMBEDDED_DEVICE_PROTOCOL;

extern EFI_GUID  gEmbeddedDeviceGuid;

#endif
