Part Number: PROCESSOR-SDK-DRA8X-TDA4X
hi all experts,
my borad is J721EVM, RTOS SDK is: psdk_rtos_auto_j7_06_01_00_15
now i run the demo in "psdk_rtos_auto_j7_06_01_00_15/vision_apps/apps/cockpit_demos/"
this demo can show telltale on HDMI display.
now i want output an image to PFD display by DSI interface. The video Path as following:
VID1 -> OVLAY3 -> VP3 -> DSI -> PFD Display
so i modify the cockpit_demos code:
in appDcrtlInit API, i do the following setting:
dctrl_vpId = DSS_DCTRL_NODE_VP3;
csl_ovrId = CSL_DSS_OVERLAY_ID_3;
dctrl_ovrId = DSS_DCTRL_NODE_OVERLAY3;
dctrl_eptId = DSS_DCTRL_NODE_DSI;
num_vids = 1;
csl_vidId[0] = CSL_DSS_VID_PIPE_ID_VID1;
dctrl_vidId[0] = DSS_DCTRL_NODE_VID1;
csl_layer[0] = CSL_DSS_OVERLAY_LAYER_NUM_0;
vpPrm->vpId = csl_vpId;
vpPrm->lcdOpTimingCfg.mInfo.standard = FVID2_STD_CUSTOM;
vpPrm->lcdOpTimingCfg.mInfo.pixelClock = 63700U;
vpPrm->lcdOpTimingCfg.mInfo.width = 1280;
vpPrm->lcdOpTimingCfg.mInfo.height = 720;
vpPrm->lcdOpTimingCfg.mInfo.hFrontPorch = 20U;
vpPrm->lcdOpTimingCfg.mInfo.hBackPorch = 40U;
vpPrm->lcdOpTimingCfg.mInfo.hSyncLen = 20U;
vpPrm->lcdOpTimingCfg.mInfo.vFrontPorch = 20U;
vpPrm->lcdOpTimingCfg.mInfo.vBackPorch = 20U;
vpPrm->lcdOpTimingCfg.mInfo.vSyncLen = 15U;
vpPrm->lcdOpTimingCfg.mInfo.scanFormat = FVID2_SF_PROGRESSIVE;
vpPrm->lcdOpTimingCfg.mInfo.fps = 60;
vpPrm->lcdOpTimingCfg.videoIfWidth = FVID2_VIFW_24BIT;
vpPrm->lcdPolarityCfg.pixelClkPolarity = FVID2_EDGE_POL_FALLING;
vpPrm->lcdPolarityCfg.hsPolarity = FVID2_POL_HIGH;
vpPrm->lcdPolarityCfg.vsPolarity = FVID2_POL_HIGH;
pathInfo->edgeInfo[pathInfo->numEdges].startNode = dctrl_vidId[cnt];
pathInfo->edgeInfo[pathInfo->numEdges].endNode = dctrl_ovrId;
pathInfo->numEdges++;
}
pathInfo->edgeInfo[pathInfo->numEdges].startNode = dctrl_ovrId;
pathInfo->edgeInfo[pathInfo->numEdges].endNode = dctrl_vpId;
pathInfo->numEdges++;
pathInfo->edgeInfo[pathInfo->numEdges].startNode = dctrl_vpId;
pathInfo->edgeInfo[pathInfo->numEdges].endNode = dctrl_eptId;
pathInfo->numEdges++;
ovlPrm->overlayCfg.backGroundColor = 0x00ff00;
for(cnt = 0; cnt < CSL_DSS_VID_PIPE_ID_MAX; cnt++) {
layerPrm->pipeLayerNum[cnt] = CSL_DSS_OVERLAY_LAYER_INVALID;
}
for(cnt = 0; cnt < num_vids; cnt++) {
layerPrm->pipeLayerNum[csl_vidId[cnt]] = csl_layer[cnt];
}
retVal = Fvid2_control(g_dctrl_handle, IOCTL_DSS_DCTRL_SET_PATH, pathInfo, NULL);
if(retVal != FVID2_SOK)
System_printf("DSS: ERROR: dctrl set path failed !!!\n");
if(retVal == FVID2_SOK) {
retVal = Fvid2_control(g_dctrl_handle, IOCTL_DSS_DCTRL_SET_VP_PARAMS, vpPrm, NULL);
if(retVal != FVID2_SOK)
System_printf("DSS: ERROR: Dctrl set VP params failed !!!\n");
}
retVal = Fvid2_control(g_dctrl_handle, IOCTL_DSS_DCTRL_SET_OVERLAY_PARAMS, ovlPrm, NULL);
if(retVal != FVID2_SOK)
System_printf("DSS: ERROR: Dctrl set overlay params failed !!!\n");
}
retVal = Fvid2_control(g_dctrl_handle, IOCTL_DSS_DCTRL_SET_LAYER_PARAMS, layerPrm, NULL);
if(retVal != FVID2_SOK)
System_printf("DSS: ERROR: Dctrl set layer params failed !!!\n");
}
advVpParams->vpId = CSL_DSS_VP_ID_3;
retVal = Fvid2_control(g_dctrl_handle, IOCTL_DSS_DCTRL_SET_ADV_VP_PARAMS, advVpParams, NULL);
if(retVal != FVID2_SOK)
System_printf("DSS: ERROR: Dctrl set adv vp params failed !!!\n");
}
retVal = Fvid2_control(g_dctrl_handle, IOCTL_DSS_DCTRL_SET_GLOBAL_DSS_PARAMS, globalDssParams, NULL);
if(retVal != FVID2_SOK)
System_printf("DSS: ERROR: Dctrl set global dss params failed !!!\n");
}