summaryrefslogtreecommitdiff
path: root/Vlv2TbltDevicePkg/PlatformDxe/IdccInfo.c
blob: 3b3e4b4c8299cb718e83c033108aa05b6db418d3 (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
/** @file

  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
                                                                                   

  SPDX-License-Identifier: BSD-2-Clause-Patent

                                                                                   


Module Name:


  IdccInfo.c

Abstract:

  Platform information used by IDCC.

Revision History

--*/

#include "PlatformDxe.h"

#include <Guid/IdccData.h>

extern EFI_GUID mPlatformDriverGuid;


EFI_STATUS
WriteIdccInfo (
  )
{
  EFI_STATUS                Status;
  EFI_DATA_HUB_PROTOCOL     *DataHub;
  UINT8                     Ratio;
  EFI_IDCC_PROCESSOR_RATIO  ProcRatio;

  //
  // Locate the data hub protocol
  //
  Status = gBS->LocateProtocol (
                  &gEfiDataHubProtocolGuid,
                  NULL,
                  (VOID **) &DataHub
                  );

  //
  // Find processor actual ratio
  //
  Ratio = 15; //Temporary - some dummy value.

  //
  // Fill in IDCC Type 5 structure
  //
  ProcRatio.IdccHeader.Type = EFI_IDCC_PROC_RATIO_TYPE;
  ProcRatio.IdccHeader.RecordLength = sizeof(EFI_IDCC_PROCESSOR_RATIO);
  ProcRatio.ProcessorRatio = Ratio;

  //
  // Write data to the data hub
  //
  Status = DataHub->LogData (
                      DataHub,
                      &gIdccDataHubGuid,
                      &mPlatformDriverGuid,
                      EFI_DATA_RECORD_CLASS_DATA,
                      &ProcRatio,
                      sizeof(EFI_IDCC_PROCESSOR_RATIO)
                      );

  return Status;
}