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
95
96
|
/** @file
Header file for Cpu Mailbox Lib.
Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef _CPU_MAILBOX_LIB_H_
#define _CPU_MAILBOX_LIB_H_
//
// Mailbox Related Definitions
//
/**
Generic Mailbox function for mailbox write commands. This function will
poll the mailbox interface for control, issue the write request, poll
for completion, and verify the write was succussful.
@param[in] MailboxType The type of mailbox interface to read. The Overclocking mailbox is defined as MAILBOX_TYPE_OC = 2.
@param[in] MailboxCommand Overclocking mailbox command data
@param[in] MailboxData Overclocking mailbox interface data
@param[out] *MailboxStatus Pointer to the mailbox status returned from pcode. Possible mailbox status values are:
- SUCCESS (0) Command succeeded.
- OC_LOCKED (1) Overclocking is locked. Service is read-only.
- INVALID_DOMAIN (2) Invalid Domain ID provided in command data.
- MAX_RATIO_EXCEEDED (3) Ratio exceeds maximum overclocking limits.
- MAX_VOLTAGE_EXCEEDED (4) Voltage exceeds input VR's max voltage.
- OC_NOT_SUPPORTED (5) Domain does not support overclocking.
@retval EFI_STATUS
- EFI_SUCCESS Command succeeded.
- EFI_INVALID_PARAMETER Invalid read data detected from pcode.
- EFI_UNSUPPORTED Unsupported MailboxType parameter.
**/
EFI_STATUS
EFIAPI
MailboxWrite (
IN UINT32 MailboxType,
IN UINT32 MailboxCommand,
IN UINT32 MailboxData,
OUT UINT32 *MailboxStatus
);
/**
Generic Mailbox function for mailbox read commands. This function will write
the read request from MailboxType, and populate the read results in the MailboxDataPtr.
@param[in] MailboxType The type of mailbox interface to read. The Overclocking mailbox is defined as MAILBOX_TYPE_OC = 2.
@param[in] MailboxCommand Overclocking mailbox command data
@param[out] *MailboxDataPtr Pointer to the overclocking mailbox interface data
@param[out] *MailboxStatus Pointer to the mailbox status returned from pcode. Possible mailbox status are
- SUCCESS (0) Command succeeded.
- OC_LOCKED (1) Overclocking is locked. Service is read-only.
- INVALID_DOMAIN (2) Invalid Domain ID provided in command data.
- MAX_RATIO_EXCEEDED (3) Ratio exceeds maximum overclocking limits.
- MAX_VOLTAGE_EXCEEDED (4) Voltage exceeds input VR's max voltage.
- OC_NOT_SUPPORTED (5) Domain does not support overclocking.
@retval EFI_STATUS
- EFI_SUCCESS Command succeeded.
- EFI_INVALID_PARAMETER Invalid read data detected from pcode.
- EFI_UNSUPPORTED Unsupported MailboxType parameter.
**/
EFI_STATUS
EFIAPI
MailboxRead (
IN UINT32 MailboxType,
IN UINT32 MailboxCommand,
OUT UINT32 *MailboxDataPtr,
OUT UINT32 *MailboxStatus
);
/**
Poll the run/busy bit of the mailbox until available or timeout expires.
@param[in] MailboxType
@retval EFI_STATUS
- EFI_SUCCESS Command succeeded.
- EFI_TIMEOUT Command timeout.
**/
EFI_STATUS
EFIAPI
PollMailboxReady (
IN UINT32 MailboxType
);
#endif
|