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.

TMDSCSK388: Display Link Error

Part Number: TMDSCSK388
Other Parts Discussed in Thread: DM388

I'm trying to enable capture through HDVPSS in IPNC_RDk 3.9.0

I created links from capture link to SD Display and to streaming. I'm attaching my usecase here.

There are some error in the Display link creation

Assertion @ Line: 852 in links_m3vpss/display/displayLink_drv.c: status == !

stream usecae.pdf



  • Hi Nithin,

    Capture is capture 1920x1080 frames, you could not connect directly this frame size to SD display since SD require 720x480 frame size.
    I think you missed to enable scalar in second capture output.
    Also please note the prevLinkQueId should be set to 1 for displayPrm_SD

    pCaptureOutPrm = &pCaptureInstPrm->outParams[0];
    pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV422I_UYVY;
    pCaptureOutPrm->scEnable = FALSE;
    pCaptureOutPrm->scOutWidth = 1920;
    pCaptureOutPrm->scOutHeight = 1080;
    pCaptureOutPrm->outQueId = 0;
    // Second stream
    pCaptureOutPrm = &pCaptureInstPrm->outParams[1];
    pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV;
    pCaptureOutPrm->scEnable = FALSE;
    pCaptureOutPrm->scOutWidth = 720;
    pCaptureOutPrm->scOutHeight = 480;
    pCaptureOutPrm->outQueId = 1;
    // display link params
    MULTICH_INIT_STRUCT(DisplayLink_CreateParams,displayPrm_SD);
    displayPrm_SD.inQueParams[0].prevLinkId = gVcapModuleContext.captureId;
    displayPrm_SD.inQueParams[0].prevLinkQueId = 2;

    Regards,
    Brijesh
  • Thank you Brijesh

    I added scalar in second capture output, created scalar link.  I'm posting the modifications. Display link is still having some issues. Can you please verify.

    CaptureLink_CreateParams_Init(&capturePrm);

    capturePrm.outQueParams[0].nextLink = ipcOutVpssId;

    capturePrm.outQueParams[1].nextLink = gVcamModuleContext.sclrId[0];

    capturePrm.tilerEnable = FALSE;

    pCaptureInstPrm = &capturePrm.vipInst[0];

    pCaptureInstPrm->vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA;

    pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P;

    pCaptureInstPrm->standard = SYSTEM_STD_1080P_30;

    pCaptureInstPrm->numOutput = 2;

    /* First stream */

    pCaptureOutPrm = &pCaptureInstPrm->outParams[0];

    pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV422P;

    pCaptureOutPrm->scEnable = FALSE;

    pCaptureOutPrm->scOutWidth = 1920;

    pCaptureOutPrm->scOutHeight = 1080;

    pCaptureOutPrm->outQueId = 0;

    /* Second stream */

    pCaptureOutPrm = &pCaptureInstPrm->outParams[1];

    pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV422P;

    pCaptureOutPrm->scEnable = FALSE;

    pCaptureOutPrm->scOutWidth = 1920;

    pCaptureOutPrm->scOutHeight = 1080;

    pCaptureOutPrm->outQueId = 1;

    /* scalar */

    SclrLink_CreateParams_Init(&sclrPrm);

    sclrPrm.inQueParams.prevLinkId = gVcapModuleContext.captureId;

    sclrPrm.inQueParams.prevLinkQueId = 1;

    sclrPrm.outQueParams.nextLink = gVdisModuleContext.displayId[VDIS_DEV_SD];

    sclrPrm.tilerEnable = FALSE;

    sclrPrm.enableLineSkipSc = FALSE;

    sclrPrm.inputFrameRate = 30;

    sclrPrm.outputFrameRate = 30;

    sclrPrm.scaleMode = DEI_SCALE_MODE_ABSOLUTE;

    sclrPrm.outScaleFactor.absoluteResolution.outWidth = 720;

    sclrPrm.outScaleFactor.absoluteResolution.outHeight = 480;

    sclrPrm.outDataFormat = VF_YUV420SP_UV;

    sclrPrm.pathId = SCLR_LINK_SEC0_SC3;

    // display link params

    MULTICH_INIT_STRUCT(DisplayLink_CreateParams,displayPrm_SD);

    displayPrm_SD.inQueParams[0].prevLinkId = gVcamModuleContext.sclrId[0];

    displayPrm_SD.inQueParams[0].prevLinkQueId = 0;

    displayPrm_SD.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_SD].resolution;

    displayPrm_SD.displayId = DISPLAY_LINK_DISPLAY_SD;

    Thank you and Regards.

  • Hi Nithin,

    Does it still fail at the same place?

    Are you sure that the SD path is not being used by any other driver? 

    Can you please check if it works for YUV422 output from Scalar?

    Rgds,

    Brijesh

  • Hi Brijesh,
    1.Does it still fail at the same place?
    The display link is not created successfully. Now there is a warning message at the log: MSGQ: WARNING: Trying to send command [0x0000] to link [0] on processor [DSP], BUT [DSP] is NOT present on this platform
    and the place failing is different: Assertion @ Line: 220 in links_common/system/system_ipc_msgq.c: 0 : failed !

    2.Are you sure that the SD path is not being used by any other driver?
    I'm customizing the Dm388_CSK application. if the SD path is configured only in the usecase folder, I think then no other driver is using the SD path

    3.Can you please check if it works for YUV422 output from Scalar?
    I checked with YUV422 still that does not resolve the problem.

    Thank you,
    Regards
    Nithin

  • Hi Nithin,

    Can you please check where exactly it fails? it is trying to send message to DSP, which seems not active. Can you please trace in the usecse?

    Rgds,

    Brijesh

  • Hi Brijesh

    This is Link create for my display in Usecase. I have kept an Led On function after the display link create, which is not turning ON. As well as the "usecase setup done" is also not printing.

    Error message is : Assertion @ Line: 220 in links_common/system/system_ipc_msgq.c: 0 : failed

    {
    .......................................
    .......................................
    /* Scaler Link */
    System_linkCreate(gVcapModuleContext.sclrId[0], &sclrPrm, sizeof(sclrPrm));
    gpio_led_on(26);

    /* display link */
    System_linkCreate(gVdisModuleContext.displayId[VDIS_DEV_SD], &displayPrm_SD, sizeof(displayPrm_SD));
    gpio_led_on(27);


    OSA_printf("USECASE SETUP DONE\n");
    }


    Thank you,
    Regards.

  • Hi Nithin,
    you mean scalar creation is failing? can you check sclrId? is it set the correct id?

    Rgds,
    Brijesh
  • Hi Brijesh,
    I think the scalar is failing. ID is set to;

    gVcapModuleContext.sclrId[0] = SYSTEM_LINK_ID_SCLR_INST_0;

    How to resolve Memory allocation issue?

    [ 91.696869] autorun-usecase.sh[114]: [m3vpss ] Memory allocation failed due to insufficient free memory
    [ 91.698025] autorun-usecase.sh[114]: [m3vpss ] 3664: Assertion @ Line: 273 in links_m3vpss/sclr/sclrLink_drv.c: status == FVID2_!

    Thank you
    Regards
  • Hi Nithin,
    If it is really memory allocation issue, you could increase the heap size and should be able to solve.
    But we have really big heap, we could run around 4ch usecases, whereas you have a single single channel capture+Scalar+display usecase. So i think, somewhere the frame size provided to the scalar link is just too huge to be allocated. so it is failing. can you please go inside the scalar link code and see why it gets wrong frame size and fails to allocate buffers?

    Rgds,
    Brijesh