summaryrefslogtreecommitdiff
path: root/Silicon/Intel/IntelSiliconPkg/Include/Protocol/IntelDieInfo.h
blob: bba2908bf5981e7cea89e8f09a25a09ddc382e1a (plain)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/** @file
  IntelDieInfo definition

  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent

**/
#ifndef _DIE_INFO_PROTOCOL_H_
#define _DIE_INFO_PROTOCOL_H_

typedef struct _EDKII_INTEL_DIE_INFO_PROTOCOL  EDKII_INTEL_DIE_INFO_PROTOCOL;
typedef EDKII_INTEL_DIE_INFO_PROTOCOL  EDKII_INTEL_DIE_INFO_PPI;

extern EFI_GUID gIntelDieInfoProtocolGuid;
extern EFI_GUID gIntelDieInfoPpiGuid;

extern EFI_GUID gIntelDieInfoPchGuid;
extern EFI_GUID gIntelDieInfoSocGuid;
extern EFI_GUID gIntelDieInfoIoGuid;
extern EFI_GUID gIntelDieInfoCpuGuid;
extern EFI_GUID gIntelDieInfoGfxGuid;

#define DIE_INFO_PROTOCOL_REVISION 1

/**
  Returns pointer to constant string representing die name.
  Name is specific to die type.

  @param[in] This  Pointer to the DieInfoProtocol context structure
  @retval Pointer to the const string
**/
typedef
CONST CHAR8*
(EFIAPI *EDKII_INTEL_DIE_INFO_GET_DIE_NAME_STR) (
  IN EDKII_INTEL_DIE_INFO_PROTOCOL  *This
  );

/**
  Returns pointer to constant string representing stepping of the die.

  @param[in] This  Pointer to the DieInfoProtocol context structure
  @retval Pointer to the const string
**/
typedef
CONST CHAR8*
(EFIAPI *EDKII_INTEL_DIE_INFO_GET_STEPPING_STR) (
  IN EDKII_INTEL_DIE_INFO_PROTOCOL  *This
  );

/**
  Returns pointer to constant string representing SKU of the die.

  @param[in] This  Pointer to the DieInfoProtocol context structure
  @retval Pointer to the const string
**/
typedef
CONST CHAR8*
(EFIAPI *EDKII_INTEL_DIE_INFO_GET_SKU_STR) (
  IN EDKII_INTEL_DIE_INFO_PROTOCOL  *This
  );

/**
  Protocol/PPI definition.
  The purpose of this interface is to serve die-specific informations in a unified, generic way.
  It will be produced by silicon code per die, and can be consumed by any module that needs contained information.

  <b>Revision 1</b>:
   - Initial version.
**/
struct _EDKII_INTEL_DIE_INFO_PROTOCOL {
  UINT32                                 Revision; ///< Current protocol revision
  /**
    Type of the die that particular instance is reffering to.
  **/
  EFI_GUID                               Type;
  /**
    Index of the die in the package.
  **/
  UINT32                                 DieIndex;
  /**
    Unique ID specific to the die and the associated generation.
  **/
  UINT64                                 DieId;
  /**
    Generation and die specific stepping ID.
  **/
  UINT32                                 SteppingId;

  EDKII_INTEL_DIE_INFO_GET_DIE_NAME_STR  GetNameStr;
  EDKII_INTEL_DIE_INFO_GET_STEPPING_STR  GetSteppingStr;
  EDKII_INTEL_DIE_INFO_GET_SKU_STR       GetSkuStr;
};

#endif // _DIE_INFO_PROTOCOL_H_