diff --git a/demos/link_api_demos/common/chains_swMs.c b/demos/link_api_demos/common/chains_swMs.c index 8a6df85..93caf75 100755 --- a/demos/link_api_demos/common/chains_swMs.c +++ b/demos/link_api_demos/common/chains_swMs.c @@ -30,7 +30,8 @@ Int32 Chains_swMsGetOutSize(UInt32 outRes, UInt32 * width, UInt32 * height) break; default: case VSYS_STD_1080I_60: - case VSYS_STD_1080P_60: + case VSYS_STD_1080I_50: + case VSYS_STD_1080P_60: case VSYS_STD_1080P_30: *width = 1920; *height = 1080; diff --git a/demos/link_api_sd_demo/sd_demo/SD_demo_swMs.c b/demos/link_api_sd_demo/sd_demo/SD_demo_swMs.c index 9db959f..2093c4c 100755 --- a/demos/link_api_sd_demo/sd_demo/SD_demo_swMs.c +++ b/demos/link_api_sd_demo/sd_demo/SD_demo_swMs.c @@ -30,7 +30,8 @@ Int32 SD_Demo_swMsGetOutSize(UInt32 outRes, UInt32 * width, UInt32 * height) break; default: case VSYS_STD_1080I_60: - case VSYS_STD_1080P_60: + case VSYS_STD_1080I_50: + case VSYS_STD_1080P_60: case VSYS_STD_1080P_30: *width = 1920; *height = 1080; diff --git a/demos/mcfw_api_demos/mcfw_demo/demo_display.c b/demos/mcfw_api_demos/mcfw_demo/demo_display.c index 45af2c3..4b7820c 100755 --- a/demos/mcfw_api_demos/mcfw_demo/demo_display.c +++ b/demos/mcfw_api_demos/mcfw_demo/demo_display.c @@ -93,14 +93,16 @@ char gDemo_ResolutionMenu[] = { "\r\n Select Display" "\r\n =====================" "\r\n" - "\r\n 1: 1080P60" - "\r\n 2: 720P60" - "\r\n 3: XGA" - "\r\n 4: SXGA" - "\r\n 5: NTSC" - "\r\n 6: PAL" - "\r\n 7: 1080P50" - "\r\n 8: 640X480P" + "\r\n 1 : 1080P60" + "\r\n 2 : 720P60" + "\r\n 3 : XGA" + "\r\n 4 : SXGA" + "\r\n 5 : NTSC" + "\r\n 6 : PAL" + "\r\n 7 : 1080P50" + "\r\n 8 : 640X480P" + "\r\n 9 : 1080I60" + "\n\n 10: 1080I50" "\r\n" "\r\n Enter Choice: " @@ -1096,7 +1098,7 @@ int Demo_displaySettings(int demoId) break; } printf(gDemo_ResolutionMenu); - resolution = Demo_getIntValue("Display Id", 1, 8, 1); + resolution = Demo_getIntValue("Display Id", 1,10, 1); switch(resolution) { case 1: if (displayId != VDIS_DEV_SD) @@ -1197,6 +1199,28 @@ int Demo_displaySettings(int demoId) } } break; + case 9: + if (displayId != VDIS_DEV_SD) + { + resolution = VSYS_STD_1080I_60; + validRes = TRUE; + } + else + { + printf("\n Resolution Not supported !!\n"); + } + break; + case 10: + if (displayId != VDIS_DEV_SD) + { + resolution = VSYS_STD_1080I_50; + validRes = TRUE; + } + else + { + printf("\n Resolution Not supported !!\n"); + } + break; default: resolution = VSYS_STD_1080P_60; diff --git a/demos/mcfw_api_demos/mcfw_demo/demo_swms.c b/demos/mcfw_api_demos/mcfw_demo/demo_swms.c index 6121500..8bcb9bd 100755 --- a/demos/mcfw_api_demos/mcfw_demo/demo_swms.c +++ b/demos/mcfw_api_demos/mcfw_demo/demo_swms.c @@ -56,7 +56,8 @@ Int32 Demo_swMsGetOutSize(UInt32 outRes, UInt32 * width, UInt32 * height) default: case VSYS_STD_1080I_60: - case VSYS_STD_1080P_60: + case VSYS_STD_1080I_50: + case VSYS_STD_1080P_60: case VSYS_STD_1080P_50: case VSYS_STD_1080P_30: *width = 1920; diff --git a/mcfw/interfaces/ti_vdis_timings.h b/mcfw/interfaces/ti_vdis_timings.h index 237de76..0fd9df1 100755 --- a/mcfw/interfaces/ti_vdis_timings.h +++ b/mcfw/interfaces/ti_vdis_timings.h @@ -94,6 +94,8 @@ static inline int Vdis_sysfsWrite(char *fileName, char *val) #define VDIS_TIMINGS_1080P_60 "148500,1920/88/148/44,1080/4/36/5,1" #define VDIS_TIMINGS_1080P_50 "148500,1920/528/148/44,1080/4/36/5,1" +/*#define VDIS_TIMINGS_1080P_50 "74250,1920/528/148/44,1080/2/25/5,0"*/ + #define VDIS_TIMINGS_720P_60 "74250,1280/110/220/40,720/5/20/5,1" #define VDIS_TIMINGS_XGA_60 "65000,1024/24/160/136,768/3/29/6,1" #define VDIS_TIMINGS_SXGA_60 "108000,1280/48/248/112,1024/1/38/3,1" @@ -101,6 +103,8 @@ static inline int Vdis_sysfsWrite(char *fileName, char *val) #define VDIS_TIMINGS_576P "27000,720/12/68/64,576/5/39/5,1" #define VDIS_TIMINGS_VGA_CEA "25200,640/16/48/96,480/9/34/2,1" #define VDIS_TIMINGS_VGA_VESA "25175,640/16/48/96,480/11/31/2,1" +#define VDIS_TIMINGS_1080I_60 "74250,1920/88/148/44,1080/2/15/5,0" +#define VDIS_TIMINGS_1080I_50 "74250,1920/528/148/44,1080/2/15/5,0" #define VDIS_MODE_NTSC "ntsc" #define VDIS_MODE_PAL "pal" diff --git a/mcfw/src_bios6/links_m3vpss/display/displayLink_drv.c b/mcfw/src_bios6/links_m3vpss/display/displayLink_drv.c index dc36103..73b1c10 100755 --- a/mcfw/src_bios6/links_m3vpss/display/displayLink_drv.c +++ b/mcfw/src_bios6/links_m3vpss/display/displayLink_drv.c @@ -55,17 +55,21 @@ static inline Bool DisplayLink_drvIsDeiDisplayDrv(DisplayLink_Obj * pObj) } static -Bool DisplayLink_drvIsSDDef(DisplayLink_Obj * pObj) +Bool DisplayLink_drvIsInterlacedDislay(UInt32 displayRes) { - Bool isSdDef = FALSE; + Bool isInterlacedDisplay = FALSE; - if ((VSYS_STD_NTSC == pObj->createArgs.displayRes) + if ((VSYS_STD_NTSC == displayRes) || - (VSYS_STD_PAL == pObj->createArgs.displayRes)) + (VSYS_STD_PAL == displayRes) + || + (VSYS_STD_1080I_50 == displayRes) + || + (VSYS_STD_1080I_60 == displayRes)) { - isSdDef = TRUE; + isInterlacedDisplay = TRUE; } - return isSdDef; + return isInterlacedDisplay; } static @@ -73,7 +77,7 @@ Bool DisplayLink_drvDoInputPitchDoubling(DisplayLink_Obj * pObj) { Bool doPitchDouble = FALSE; - if (DisplayLink_drvIsSDDef(pObj) + if (DisplayLink_drvIsInterlacedDislay(pObj->createArgs.displayRes) && pObj->displayFormat.fieldMerged[0] == FALSE && @@ -905,7 +909,14 @@ Int32 DisplayLink_drvSetResolution(DisplayLink_Obj *pObj, UInt32 resolution) resolution, &pObj->deiDispPrms.scTarWidth, &pObj->deiDispPrms.scTarHeight); - + if (DisplayLink_drvIsInterlacedDislay(resolution)) + { + pObj->deiDispPrms.fmt.scanFormat = FVID2_SF_INTERLACED; + } + else + { + pObj->deiDispPrms.fmt.scanFormat = FVID2_SF_PROGRESSIVE; + } status = DisplayLink_drvSetDeiDispPrmsIctl(pObj); } else @@ -913,13 +924,21 @@ Int32 DisplayLink_drvSetResolution(DisplayLink_Obj *pObj, UInt32 resolution) System_getOutSize(resolution, &pObj->displayFormat.width, &pObj->displayFormat.height); - + if (DisplayLink_drvIsInterlacedDislay(resolution)) + { + pObj->displayFormat.scanFormat = FVID2_SF_INTERLACED; + } + else + { + pObj->deiDispPrms.fmt.scanFormat = FVID2_SF_PROGRESSIVE; + } status = FVID2_setFormat( pObj->displayHndl, &pObj->displayFormat); } UTILS_assert(status == FVID2_SOK); + pObj->createArgs.displayRes = resolution; return(status); } @@ -1072,6 +1091,8 @@ Int32 DisplayLink_drvDisplayCreate(DisplayLink_Obj * pObj) if (pObj->createArgs.displayRes == VSYS_STD_1080I_60 || + pObj->createArgs.displayRes == VSYS_STD_1080I_50 + || pObj->createArgs.displayRes == VSYS_STD_NTSC || pObj->createArgs.displayRes == VSYS_STD_PAL) @@ -1080,7 +1101,7 @@ Int32 DisplayLink_drvDisplayCreate(DisplayLink_Obj * pObj) pFormat->scanFormat = FVID2_SF_INTERLACED; pFormat->fieldMerged[0] = TRUE; - if (DisplayLink_drvIsSDDef(pObj)) + if (DisplayLink_drvIsInterlacedDislay(pObj->createArgs.displayRes)) { for (i = 0; i < pObj->createArgs.numInputQueues; i++) { @@ -1114,6 +1135,11 @@ Int32 DisplayLink_drvDisplayCreate(DisplayLink_Obj * pObj) pFormat->width = 720; pFormat->height = 576; } + if (pObj->createArgs.displayRes == VSYS_STD_1080I_60) + { + pFormat->width = 1920; + pFormat->height = 1080; + } pFormat->fieldMerged[1] = pFormat->fieldMerged[0]; pFormat->fieldMerged[2] = pFormat->fieldMerged[0]; @@ -1158,10 +1184,12 @@ Bool DisplayLink_drvIsFieldSeparatedInput(DisplayLink_Obj * pObj, Bool isFieldSeparatedInput = FALSE; UInt32 fieldMergedHeightNTSC; UInt32 fieldMergedHeightPAL; + UInt32 fieldMergedHeight1080I; - UTILS_assert(DisplayLink_drvIsSDDef(pObj) == TRUE); + UTILS_assert(DisplayLink_drvIsInterlacedDislay(pObj->createArgs.displayRes) == TRUE); fieldMergedHeightNTSC = 240; fieldMergedHeightPAL = 288; + fieldMergedHeight1080I = 540; pObj->enableFieldSeparatedInputMode = FALSE; @@ -1172,7 +1200,9 @@ Bool DisplayLink_drvIsFieldSeparatedInput(DisplayLink_Obj * pObj, { if ((queInfo->chInfo[0].height == fieldMergedHeightNTSC) || - (queInfo->chInfo[0].height == fieldMergedHeightPAL)) + (queInfo->chInfo[0].height == fieldMergedHeightPAL) + || + (queInfo->chInfo[0].height == fieldMergedHeight1080I)) { isFieldSeparatedInput = TRUE; } @@ -1199,7 +1229,7 @@ Void DisplayLink_drvSetFieldSeparatedInfo(DisplayLink_Obj * pObj) status = System_linkGetInfo(pPrm->inQueParams[i].prevLinkId, &pObj->inTskInfo[i]); UTILS_assert(status == FVID2_SOK); - if (DisplayLink_drvIsSDDef(pObj)) + if (DisplayLink_drvIsInterlacedDislay(pObj->createArgs.displayRes)) { pObj->fieldInput[i] = DisplayLink_drvIsFieldSeparatedInput (pObj, @@ -1382,6 +1412,7 @@ Int32 DisplayLink_drvPrintRtStatus(DisplayLink_Obj * pObj, UInt32 elaspedTime) System_displayUnderflowPrint(TRUE, TRUE); System_memPrintHeapStatus(); } + Vps_printf("@@@@@@@@display mode %d @@@@@\n",pObj->createArgs.displayRes); return 0; } diff --git a/mcfw/src_bios6/links_m3vpss/system/system_dctrl.c b/mcfw/src_bios6/links_m3vpss/system/system_dctrl.c index 625f947..586feed 100755 --- a/mcfw/src_bios6/links_m3vpss/system/system_dctrl.c +++ b/mcfw/src_bios6/links_m3vpss/system/system_dctrl.c @@ -34,10 +34,12 @@ Vps_DcConfig gSystem_dctrlTriDisplayConfigDvo2 = { {VPS_DC_GRPX0_INPUT_PATH, VPS_DC_HDMI_BLEND} , {VPS_DC_GRPX1_INPUT_PATH, VPS_DC_HDCOMP_BLEND} , {VPS_DC_GRPX1_INPUT_PATH, VPS_DC_DVO2_BLEND}, - {VPS_DC_GRPX2_INPUT_PATH, VPS_DC_HDMI_BLEND} - } + {VPS_DC_GRPX2_INPUT_PATH, VPS_DC_HDMI_BLEND}, + {VPS_DC_MAIN_INPUT_PATH, VPS_DC_VCOMP}, + {VPS_DC_AUX_INPUT_PATH, VPS_DC_HDCOMP_MUX} + } , - 13, + 15, /* VENC information */ { /* Mode information */ @@ -92,9 +94,11 @@ Vps_DcConfig gSystem_dctrlTriDisplayConfigHdmi = { {VPS_DC_GRPX0_INPUT_PATH, VPS_DC_HDCOMP_BLEND}, {VPS_DC_GRPX1_INPUT_PATH, VPS_DC_DVO2_BLEND}, {VPS_DC_GRPX2_INPUT_PATH, VPS_DC_SDVENC_BLEND}, - {VPS_DC_GRPX2_INPUT_PATH, VPS_DC_HDMI_BLEND} + {VPS_DC_GRPX2_INPUT_PATH, VPS_DC_HDMI_BLEND}, + {VPS_DC_MAIN_INPUT_PATH, VPS_DC_VCOMP}, + {VPS_DC_AUX_INPUT_PATH, VPS_DC_HDCOMP_MUX} } , - 14, + 16, /* VENC information */ { /* Mode information */ @@ -244,7 +248,8 @@ Int32 System_getClk(UInt32 displayRes) switch(displayRes) { case VSYS_STD_1080P_30: case VSYS_STD_1080I_60: - clkValue = 74250u; + case VSYS_STD_1080I_50: + clkValue = 74250u; break; case VSYS_STD_720P_60: clkValue = 74250; diff --git a/mcfw/src_bios6/links_m3vpss/system/system_dctrl_modeInfo.c b/mcfw/src_bios6/links_m3vpss/system/system_dctrl_modeInfo.c index 5c5acbc..b724818 100755 --- a/mcfw/src_bios6/links_m3vpss/system/system_dctrl_modeInfo.c +++ b/mcfw/src_bios6/links_m3vpss/system/system_dctrl_modeInfo.c @@ -41,6 +41,9 @@ Int32 System_getVencMode(Int32 resolution) case VSYS_STD_1080I_60: vencMode = FVID2_STD_1080I_60; break; + case VSYS_STD_1080I_50: + vencMode = FVID2_STD_1080I_50; + break; case VSYS_STD_1080P_60: vencMode = FVID2_STD_1080P_60; break; diff --git a/mcfw/src_bios6/links_m3vpss/system/system_m3vpss.c b/mcfw/src_bios6/links_m3vpss/system/system_m3vpss.c index ab3335b..97c8ecf 100755 --- a/mcfw/src_bios6/links_m3vpss/system/system_m3vpss.c +++ b/mcfw/src_bios6/links_m3vpss/system/system_m3vpss.c @@ -449,7 +449,8 @@ Int32 System_getOutSize(UInt32 outRes, UInt32 * width, UInt32 * height) break; default: case VSYS_STD_1080I_60: - case VSYS_STD_1080P_60: + case VSYS_STD_1080I_50: + case VSYS_STD_1080P_60: case VSYS_STD_1080P_50: case VSYS_STD_1080P_30: *width = 1920; diff --git a/mcfw/src_linux/mcfw_api/ti_vdis.c b/mcfw/src_linux/mcfw_api/ti_vdis.c index c4e5514..1e3e18d 100755 --- a/mcfw/src_linux/mcfw_api/ti_vdis.c +++ b/mcfw/src_linux/mcfw_api/ti_vdis.c @@ -2034,6 +2034,12 @@ Int32 Vdis_setResolution(VDIS_DEV devId, UInt32 resolution) case VSYS_STD_VGA_60: Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDMI, VDIS_TIMINGS_VGA_CEA); break; + case VSYS_STD_1080I_60: + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDMI, VDIS_TIMINGS_1080I_60); + break; + case VSYS_STD_1080I_50: + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDMI, VDIS_TIMINGS_1080I_50); + break; default: printf("\n Resolution not supported for HDMI!! \n"); break; @@ -2061,6 +2067,12 @@ Int32 Vdis_setResolution(VDIS_DEV devId, UInt32 resolution) case VSYS_STD_SXGA_60: Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDCOMP, VDIS_TIMINGS_SXGA_60); break; + case VSYS_STD_1080I_60: + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDCOMP, VDIS_TIMINGS_1080I_60); + break; + case VSYS_STD_1080I_50: + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDCOMP, VDIS_TIMINGS_1080I_50); + break; default: printf("\n Resolution not supported for HDCOMP!! \n"); break; @@ -2086,6 +2098,12 @@ Int32 Vdis_setResolution(VDIS_DEV devId, UInt32 resolution) case VSYS_STD_SXGA_60: Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_DVO2, VDIS_TIMINGS_SXGA_60); break; + case VSYS_STD_1080I_60: + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_DVO2, VDIS_TIMINGS_1080I_60); + break; + case VSYS_STD_1080I_50: + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_DVO2, VDIS_TIMINGS_1080I_50); + break; default: printf("\n Resolution not supported for DVO2!! \n"); break; @@ -2238,6 +2256,14 @@ Int32 Vdis_setResolution(VDIS_DEV devId, UInt32 resolution) Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDCOMP, VDIS_TIMINGS_576P); Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_DVO2 , VDIS_TIMINGS_576P); break; + case VSYS_STD_1080I_60: + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDCOMP, VDIS_TIMINGS_1080I_60); + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_DVO2, VDIS_TIMINGS_1080I_60); + break; + case VSYS_STD_1080I_50: + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDCOMP, VDIS_TIMINGS_1080I_50); + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_DVO2, VDIS_TIMINGS_1080I_50); + break; default: printf("\n Resolution not supported for this Venc!! \n"); break; @@ -2281,6 +2307,12 @@ Int32 Vdis_setResolution(VDIS_DEV devId, UInt32 resolution) case VSYS_STD_VGA_60: Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDMI, VDIS_TIMINGS_VGA_CEA); break; + case VSYS_STD_1080I_60: + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDMI, VDIS_TIMINGS_1080I_60); + break; + case VSYS_STD_1080I_50: + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDMI, VDIS_TIMINGS_1080I_50); + break; default: printf("\n Resolution not supported for HDMI!! \n"); break; @@ -2338,6 +2370,14 @@ Int32 Vdis_setResolution(VDIS_DEV devId, UInt32 resolution) Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDCOMP, VDIS_TIMINGS_VGA_CEA); Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDMI, VDIS_TIMINGS_VGA_CEA); break; + case VSYS_STD_1080I_60: + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDCOMP, VDIS_TIMINGS_1080I_60); + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDMI, VDIS_TIMINGS_1080I_60); + break; + case VSYS_STD_1080I_50: + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDCOMP, VDIS_TIMINGS_1080I_50); + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_HDMI, VDIS_TIMINGS_1080I_50); + break; default: printf("\n Resolution not supported for HDMI!! \n"); break; @@ -2379,6 +2419,12 @@ Int32 Vdis_setResolution(VDIS_DEV devId, UInt32 resolution) case VSYS_STD_576P: Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_DVO2 , VDIS_TIMINGS_576P); break; + case VSYS_STD_1080I_60: + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_DVO2, VDIS_TIMINGS_1080I_60); + break; + case VSYS_STD_1080I_50: + Vdis_sysfsCmd(3,VDIS_SYSFSCMD_SETTIMINGS, VDIS_SYSFS_DVO2, VDIS_TIMINGS_1080I_50); + break; default: printf("\n Resolution not supported for DVO2!! \n"); break; diff --git a/mcfw/src_linux/mcfw_api/usecases/multich_common.c b/mcfw/src_linux/mcfw_api/usecases/multich_common.c index 94e4db3..5816ab2 100755 --- a/mcfw/src_linux/mcfw_api/usecases/multich_common.c +++ b/mcfw/src_linux/mcfw_api/usecases/multich_common.c @@ -200,7 +200,8 @@ Int32 MultiCh_swMsGetOutSize(UInt32 outRes, UInt32 * width, UInt32 * height) default: case VSYS_STD_1080I_60: - case VSYS_STD_1080P_60: + case VSYS_STD_1080I_50: + case VSYS_STD_1080P_60: case VSYS_STD_1080P_50: case VSYS_STD_1080P_30: *width = 1920;