diff --git a/demos/mcfw_api_demos/mcfw_demo/demo_display.c b/demos/mcfw_api_demos/mcfw_demo/demo_display.c index 4083d7f..8c9ab3f 100755 --- a/demos/mcfw_api_demos/mcfw_demo/demo_display.c +++ b/demos/mcfw_api_demos/mcfw_demo/demo_display.c @@ -1096,7 +1096,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 +1197,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/mcfw/interfaces/ti_vdis_timings.h b/mcfw/interfaces/ti_vdis_timings.h index 237de76..9022786 100755 --- a/mcfw/interfaces/ti_vdis_timings.h +++ b/mcfw/interfaces/ti_vdis_timings.h @@ -101,6 +101,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..8769f5d 100755 --- a/mcfw/src_bios6/links_m3vpss/display/displayLink_drv.c +++ b/mcfw/src_bios6/links_m3vpss/display/displayLink_drv.c @@ -55,17 +55,19 @@ 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_60 == displayRes)) { - isSdDef = TRUE; + isInterlacedDisplay = TRUE; } - return isSdDef; + return isInterlacedDisplay; } static @@ -73,7 +75,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 +907,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 +922,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); } @@ -1080,7 +1097,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++) { @@ -1158,10 +1175,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 = 1080; pObj->enableFieldSeparatedInputMode = FALSE; @@ -1172,7 +1191,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 +1220,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, diff --git a/mcfw/src_bios6/links_m3vpss/system/system_dctrl.c b/mcfw/src_bios6/links_m3vpss/system/system_dctrl.c index 7de649b..819118d 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 */ diff --git a/mcfw/src_linux/mcfw_api/ti_vdis.c b/mcfw/src_linux/mcfw_api/ti_vdis.c index c4e5514..e68cfdc 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_60); + 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;