1 /*++
2 
3   Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
4 
5 
6   This program and the accompanying materials are licensed and made available under
7 
8   the terms and conditions of the BSD License that accompanies this distribution.
9 
10   The full text of the license may be found at
11 
12   http://opensource.org/licenses/bsd-license.php.
13 
14 
15 
16   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
17 
18   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
19 
20 
21 
22 
23 
24 Module Name:
25 
26   IdccData.h
27 
28 Abstract:
29 
30 --*/
31 
32 #ifndef _IDCCDATAHUB_GUID_H_
33 #define _IDCCDATAHUB_GUID_H_
34 
35 //
36 // This GUID is for the IDCC related data found in the Data Hub.
37 //
38 #define IDCC_DATA_HUB_GUID \
39   { 0x788e1d9f, 0x1eab, 0x47d2, 0xa2, 0xf3, 0x78, 0xca, 0xe8, 0x7d, 0x60, 0x12 }
40 
41 extern EFI_GUID gIdccDataHubGuid;
42 
43 #pragma pack(1)
44 
45 typedef struct {
46   UINT32    Type;
47   UINT32    RecordLength;
48 } EFI_IDCC_DATA_HEADER;
49 
50 typedef struct {
51   EFI_IDCC_DATA_HEADER  IdccHeader;
52   UINT32                Tcontrol;
53 } EFI_IDCC_TCONTROL;
54 
55 typedef struct {
56   UINT32    EntryCount;
57 } EFI_IDCC_CLOCK_COMMON;
58 
59 typedef struct {
60   UINT8     Polarity;
61   UINT8     Percent;
62   UINT32    FpValue;
63 } EFI_IDCC_TYPE_2_DATA;
64 
65 typedef struct {
66   UINT8     SetupVal;
67   UINT32    FpValue;
68 } EFI_IDCC_TYPE_3_4_DATA;
69 
70 typedef struct {
71   EFI_IDCC_DATA_HEADER  IdccHeader;
72   UINT32                ProcessorRatio;
73 } EFI_IDCC_PROCESSOR_RATIO;
74 
75 typedef struct {
76   EFI_IDCC_DATA_HEADER  IdccHeader;
77   UINT32                BoardFormFactor;
78 } EFI_IDCC_BOARD_FORM_FACTOR;
79 
80 typedef struct {
81   EFI_IDCC_DATA_HEADER  IdccHeader;
82   UINT32                ProcessorInfo;
83 } EFI_IDCC_PROCESSOR_INFO;
84 
85 #define EFI_IDCC_PROCESSOR_UNCON    (1 << 0)  // Bit 0: UnCon CPU
86 #define EFI_IDCC_PROCESSOR_UNLOCK   (1 << 1)  // Bit 1: UnLock CPU
87 #define EFI_IDCC_PROCESSOR_CNR      (1 << 2)  // Bit 2: CNR CPU
88 #define EFI_IDCC_PROCESSOR_KNF      (1 << 3)  // Bit 3: KNF CPU
89 
90 typedef struct {
91   EFI_IDCC_DATA_HEADER  IdccHeader;
92   UINT32    MinFSB;
93   UINT32    MaxFSB;
94   UINT8     StepFSB;
95 } EFI_IDCC_FSB_DATA;
96 
97 #pragma pack()
98 
99 #define EFI_IDCC_POSITIVE   0
100 #define EFI_IDCC_NEGATIVE   1
101 
102 //
103 // Board Form Factor equates.
104 //
105 #define ATX_FORM_FACTOR		0x00
106 #define BTX_FORM_FACTOR		0x01
107 
108 
109 #define EFI_IDCC_TCONTROL_TYPE          1
110 #define EFI_IDCC_FSB_TYPE               2
111 #define EFI_IDCC_PCI_TYPE               3
112 #define EFI_IDCC_PCIE_TYPE              4
113 #define EFI_IDCC_PROC_RATIO_TYPE        5
114 #define EFI_IDCC_BOARD_FORM_FACTOR_TYPE 6
115 #define EFI_IDCC_PROC_INFO_TYPE         7
116 #define EFI_IDCC_FSB_DATA_TYPE          8
117 
118 #endif
119