常常遇到这种情况:公版默认是3个HDMI 口,而客户会根据自己的结构的关系或者规格的限制,会交换HDMI port,比如原来的HDMI1当作HDMI3使用。
code上更改的方法有两种:一种是更改UI显示;另外一种是更改HDMI PORT;前者更改比较简单,但是更改地方很多,不是根本解决之道,以下主要介绍更改HDMI port的code改动:
更改之前,首先要确定你要将哪个口换到哪个口上,然后再在原来的基础上去做code改动,具体涉及code如下:
1,bd_XXXX.h
#define INPUT_HDMI1_MUX INPUT_PORT_DVI1
#define INPUT_HDMI2_MUX INPUT_PORT_DVI3
#define INPUT_HDMI3_MUX INPUT_PORT_DVI0
/// for PWS path mapping
#define PWS_INPUT_HDMI1_PATH _HDMI3_
#define PWS_INPUT_HDMI2_PATH _HDMI4_
#define PWS_INPUT_HDMI3_PATH _HDMI1_
2,//apiXC_Sys.cvoid _MApi_XC_DDCRam_Init(void)//sample code for DDC RAM, need remove later
{
XC_DDCRAM_PROG_INFO stDDCRamInfo;
.....
#if (INPUT_HDMI_VIDEO_COUNT >= 1)
// init Digital EDID 0
stDDCRamInfo.EDID = EDID_DVI_0;
stDDCRamInfo.u16EDIDSize = 256;
#if (MS_BOARD_TYPE_SEL == BD_MST047B_10APU_TECO)
stDDCRamInfo.eDDCProgType = E_XC_PROG_DVI1_EDID;
#else
stDDCRamInfo.eDDCProgType = E_XC_PROG_DVI0_EDID;
#endif
stDDCRamInfo.u16CECPhyAddr = 0x10; //0x5555;
stDDCRamInfo.u8CECPhyAddrIdxL = 0xA2; // the CEC physical address start from 0xA1 byte in EDID
stDDCRamInfo.u8CECPhyAddrIdxH = 0xA1;
MDrv_HDMI_PROG_DDCRAM(&stDDCRamInfo, sizeof(stDDCRamInfo));
#endif
....
stDDCRamInfo.eDDCProgType = E_XC_PROG_DVI2_EDID;
....
stDDCRamInfo.eDDCProgType = E_XC_PROG_DVI3_EDID;
...
}
|