This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PROCESSOR-SDK-DRA8X-TDA4X: J721E: DSS can not output image by DSI interfaces

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:

 csl_vpId = CSL_DSS_VP_ID_3;
    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;
 /* Configure DCTRL : modes / layers / paths etc */
    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.dvoFormat = FVID2_DV_GENERIC_DISCSYNC;
    vpPrm->lcdOpTimingCfg.videoIfWidth = FVID2_VIFW_24BIT;
    vpPrm->lcdPolarityCfg.actVidPolarity = FVID2_POL_HIGH;
    vpPrm->lcdPolarityCfg.pixelClkPolarity = FVID2_EDGE_POL_FALLING;
    vpPrm->lcdPolarityCfg.hsPolarity = FVID2_POL_HIGH;
    vpPrm->lcdPolarityCfg.vsPolarity = FVID2_POL_HIGH;
    for(cnt = 0; cnt < num_vids; cnt++) {
        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->overlayId = csl_ovrId;
    ovlPrm->overlayCfg.backGroundColor = 0x00ff00;
    layerPrm->overlayId = csl_ovrId;
    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];
    }
    /* Set up DSS using DCTRL */
    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");
    }
    if(retVal == FVID2_SOK) {
        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");
    }
    if(retVal == FVID2_SOK) {
        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");
    }
    if(retVal == FVID2_SOK) {
        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");
    }
    if(retVal == FVID2_SOK) {
        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");
    }
 
then use dma API to graphy an image to VID1 like graphy telltale.
but nothing show on the FPD screen.
i have check the ds90ub941 and ds90ub924 can work in color bar mode.
could anyone help me figure out the problem?
best regards!