/** @file
Mailbox Library.
Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include
#include
/**
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 successful.
@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_SUCCESS Command succeeded.
@retval EFI_INVALID_PARAMETER Invalid read data detected from pcode.
@retval EFI_UNSUPPORTED Unsupported MailboxType parameter.
**/
EFI_STATUS
EFIAPI
MailboxWrite (
IN UINT32 MailboxType,
IN UINT32 MailboxCommand,
IN UINT32 MailboxData,
OUT UINT32 *MailboxStatus
)
{
return EFI_UNSUPPORTED;
}
/**
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_SUCCESS Command succeeded.
@retval EFI_INVALID_PARAMETER Invalid read data detected from pcode.
@retval EFI_UNSUPPORTED Unsupported MailboxType parameter.
**/
EFI_STATUS
EFIAPI
MailboxRead (
IN UINT32 MailboxType,
IN UINT32 MailboxCommand,
OUT UINT32 *MailboxDataPtr,
OUT UINT32 *MailboxStatus
)
{
return EFI_UNSUPPORTED;
}
/**
Poll the run/busy bit of the mailbox until available or timeout expires.
@param[in] MailboxType
@retval EFI_SUCCESS Command succeeded.
@retval EFI_TIMEOUT Command timeout.
**/
EFI_STATUS
EFIAPI
PollMailboxReady (
IN UINT32 MailboxType
)
{
return EFI_SUCCESS;
}