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.

RTOS/TDA2P-ACD: Dss core open failed!!

Part Number: TDA2P-ACD

Tool/software: TI-RTOS

Hi Rishabh,

I am reopening the thread,

My current usecase with modifications is as below,

"

NetworkRx (A15) -> Decode -> VPE -> Sync -> Dup -> Alg_A (DSP1) -> DssM2mWb -> Display_Video

Dup -> Alg_B (DSP2) -> Alg_C (DSP1)

CANLink (IPU1_0)

OverlayLink (IPU1_0) -> Display_Guidelines

OverlayLink (IPU1_0) -> Display_Grpx

"

As per your suggestion earlier, I have used two different displays for overlaying, one normal display link & another GFX display link. So currently I am using three display links as below,

1. Display_Video with "pPrm_Video->displayId = DISPLAY_LINK_INST_DSS_VID1"

2. Display_Guidelines with "pPrm_Video2->displayId = DISPLAY_LINK_INST_DSS_VID2" &

3. Display_Grpx with "pPrm_Grpx->displayId = DISPLAY_LINK_INST_DSS_GFX1"

I have added a new function in "vision_sdk\apps\src\rtos\usecases\common\chains_common.c" as below,

""""""

Void ChainsCommon_MyUsecase_SetDisplayPrms(
                                DisplayLink_CreateParams *pPrm_Video,
                                DisplayLink_CreateParams *pPrm_Video2,
                                DisplayLink_CreateParams *pPrm_Grpx,
                                Chains_DisplayType displayType,
                                UInt32 displayWidth,
                                UInt32 displayHeight
                                )
{
    if(pPrm_Video)
    {
        if((displayType == CHAINS_DISPLAY_TYPE_SDTV_NTSC) ||
          (displayType == CHAINS_DISPLAY_TYPE_SDTV_PAL))
        {
            pPrm_Video->displayScanFormat = SYSTEM_SF_INTERLACED;
        }

        pPrm_Video->rtParams.tarWidth         = displayWidth;
        pPrm_Video->rtParams.tarHeight        = displayHeight;
        pPrm_Video->displayId                 = DISPLAY_LINK_INST_DSS_VID1;
    }

    if(pPrm_Video2)
    {
        if((displayType == CHAINS_DISPLAY_TYPE_SDTV_NTSC) ||
          (displayType == CHAINS_DISPLAY_TYPE_SDTV_PAL))
        {
            pPrm_Video2->displayScanFormat = SYSTEM_SF_INTERLACED;
        }

        pPrm_Video2->rtParams.posX             = 0U;
        pPrm_Video2->rtParams.posY             = 0U;
        pPrm_Video2->rtParams.tarWidth         = 256U;
        pPrm_Video2->rtParams.tarHeight        = 480U;
        pPrm_Video2->displayId                 = DISPLAY_LINK_INST_DSS_VID2;
    }

    if(pPrm_Grpx)
    {
        pPrm_Grpx->rtParams.posX             = 0U;
        pPrm_Grpx->rtParams.posY             = 0U;
        pPrm_Grpx->rtParams.tarWidth         = 640U;
        pPrm_Grpx->rtParams.tarHeight        = 480U;
        pPrm_Grpx->displayId                  = DISPLAY_LINK_INST_DSS_GFX1;

        if((displayType == CHAINS_DISPLAY_TYPE_SDTV_NTSC) ||
          (displayType == CHAINS_DISPLAY_TYPE_SDTV_PAL))
        {
            pPrm_Grpx->displayScanFormat = SYSTEM_SF_INTERLACED;
        }
    }    
}  

""""""

But with above create time configurations, when I start my usecase I get below assertion,

"

[IPU1-0]      7.769627 s:  DISPLAY: Create in progress !!!
[IPU1-0]      7.770145 s:  DISPLAY: Create Done !!!
[IPU1-0]      7.770267 s:  DISPLAY: Create in progress !!!
[IPU1-0]      7.770481 s: dispcore/src/vpscore_dss.c @ Line 441:
[IPU1-0]      7.770572 s: Core for this instance is already opened
[IPU1-0]      7.770694 s: dispdrv/src/vpsdrv_displayCore.c @ Line 411:
[IPU1-0]      7.770786 s: Dss core open failed!!
[IPU1-0]      7.770877 s: dispdrv/src/vpsdrv_displayApi.c @ Line 348:
[IPU1-0]      7.770938 s: Core open failed!!
[IPU1-0]      7.771030 s:  Assertion @ Line: 386 in displayLink_drv.c: pObj->displayHndl != NULL : failed !!!
[IPU1-0]      7.771457 s:  Assertion @ Line: 386 in displayLink_drv.c: pObj->displayHndl != NULL : failed !!!

"

I have referred "lvds_vip_sv_analytics_us" usecase, where 4 display links are used with below display ID's,

1. Display_sv with "pSvDisplay->displayId = DISPLAY_LINK_INST_DSS_VID1"

2. Display_sv_org with "pSvOrgDisplay->displayId = DISPLAY_LINK_INST_DSS_VID2"

3. Display_alg with "pFrontCamDisplay->displayId = DISPLAY_LINK_INST_DSS_VID3" and

4. Display_Grpx with "pPrm_Grpx->displayId = DISPLAY_LINK_INST_DSS_GFX1"

How do I fix these assertions. Please suggest.

Regards,

Abhay

  • Hi Abhay,

    Is this the complete use case file?
    Can you check what is the instance for which this failure occurred.
    It is possible Gprx is used by someone else.

    Regards,
    Rishabh
  • Hi Rishabh,

    yes it is the complete usecase. I found that in our usecase we are using DSSM2M link(with 2 input pipelines using VID2 & VID3 driver instances) along with two more separate display links (which are using VID1 & VID2 driver instance ID's). So here VID2 driver instance is being used twice and so the assertion was evident. And in vision sdk only 3 display links are allowed at a time (VID1, VID2 & VID3) along with one graphics display (GFX).

    I tried by removing DSSM2M link from the pipeline and the assertion was fixed. The very purpose of using DSSM2M link was to split the input in two for displaying split view on HDMI, which stills is required.
    So is there any way that we can add support for extra video driver instance say VID4. Is this possible and if yes what all changes could be required in vision sdk.

    Thanks,
    Abhay
  • Hi Abhay,

    You cannot have extra video instance as video instance has to map to DSS HW and you are already using all the available instances.
    You have to look at other ways of designing this use case.

    Regards,
    Rishabh
  • Ok Rishabh.
    Thank you for your inputs.

    Regards,
    Abhay