blob: 9870560c10e61094997b58dde332bf7c4360c0df [file] [log] [blame]
/*******************************************************************************
* Copyright (C) Marvell International Ltd. and its affiliates
*
* Marvell GPL License Option
*
* If you received this File from Marvell, you may opt to use, redistribute and/or
* modify this File in accordance with the terms and conditions of the General
* Public License Version 2, June 1991 (the "GPL License"), a copy of which is
* available along with the File in the license.txt file or by writing to the Free
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
* on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
*
* THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
* WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
* DISCLAIMED. The GPL License provides additional details about this warranty
* disclaimer.
********************************************************************************/
#ifndef __VPP_BE_HDMITX_H__
#define __VPP_BE_HDMITX_H__
int BE_HDMIPHY_SetDAMP (THINVPP_OBJ *vpp_obj, int value);
int BE_HDMIPHY_SetEAMP(THINVPP_OBJ *vpp_obj, int value);
#if BOOTLOADER_FASTLOGO
#define NEW_HDMI_TX_IP
/*-----------------------------------------------------------------------------
* Macros
*-----------------------------------------------------------------------------
*/
#define VPP_BE_HDMITX_MAX_PKT_INDEX 6
/*-----------------------------------------------------------------------------
* Enums, Structures and Unions
*-----------------------------------------------------------------------------
*/
typedef enum tagVPP_BE_HDMITX_OUT_MODE
{
VPP_BE_HDMITX_OUT_UNDEF = 0x00,
VPP_BE_HDMITX_OUT_DVI,
VPP_BE_HDMITX_OUT_HDMI,
}VPP_BE_HDMITX_OUT_MODE;
typedef enum tagVPP_BE_HDMITX_AUDIO_BUS
{
VPP_BE_HDMITX_AUDIO_I2S,
VPP_BE_HDMITX_AUDIO_SPDIF,
VPP_BE_HDMITX_AUDIO_BUS_MAX
}VPP_BE_HDMITX_AUDIO_BUS, *PVPP_BE_HDMITX_AUDIO_BUS;
// Audio Input clock sampling freq types
typedef enum tagVPP_BE_HDMITX_AUDIO_INP_CLK_SEL
{
VPP_BE_HDMITX_AUD_INP_CLK_128fs = 0,
VPP_BE_HDMITX_AUD_INP_CLK_256fs,
VPP_BE_HDMITX_AUD_INP_CLK_384fs,
VPP_BE_HDMITX_AUD_INP_CLK_512fs,
VPP_BE_HDMITX_AUD_INP_CLK_MAX
}VPP_BE_HDMITX_AUDIO_INP_CLK_SEL;
// Color Depth
typedef enum tagVPP_BE_HDMITX_BIT_DEPTH
{
VPP_BE_HDMITX_BIT_DEPTH_8 = 4,
VPP_BE_HDMITX_BIT_DEPTH_10,
VPP_BE_HDMITX_BIT_DEPTH_12,
}VPP_BE_HDMITX_BIT_DEPTH;
// Pixel repetition types
typedef enum tagVPP_BE_HDMITX_PIXEL_RPT_TYPE
{
VPP_BE_HDMITX_PIXEL_RPT_NONE = 0,
VPP_BE_HDMITX_PIXEL_RPT_BY_2 = 1,
VPP_BE_HDMITX_PIXEL_RPT_BY_3,
VPP_BE_HDMITX_PIXEL_RPT_BY_4,
VPP_BE_HDMITX_PIXEL_RPT_BY_5,
VPP_BE_HDMITX_PIXEL_RPT_BY_6,
VPP_BE_HDMITX_PIXEL_RPT_BY_7,
VPP_BE_HDMITX_PIXEL_RPT_BY_8,
VPP_BE_HDMITX_PIXEL_RPT_BY_9,
VPP_BE_HDMITX_PIXEL_RPT_BY_10,
VPP_BE_HDMITX_PIXEL_RPT_MAX
}VPP_BE_HDMITX_PIXEL_RPT_TYPE;
// HDMI Packet Types
typedef enum tagVPP_BE_HDMITX_HOST_PKT_TYPE
{
VPP_BE_HDMITX_PKT_NONE = 0x00,
VPP_BE_HDMITX_NULL_PKT,
VPP_BE_HDMITX_ACR_PKT,
VPP_BE_HDMITX_AUD_SAMP_PKT,
VPP_BE_HDMITX_GC_PKT,
VPP_BE_HDMITX_ACP_PKT,
VPP_BE_HDMITX_ISRC1_PKT,
VPP_BE_HDMITX_ISRC2_PKT,
VPP_BE_HDMITX_1BIT_AUD_SAMP_PKT,
VPP_BE_HDMITX_DST_AUD_PKT,
VPP_BE_HDMITX_HBR_AUD_PKT,
VPP_BE_HDMITX_GAMUT_METADATA_PKT,
VPP_BE_HDMITX_VENDOR_INFOFRM_PKT = 0x81,
VPP_BE_HDMITX_AVI_INFOFRM_PKT,
VPP_BE_HDMITX_SPD_INFOFRM_PKT,
VPP_BE_HDMITX_AUD_INFOFRM_PKT,
VPP_BE_HDMITX_MPEG_INFOFRM_PKT,
VPP_BE_HDMITX_MAX_PKT,
}VPP_BE_HDMITX_HOST_PKT_TYPE, *PVPP_BE_HDMITX_HOST_PKT_TYPE;
// Host packet transfer mode
typedef enum tagVPP_BE_HDMITX_HOST_PKT_TX_MODE
{
VPP_BE_HDMITX_HOST_PKT_TX_ONCE = 0,
VPP_BE_HDMITX_HOST_PKT_TX_EVERY_VSYNC,
VPP_BE_HDMITX_HOST_PKT_TX_MAX_MODE
}VPP_BE_HDMITX_HOST_PKT_TX_MODE,*PVPP_BE_HDMITX_HOST_PKT_TX_MODE;
typedef union tagVPP_BE_HDMITX_AUDIO_BUS_PARAMS
{
struct
{
int ClkDelay;
int DataShift;
int DataJustification;
int LeftChnWordSelEdge;
int DataLatchingEdge;
unsigned char PortCfg; // Flag
}I2SParams;
}VPP_BE_HDMITX_AUDIO_BUS_PARAMS, *PVPP_BE_HDMITX_AUDIO_BUS_PARAMS;
typedef struct tagVPP_BE_HDMITX_AUDIO_FMT_PARAMS
{
int Layout;
unsigned char WordLength;
VPP_BE_HDMITX_AUDIO_INP_CLK_SEL InputClk;
unsigned int AcrN;
unsigned int AcrCts;
unsigned char HbrAudio;
unsigned char AudioFmt;
}VPP_BE_HDMITX_AUDIO_FMT_PARAMS, *PVPP_BE_HDMITX_AUDIO_FMT_PARAMS;
typedef struct tagVPP_BE_HDMITX_VIDEO_FMT_PARAMS
{
// RGB/YCbCr
int VideoFmt;
// Display Resolution
int DispRes;
// Color Depth
int ColorDepth;
// Pixel Repetition
VPP_BE_HDMITX_PIXEL_RPT_TYPE PixelRpt;
}VPP_BE_HDMITX_VIDEO_FMT_PARAMS, *PVPP_BE_HDMITX_VIDEO_FMT_PARAMS;
typedef struct tagVPP_BE_HDMITX_AUDIO_CHN_STS
{
unsigned char CpBit;
unsigned char PreEmphasisInfo;
unsigned char CategoryCode;
unsigned char SrcNum;
unsigned char ChnNum;
unsigned char SampFreq;
unsigned char ClkAccuracy;
unsigned char MaxAudSampLen;
unsigned char WordLength; //Based on MaxAudSampLen
unsigned char OrigSampFreq;
}VPP_BE_HDMITX_AUDIO_CHN_STS, *PVPP_BE_HDMITX_AUDIO_CHN_STS;
/*-----------------------------------------------------------------------------
* Function Prototypes
*-----------------------------------------------------------------------------
*/
int BE_HDMITX_LoadDefaultVal(THINVPP_OBJ *vpp_obj);
int BE_HDMITX_EnableAudioPkt(THINVPP_OBJ *vpp_obj,int EnAudio);
int BE_HDMITX_SetVideoFmtParams(THINVPP_OBJ *vpp_obj,
VPP_BE_HDMITX_OUT_MODE OutMode,
PVPP_BE_HDMITX_VIDEO_FMT_PARAMS pVideoParams);
int BE_HDMITX_EnableGCP(THINVPP_OBJ *vpp_obj,int EnableGCP);
int BE_HDMITX_SetMute(THINVPP_OBJ *vpp_obj,int Audio, int Video);
int BE_HDMITX_GetMuteSts(THINVPP_OBJ *vpp_obj,int *pAudio, int *pVideo);
int BE_HDMITX_SendHostPkt(THINVPP_OBJ *vpp_obj, unsigned char PktIndex,
VPP_BE_HDMITX_HOST_PKT_TX_MODE PktTxMode);
int BE_HDMITX_DisableHostPkt(THINVPP_OBJ *vpp_obj, unsigned char PktIndex,
VPP_BE_HDMITX_HOST_PKT_TX_MODE PktTxMode);
int BE_HDMITX_SetHostPktTxData(THINVPP_OBJ *vpp_obj, unsigned char pktIndex, unsigned char *pPktData);
int BE_HDMITX_ClearHostPktTxData(THINVPP_OBJ *vpp_obj, unsigned char pktIndex, unsigned char bcmType);
int BE_HDMITX_SyncHostPktTxOnceStatus(THINVPP_OBJ *vpp_obj, unsigned char *pPktTxOnceStatus);
int BE_HDMITX_ResetFifo(THINVPP_OBJ *vpp_obj);
int BE_HDMITX_EnablePhyFifo(THINVPP_OBJ *vpp_obj, int enable, int bufWrite);
int BE_HDMITX_SetMode(THINVPP_OBJ *vpp_obj,VPP_BE_HDMITX_OUT_MODE OutMode);
int BE_HDMIPHY_LoadDefaultVal (THINVPP_OBJ *vpp_obj);
int BE_HDMIPHY_EnableTmds (THINVPP_OBJ *vpp_obj,int Enable);
#endif // __VPP_BE_HDMITX_H__
#endif