/**
* @file hv_drv_Mailbox.h
* @brief hv_drv_Mailbox header file.
* @details This file provides the following functions: \n
* @author HiView SoC Software Team
* @version 1.0.0
* @date 2022-09-06
* @copyright Copyright(c),2022-8, Hiview Software. All rights reserved.
* @par History:
*
* Author | Date | Change Description
* |
---|
HiView SoC Software Team | 2022-09-06 | create
* |
*/
#ifndef __HV_DRV_MAILBOX_H__
#define __HV_DRV_MAILBOX_H__
#include "Common/hv_comm_DataType.h"
/* mailbox param */
#define MAILBOX_MSG_LEN_MAX 12
typedef enum _MailboxMsgType
{
E_MAILBOX_CMD_NULL = 0,
E_MAILBOX_CMD_PM_TO_RISC_KEY_VAL = 1,
E_MAILBOX_CMD_PM_TO_RISC_KEY_UPSPRING = 2,
E_MAILBOX_CMD_PM_TO_RISC_KEY_COMBO = 3,
E_MAILBOX_CMD_PM_TO_RISC_WAKEUP = 4,
E_MAILBOX_CMD_RISC_TO_PM_POWER_OFF_ACK = 5,
E_MAILBOX_CMD_RISC_TO_PM_STAND_BY = 6,
E_MAILBOX_CMD_RISC_TO_PM_NORMAL = 7,
E_MAILBOX_CMD_PM_TO_RISC_IR_VAL = 8,
E_MAILBOX_CMD_PM_TO_RISC_IR_REPEAT = 9,
E_MAILBOX_CMD_PM_TO_RISC_POWER_OFF = 10,
E_MAILBOX_CMD_PM_TO_RISC_HEART_MONITOR = 11,
E_MAILBOX_CMD_PM_TO_RISC_FACTORY_MODE = 12,
E_MAILBOX_CMD_RISC_TO_PM_LED_MODE_OFF = 13,
E_MAILBOX_CMD_RISC_TO_PM_LED_MODE_ON = 14,
E_MAILBOX_CMD_RISC_TO_PM_FIX_MODE_OFF = 15,
E_MAILBOX_CMD_RISC_TO_PM_FIX_MODE_ON = 16,
E_MAILBOX_CMD_RISC_TO_PM_CUR_MAIN_CHANNEL_HDMI0 = 17,
E_MAILBOX_CMD_RISC_TO_PM_CUR_MAIN_CHANNEL_HDMI1 = 18,
E_MAILBOX_CMD_RISC_TO_PM_CUR_MAIN_CHANNEL_DP0 = 19,
E_MAILBOX_CMD_RISC_TO_PM_CUR_MAIN_CHANNEL_DP1 = 20,
E_MAILBOX_CMD_RISC_TO_PM_FACTORY_OFF = 21,
E_MAILBOX_CMD_RISC_TO_PM_FACTORY_ON = 22,
E_MAILBOX_CMD_RISC_TO_PM_CUR_SUB_CHANNEL_HDMI0 = 23,
E_MAILBOX_CMD_RISC_TO_PM_CUR_SUB_CHANNEL_HDMI1 = 24,
E_MAILBOX_CMD_RISC_TO_PM_CUR_SUB_CHANNEL_DP0 = 25,
E_MAILBOX_CMD_RISC_TO_PM_CUR_SUB_CHANNEL_DP1 = 26,
E_MAILBOX_CMD_RISC_TO_PM_SET_LED_OFF = 27,
E_MAILBOX_CMD_RISC_TO_PM_SET_LED_ON = 28,
E_MAILBOX_CMD_RISC_TO_PM_SET_LED_BREATH = 29,
E_MAILBOX_CMD_RISC_TO_PM_SET_LED_ON1 = 30,
E_MAILBOX_CMD_RISC_TO_PM_SET_LED_ON2 = 31,
E_MAILBOX_CMD_RISC_TO_PM_SET_LED_ON3 = 32,
E_MAILBOX_CMD_PM_TO_RISC_LOCK_MODE = 33,
E_MAILBOX_CMD_MAX = 127
}MailboxMsgType;
typedef enum _WakeUPType
{
E_WAKE_UP_TYPE_POWER_ON = 0,
E_WAKE_UP_TYPE_HDMI_CABLE,
E_WAKE_UP_TYPE_DP_CABLE,
E_WAKE_UP_TYPE_TYPE_C_CABLE,
E_WAKE_UP_TYPE_HDMI_TMDS,
E_WAKE_UP_TYPE_HDMI_CEC,
E_WAKE_UP_TYPE_DP_AUX,
E_WAKE_UP_TYPE_TYPE_C_CC_CMD,
E_WAKE_UP_TYPE_KEY,
E_WAKE_UP_TYPE_IR,
E_WAKE_UP_TYPE_DP_GPIO,
E_WAKE_UP_TYPE_STANDBY_TO_POWEROFF,
}WakeUPType;
typedef struct _MailboxMsgHeader
{
UCHAR8 u8MsgType;
USHORT16 u16MsgLen; /**< little endien */
UCHAR8 u8Crc;
}__attribute__((packed))MailboxMsgHeader;
typedef struct _MailboxMsg
{
MailboxMsgHeader stMsgHeader;
UCHAR8 au8MsgBody[MAILBOX_MSG_LEN_MAX];
}MailboxMsg;
Status Hv_Drv_MailboxRecvMsg(MailboxMsg *pstMsg);
Status Hv_Drv_MailboxSendMsg(MailboxMsg *pstMsg);
Status Hv_Drv_MailboxGetKeyValue(MailboxMsg *pstMsg, UCHAR8 *pucKeyValue);
Status Hv_Drv_MailboxGetIRKeyValue(MailboxMsg *pstMsg, UCHAR8 *pucSysCode, UCHAR8 *pucKeyValue);
UINT32 Hv_Drv_Mailbox_GetPQToolCmdPort(VOID);
UINT32 Hv_Drv_Mailbox_GetSwIntStatus(VOID);
VOID Hv_Drv_Mailbox_ClearSwIntStatus(UINT32 uiSwintStatus);
#endif /**< __HV_DRV_MAILBOX_H__ */