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.

TDA2PXEVM: Provide frames from CSI(CAL) to VIP on the fly

Part Number: TDA2PXEVM

How I can configure vsdk links for provide frames for 4x channels from ISS to VIP on the fly? Or maybe have you example for vps drivers? It's need for convert 422I to 420SP without access to DDR and save bandwith DDR from excess RD/WR

as in the example 2.1.4 CAL to VIP 4 Channel Capture (SPRACE3A–April 2018)

  • Hi Valdimir,

    This is supported on TDA2Px but i am not sure if the driver and/or link support the same.

    Let me check on this and come back to you in the first week of Jan 2020

    Regards, Sujith

  • Hi Valdimir,

    This is not supported in the driver or the link of VisionSDK. But supported in the hardware.

    Regards, Sujith

  • Hello, Sujith!

    Thank you for your reply.

    Could you say.

    Does TI has plan to implement this functionality in future releases of VSDK?

    Or maybe are you have example of configuration this functionality in PDK?

  • Hi Valdimir,

    This is not scheduled to be implemented. I will have to check on the reference code.

    Regards, Sujith

  • Hi Valdimir,

    Is your question answered? If so, please mark the thread as answered. If you more questions, please post new query.

    Regards, Sujith

  • Hello, Sujith!

    I wait answer for second part of my question:

    >Or maybe are you have example of configuration this functionality in PDK?

    or other lower layer sample code

  • Hi Valdimir,

    I will try and locate the required configuration. Since, the link/driver do not support this mode, you would require to update the driver and Link to support this feature.

    Regards, Sujith

  • Hello, Sujith!

    Yes of course. It will requere update driver and Link. It's no problem. But need example code with steps how to configure HW.

    Thanks!

    BR, Vladimir

  • Hi Vladmir,

    Sorry for the delayed response, i could finally locate the test code. Can you please below listed changes

    1. Make the CAL not write the received streams into memory
        1.1. Link would require an update
        1.2. In function IssCaptureLink_drvSetDrvCfg () in file vision_sdk\links_fw\src\rtos\links_ipu\iss_capture\issCaptureLink_drv.c
        1.2.1. set drvCalCfg->writeToMem[strmId] = (UInt32)FALSE;
        1.2.2. Assuming other aspects of CAL are setup to receive 4 channels of video stream
    2. Configure the VPORT to send out the received data
        2.1. In function IssCaptureLink_drvSetDrvCfg () in file vision_sdk\links_fw\src\rtos\links_ipu\iss_capture\issCaptureLink_drv.c
        2.2. drvCalCfg->isVportCfgValid[strmId]   = (UInt32)TRUE;
        
            drvCalCfg->vportCfg[0U].enable   = TRUE;
            drvCalCfg->vportCfg[0U].pixClock = 20480U;
            drvCalCfg->vportCfg[0U].width   = 0U;
            drvCalCfg->vportCfg[0U].xBlk    = 0x4U;
            drvCalCfg->vportCfg[0U].yBlk    = 0x3CU;
            drvCalCfg->vportCfg[0U].rdyThr  = 0U;
            drvCalCfg->vportCfg[0U].fsReset = TRUE;
        2.4. Update Driver to send via vPort
            In file \ti_components\drivers\pdk\packages\ti\drv\vps\src\vpslib\hal\src\vpshal_isscal.c
            In function CalSetVportCfg ()
            {
             
                /* Before VPORT register is written i.e. 
                    Before HW_WR_REG32(baseAddr + CAL_VPORT_CTRL2, reg); */
                /* Enable transmission on vports 2, 3 & 4 */
                reg = reg | 0x20U;
                /* Configure the cport ID's */
                reg = reg | 0x01U'
                HW_WR_REG32(baseAddr + CAL_VPORT_CTRL2, reg);
            }
        2.5. Update the config to route CAL output to VIP
            Un Lock MMR access to control register
            i.e. Write to value 0xE2BC3A6D to register CTRL_CORE_MMR_LOCK_3
            Select inputs to VIP
            i.e. Register CTRL_CORE_CONTROL_SPARE_RW, set bits VIP_SEL_4A, VIP_SEL_3A, VIP_SEL_2A & VIP_SEL_1A
    3. Configure VIP normally for 16 bit discrete sync mode reception
        Sync Signals are active high
    4. Start VIP
    5. Start CAL

    Regards, Sujith

  • Hello, Sujith!

    Thanks for your reply. I will check it and return for close the thread or for new questions

    And also small quastion: In step 2.5 I must call PlatformUnlockMMR(). Do I must call PlatformLockMMR() for apply new params

    BR, Vladimir

  • Hi Vladmir,

    Ideally should call lock after programming the MMR.

    Regards, Sujith

  • Hi Vladmir,

    Did you get a chance to check on the steps provided? If you require mote time to check on this, suggest to close this thread and start a new one when you have more questions.

    Regards, Sujith

  • Hello Sujith,

    Sorry for the late reply.

    I reproduced all as in your steps but my pipeline does not get new frames from VIP. I think it's because incorrectly configured pixClock in vportCfg. I will check it.

    drvCalCfg->isVportCfgValid[strmId] = (UInt32)TRUE;

    drvCalCfg->vportCfg[strmId].enable = (UInt32)TRUE;
    drvCalCfg->vportCfg[strmId].pixClock = 20480U;

    I also noticed what VIP2 has transaction data to DDR after start time and has not transaction after any time

    [IPU1-0] 34.355822 s: SCI_VIP2_P1 | 0.000000 0.000000
    [IPU1-0] 34.355914 s: SCI_VIP2_P2 | 0.000051 0.058671
    ..
    [IPU1-0] 155.776733 s: SCI_VIP2_P1 | 0.000000 0.000000
    [IPU1-0] 155.776855 s: SCI_VIP2_P2 | 0.000000 0.000000

    I attached file with changes and config, and file with logs. Could you check my config?

    cal2vip_log.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    [IPU1-0] 23.939943 s: Start DONE!
    [IPU1-0]
    [IPU1-0] ====================
    [IPU1-0] Chains Run-time Menu
    [IPU1-0] ====================
    [IPU1-0]
    [IPU1-0] q: Stop Chain
    [IPU1-0] d: Save ISS Captured Frame
    [IPU1-0] r: Switch Mosaic 4xCam Disp <-> Rear view Disp
    [IPU1-0]
    [IPU1-0] p: Print Performance Statistics
    [IPU1-0]
    [IPU1-0] +: Increase display brightness
    [IPU1-0]
    [IPU1-0] -: Decrease display brightness
    [IPU1-0]
    [IPU1-0] Enter Choice:
    [IPU1-0]
    [IPU1-0] 33.330750 s: arrival_pipeline_printBufferStatistics Start ...
    [IPU1-0] 33.330903 s: [ISSCAPTURE] Buffer Q Status,
    [IPU1-0] 33.330994 s: Empty Q : Elements in Q = 0, Write Idx = 0, Read Idx = 0
    [IPU1-0] 33.331116 s: Full Q : Elements in Q = 6, Write Idx = 6, Read Idx = 0
    [IPU1-0] 33.331330 s: [CAPTURE] Buffer Q Status,
    [IPU1-0] 33.331391 s: Empty Q : Elements in Q = 0, Write Idx = 0, Read Idx = 0
    [IPU1-0] 33.331482 s: Full Q : Elements in Q = 0, Write Idx = 0, Read Idx = 0
    [IPU1-0] 33.331879 s: arrival_pipeline_printBufferStatistics End ...
    [IPU1-0] 33.331970 s: arrival_pipeline_printStatistics Start ...
    [IPU1-0] 33.332153 s:
    [IPU1-0] 33.332184 s: ### CPU [IPU1-0], LinkID [ 87],
    [IPU1-0] 33.332275 s:
    [IPU1-0] 33.332306 s: [ ISSCAPTURE ] Link Statistics,
    ...
    ...
    ...
    [IPU1-0] 33.332397 s: ******************************
    [IPU1-0] 33.332458 s:
    [IPU1-0] 33.332489 s: Elapsed time = 15587 msec
    [IPU1-0] 33.332550 s:
    [IPU1-0] 33.332611 s: Driver/Notify Cb = 2.56 fps
    [IPU1-0] 33.332672 s:
    [IPU1-0] 33.332733 s: Input Statistics,
    [IPU1-0] 33.332763 s:
    [IPU1-0] 33.332824 s: CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0] 33.332885 s: | FPS | FPS | FPS | FPS
    [IPU1-0] 33.332977 s: --------------------------------------------------
    [IPU1-0] 33.333099 s:
    [IPU1-0] 33.333129 s: Output Statistics,
    [IPU1-0] 33.333190 s:
    [IPU1-0] 33.333221 s: CH | Out | Out | Out Drop | Out User Drop
    [IPU1-0] 33.333312 s: | ID | FPS | FPS | FPS
    [IPU1-0] 33.333374 s: ---------------------------------------------
    [IPU1-0] 33.333465 s: 4 | 0 0.19 0. 0 0. 0
    [IPU1-0] 33.333587 s: 5 | 0 0.19 0. 0 0. 0
    [IPU1-0] 33.333709 s:
    [IPU1-0] 33.333740 s: [ ISSCAPTURE ] LATENCY,
    [IPU1-0] 33.333801 s: ********************
    [IPU1-0] 33.333862 s:
    [IPU1-0] 33.333984 s:
    [IPU1-0] 33.334289 s: ### CPU [IPU1-0], LinkID [ 74],
    [IPU1-0] 33.334380 s:
    [IPU1-0] 33.334411 s: [ CAPTURE ] Link Statistics,
    [IPU1-0] 33.334472 s: ******************************
    [IPU1-0] 33.334533 s:
    [IPU1-0] 33.334594 s: Elapsed time = 15731 msec
    [IPU1-0] 33.334655 s:
    [IPU1-0] 33.334685 s:
    [IPU1-0] 33.334746 s: Input Statistics,
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    cal2vip_config.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    ../ti_components/drivers/pdk_01_10_03_07/packages/ti/drv/vps/src/vpslib/hal/src/vpshal_isscal.c
    /**************************************************************************************/
    static int32_t CalSetVportCfg(const isshalCalInstObj_t *pInst,
    const vpsissCalVPort_t *cfg,
    uint32_t cportId)
    {
    uint32_t baseAddr;
    volatile uint32_t reg;
    GT_assert(VpsHalTrace, (NULL != pInst));
    GT_assert(VpsHalTrace, (NULL != cfg));
    baseAddr = pInst->baseAddr;
    GT_assert(VpsHalTrace, (0U != baseAddr));
    reg = HW_RD_REG32(baseAddr + CAL_VPORT_CTRL1);
    reg &= ~CAL_VPORT_CTRL1_PCLK_MASK;
    if((uint32_t)TRUE == cfg->enable)
    {
    reg &= ~(CAL_VPORT_CTRL1_XBLK_MASK | CAL_VPORT_CTRL1_YBLK_MASK |
    CAL_VPORT_CTRL1_WIDTH_MASK);
    reg |= CAL_VPORT_CTRL1_PCLK_MASK & cfg->pixClock;
    reg |= CAL_VPORT_CTRL1_XBLK_MASK &
    (cfg->xBlk << CAL_VPORT_CTRL1_XBLK_SHIFT);
    reg |= CAL_VPORT_CTRL1_YBLK_MASK &
    (cfg->yBlk << CAL_VPORT_CTRL1_YBLK_SHIFT);
    if(0x0U != cfg->width)
    {
    reg |= CAL_VPORT_CTRL1_WIDTH_MASK;
    }
    HW_WR_REG32(baseAddr + CAL_VPORT_CTRL1, reg);
    reg = HW_RD_REG32(baseAddr + CAL_VPORT_CTRL2);
    reg &=
    ~(CAL_VPORT_CTRL2_RDY_THR_MASK | CAL_VPORT_CTRL2_FSM_RESET_MASK |
    CAL_VPORT_CTRL2_FS_RESETS_MASK |
    CAL_VPORT_CTRL2_FREERUNNING_MASK |
    CAL_VPORT_CTRL2_CPORT_MASK);
    reg |= CAL_VPORT_CTRL2_CPORT_MASK & cportId;
    if((uint32_t)TRUE == cfg->freeRun)
    {
    reg |= CAL_VPORT_CTRL2_FREERUNNING_MASK;
    }
    if((uint32_t)TRUE == cfg->fsReset)
    {
    reg |= CAL_VPORT_CTRL2_FS_RESETS_MASK;
    }
    reg |= CAL_VPORT_CTRL2_RDY_THR_MASK &
    (cfg->rdyThr << CAL_VPORT_CTRL2_RDY_THR_SHIFT);
    /* Enable transmission on vports 2, 3 & 4 */
    reg = reg | 0x20U;
    /* Configure the cport ID's */
    reg = reg | 0x01U;
    HW_WR_REG32(baseAddr + CAL_VPORT_CTRL2, reg);
    }
    else
    {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Hi Vladmir,

    Couple of things to check on this

    1. Ensure that you have setup to transfer 1 pixel per clock on vPort i.e. in function CalSetVportCfg () ensure cfg->width is set to 0
      1. Also in the same function check by configuring cfg->xBlk to 0 and cfg->yBlk to 0
    2. Please increase the vPort pixel clock. i.e. drvCalCfg->vportCfg[strmId].pixClock = 32800U; or 36864
    3. Also check if there are any overflow in VIP, i.e. check register VIP_FIQ_STATUS

    Regards, Sujith

  • Helloб Sujith

    I changed params, but as before I don't receive frames. Also I enable extended statistic from VIP driver - please see attached log

    cfg->width = 0

    cfg->xBlk = 0

    cfg->yBlk =0

    cfg->pixClock to 32800U for first and 36864U for second

    BR, Vladimir

    1030.cal2vip_log.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    [IPU1-0] 13.248978 s: CAPTURE: VIP1 Slice0 PortA FRAME MODE
    [IPU1-0] 13.249069 s: CAPTURE: VIP1 Slice1 PortA FRAME MODE
    [IPU1-0] 13.249130 s: CAPTURE: VIP2 Slice0 PortA FRAME MODE
    [IPU1-0] 13.249191 s: CAPTURE: VIP2 Slice1 PortA FRAME MODE
    [IPU1-0] 13.249283 s:
    [IPU1-0] 13.249313 s: [ CAPTURE ] Link Statistics,
    [IPU1-0] 13.249374 s: ******************************
    [IPU1-0] 13.249435 s:
    [IPU1-0] 13.249496 s: Elapsed time = 3184 msec
    [IPU1-0] 13.249557 s:
    [IPU1-0] 13.249588 s:
    [IPU1-0] 13.249649 s: Input Statistics,
    [IPU1-0] 13.249679 s:
    [IPU1-0] 13.249740 s: CH | In Recv | In Drop | In User Drop | In Process
    [IPU1-0] 13.249801 s: | FPS | FPS | FPS | FPS
    [IPU1-0] 13.249923 s: --------------------------------------------------
    [IPU1-0] 13.250015 s:
    [IPU1-0] 13.250045 s: Output Statistics,
    [IPU1-0] 13.250106 s:
    [IPU1-0] 13.250137 s: CH | Out | Out | Out Drop | Out User Drop
    [IPU1-0] 13.250228 s: | ID | FPS | FPS | FPS
    [IPU1-0] 13.250289 s: ---------------------------------------------
    [IPU1-0] 13.250533 s:
    [IPU1-0] 13.250564 s: [VIP1 Slice0 PortA] Statistics
    [IPU1-0] 13.250625 s: ==============================
    [IPU1-0] 13.250686 s: Number of request queued : 1
    [IPU1-0] 13.250777 s: Number of request dequeued: 0
    [IPU1-0] 13.250838 s: Overflow Count : 0
    [IPU1-0] 13.250930 s:
    [IPU1-0] 13.250960 s: CH | Q DQ Total Top Bot Total Top Bot Min/Max Min/Max Dropped Repeat Fid Desc
    [IPU1-0] 13.251113 s: (I/S/CH) | Count Count Fields Fields Fields FPS FPS FPS Width Height Frames Frames Repeat Error
    [IPU1-0] 13.251235 s: ---------------------------------------------------------------------------------------------------------------------------
    [IPU1-0] 13.251570 s: 00.0.00 | 4 0 0 0 0 0 0 0 0/0 0/0 0 0 0 0
    [IPU1-0] 13.251692 s:
    [IPU1-0] 13.251753 s: CAPTURE: Check VIP_FIQ_STATUS = 0x00000000
    [IPU1-0] 13.251845 s:
    [IPU1-0] 13.251906 s: [VIP1 Slice1 PortA] Statistics
    [IPU1-0] 13.251997 s: ==============================
    [IPU1-0] 13.252058 s: Number of request queued : 1
    [IPU1-0] 13.252119 s: Number of request dequeued: 0
    [IPU1-0] 13.252180 s: Overflow Count : 0
    [IPU1-0] 13.252241 s:
    [IPU1-0] 13.252302 s: CH | Q DQ Total Top Bot Total Top Bot Min/Max Min/Max Dropped Repeat Fid Desc
    [IPU1-0] 13.252424 s: (I/S/CH) | Count Count Fields Fields Fields FPS FPS FPS Width Height Frames Frames Repeat Error
    [IPU1-0] 13.252546 s: ---------------------------------------------------------------------------------------------------------------------------
    [IPU1-0] 13.252882 s: 02.0.00 | 4 0 0 0 0 0 0 0 0/0 0/0 0 0 0 0
    [IPU1-0] 13.253034 s:
    [IPU1-0] 13.253065 s: CAPTURE: Check VIP_FIQ_STATUS = 0x00000000
    [IPU1-0] 13.253156 s:
    [IPU1-0] 13.253187 s: [VIP2 Slice0 PortA] Statistics
    [IPU1-0] 13.253248 s: ==============================
    [IPU1-0] 13.253309 s: Number of request queued : 1
    [IPU1-0] 13.253400 s: Number of request dequeued: 0
    [IPU1-0] 13.253461 s: Overflow Count : 0
    [IPU1-0] 13.253522 s:
    [IPU1-0] 13.253553 s: CH | Q DQ Total Top Bot Total Top Bot Min/Max Min/Max Dropped Repeat Fid Desc
    [IPU1-0] 13.253705 s: (I/S/CH) | Count Count Fields Fields Fields FPS FPS FPS Width Height Frames Frames Repeat Error
    [IPU1-0] 13.253827 s: ---------------------------------------------------------------------------------------------------------------------------
    [IPU1-0] 13.254163 s: 04.0.00 | 4 0 0 0 0 0 0 0 0/0 0/0 0 0 0 0
    [IPU1-0] 13.254285 s:
    [IPU1-0] 13.254346 s: CAPTURE: Check VIP_FIQ_STATUS = 0x00000000
    [IPU1-0] 13.254437 s:
    [IPU1-0] 13.254468 s: [VIP2 Slice1 PortA] Statistics
    [IPU1-0] 13.254529 s: ==============================
    [IPU1-0] 13.254590 s: Number of request queued : 1
    [IPU1-0] 13.254681 s: Number of request dequeued: 0
    [IPU1-0] 13.254742 s: Overflow Count : 0
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Hi Vladmir,

    Can you please provide the value of register at 0x489B 0350 and 0x489B 0124

    Regards, Sujith

  • Hello Sujith

    [IPU1-0] 20.284054 s: Reg 0x489B0350 = 0x0000001B
    [IPU1-0] 20.284145 s: Reg 0x489B0124 = 0x00010021

    ...

    [IPU1-0] 26.790032 s: Reg 0x489B0350 = 0x00000079
    [IPU1-0] 26.790123 s: Reg 0x489B0124 = 0x00010021

    ...

    [IPU1-0] 38.516714 s: Reg 0x489B0350 = 0x00000122 
    [IPU1-0] 38.516775 s: Reg 0x489B0124 = 0x00010021

    ...

    [IPU1-0] 187.701030 s: Reg 0x489B0350 = 0x00000985
    [IPU1-0] 187.701122 s: Reg 0x489B0124 = 0x00010021

    BR, Vladimir

  • Hello,

    I am also trying to get this working (with only three cameras). I followed the steps outlined so far and I am not receiving any frames through the VIP

    I am receiving counting frames in 0x489b0350

    and reg 0x489b0124 = 0x00010021 similar to Vladimir.

    Were there any additional steps to get this working?

    Thanks,

    Ben

  • Hello Ben,

    Could you please share the VIP registers? Let check if VIP is receiving some data. 

    If VIP is not receiving any data, there might be some intermediate mux which is not enabled..

    I am trying to figure out mux configuration, could you please share VIP register dump?

    Rgds,

    Brijesh

  • Please also check if the register CTRL_CORE_CONTROL_SPARE_RW(0x4A002E68), bit [12:8] are configured to value 1, as this connects CAL to VIP.

    Rgds,

    Brijesh

  • VIP1_regs.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    1651 9 48970000 0 d48 0
    4F020800
    4F020800
    4F020800
    4F020800
    00000014
    00000014
    00000014
    00000014
    00000000
    00000000
    00000000
    00000000
    00000005
    00000000
    00000005
    00000000
    00000000
    00000000
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Hello,

    I have attached the VIP1 register dump, also register 0x4A002E68 = 0x00001E00. Please let me know if I can provide any other information or if a live debug session would help.

    Thanks,

    Ben

  • Hi Ben,

    VIP parser registers start from offset 0x5500, can you please share 100 regsiters from this offset for VIP0 and VIP2.

    Rgds,

    Brijesh

  • VIP2_Slice1_parser_regs.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    1651 9 48995a00 0 64 0
    00000001
    00403904
    07800438
    00000000
    00000000
    003FFEDF
    003FFEDF
    00000000
    FFFFFFFF
    FFFFFFFF
    FFFFFFFF
    FFFFFFFF
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    VIP2_Slice0_parser_regs.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    1651 9 48995500 0 64 0
    00000001
    00403904
    07800438
    00000000
    00000000
    003FFEDF
    003FFEDF
    00000000
    FFFFFFFF
    FFFFFFFF
    FFFFFFFF
    FFFFFFFF
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    VIP1_Slice1_parser_regs.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    1651 9 48975a00 0 64 0
    00000001
    00403904
    07800438
    00000000
    00000000
    003FFEDF
    003FFEDF
    00000000
    FFFFFFFF
    FFFFFFFF
    FFFFFFFF
    FFFFFFFF
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    VIP1_Slice0_parser_regs.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    1651 9 48975500 0 64 0
    00000001
    00403904
    07800438
    00000000
    00000000
    003FFEDF
    003FFEDF
    00000000
    FFFFFFFF
    FFFFFFFF
    FFFFFFFF
    FFFFFFFF
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    07808000
    04380000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    VIP_regs_all.txt

    Hi Brijesh, Sorry I meant to save a longer register dump. Please let me know if you need any additional registers

  • VIP3_Slice1_parser_regs.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    1651 9 489b5a00 0 64 0
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    VIP3_Slice0_parser_regs.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    1651 9 489b5500 0 64 0
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    00000000
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Ben,

    None of the VIP ports are enabled. Are you sure you are using correct VIP?

    Rgds,

    Brijesh

  • Hi Brijesh,

    Are you referring to VIP_PORT_A.ENABLE (bit 8)? I see it as being set to 0x00403904 which would be enabled? Are you referring to a different register?

    I realized after the fact that there is no VIP3 in TDA2Px, so those registers are all zero.

    Thanks,

    Ben

  • Hi Ben,

    Yes, i was looking for ENABLE bit. 

    the Parser registers are at the offset 0x5500 and 0x5A00. At these offsets, ENABLE bit is not set. 

    Rgds,

    Brijesh

  • Brijesh,

    I'm sorry if I am not understanding. Looking at the TDA2P TRM offset 48975500 is the VIP_MAIN register which has the following fields:

    31:6 RESERVED

    5 CLIP_ACTIVE

    4 CLIP_BLINK

    3:2 RESERVED

    1:0 DATA_INTERFACE_MODE

    I do not see an enable bit in this register. However, the next register, 0x4897 5504 bit 8 contains an ENABLE field and this bit is being set in the register dumps that I have provided. 

    If this is not the bit you are talking about please specify the exact bit that you are looking for to be set, because I am not understanding.

    Thanks,

    Ben

  • Hi Ben,

    Please find base picture giving base address of VIP registers. VIP_PORT_A/B register have enable bit, which must be enabled to get VIP working.

    Rgds,

    Brijesh

  • Brijesh,

    As you can see in the register dumps provided earlier:

    1651 9 48975500 0 64 0
    00000001
    00403904  <-VIP1 Slice 0 VIP_PORT_A bit 8 is set, it is ENABLED
    07800438

    1651 9 48975a00 0 64 0
    00000001
    00403904 <-VIP1 Slice 1 VIP_PORT_A bit 8 is set, it is ENABLED
    07800438

    1651 9 48995500 0 64 0
    00000001
    00403904  <-VIP2 Slice 0 VIP_PORT_A bit 8 is set, it is ENABLED
    07800438

    1651 9 48995a00 0 64 0
    00000001
    00403904  <-VIP2 Slice 1 VIP_PORT_A bit 8 is set, it is ENABLED
    07800438

    Are you saying that VIP_PORT_B needs to be enabled? These ports do not support 16 bits, so I was under the impression that the A ports must be used. I appreciate your clarification.

    Thanks,

    Ben

  • Ben,

    oh ok, config seems to be correct, let me look at reference implementation and get back to you.

    Rgds,

    Brijesh 

  • Any update on this topic? It is becoming a blocking issue for our customer.

  • Hi Ben,

    Can you please check if 

    1, bits [12:9] are set to 1'b in the register CTRL_CORE_CONTROL_SPARE_RW (0x4A002E68)

    2, Bit 31 is set to 0'b in the register CTRL_CORE_SMA_SW_3 (0x4A003C08)

    Regards,

    Brijesh

  • Also Can you please check if CAL Write DMA is enabled, you are able to capture the frames? I means if VP is not enabled, then CAL is able to detect the input stream and is able to capture the frames??

    Rgds,

    Brijesh 

  • Hi Brijesh,

    I enabled writeToMem:

            drvCalCfg->writeToMem[strmId] = (UInt32)TRUE;

    and am seeing 1080p60 capture on all three streams. 

    CTRL_CORE_CONTROL_SPARE_RW (0x4A002E68) = 0x00001E00

    CTRL_CORE_SMA_SW_3 (0x4A003C08) = 0x00000001

    For a 1080p60 yuv422 stream, what should  drvCalCfg->vportCfg[i].pixClock be set to? 

    Thanks,

    Ben

  • Hi Ben,

    I am setting below config for VPORT, could you please try it?

    CAL_VPORT_CTRL1 = 0x00050000;

    CAL_VPORT_CTRL2 = 0x00008020;

    Rgds,

    Brijesh

  • Hi Brijesh,

    Thank you for continuing to look into this.

    I have set mine to match what you have and am still not seeing anything. Can I provide any other information to you? Please let me know if a live debug session would be helpful.

    Thanks,

    Ben

  • Hi Ben,

    This has never been tried/tested on EVM, with actual sensor. So is taking time. 

    We can have debug session, but i doubt how much it will be helpful. 

    Lets first make sure that the CAL is able to transfer data. There is a IRQ_VPORT_EOF event, which gets generated when Vport sends last pixel. Are you seeing this event? If you are seeing this event, then atleast, CAL is transmitting the frames. 

    Now if the VIP is not receiving frames, something in between is not allowing signals to pass. Let me again go through TRM and check if we is missing anything..   

    Regards,

    Brijesh

  • Thank you for the debug session.

    The final changes needed to get this working was:

    CAL_VPORT_CTRL2 = 0x10021

    pInstPrm->videoIfMode = SYSTEM_VIFM_SCH_DS_AVID_VSYNC;

    pPortCfg->disCfg.lineCaptureStyle =
    SYSTEM_VIP_LINE_CAPTURE_STYLE_ACTVID;

  • Thanks Ben, i am closing this thread.