File: EmbeddedDevice.h

package info (click to toggle)
edk2 2025.11-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 338,536 kB
  • sloc: ansic: 2,166,376; asm: 270,725; perl: 235,301; python: 149,839; sh: 34,744; cpp: 23,311; makefile: 3,326; pascal: 1,602; xml: 806; lisp: 35; ruby: 16; sed: 6; tcl: 4
file content (47 lines) | stat: -rw-r--r-- 1,387 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/** @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