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-J721S2:如何在 J721S2器件上启用第二个 DSI 实例。

Guru**** 2465890 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1472444/processor-sdk-j721s2-how-to-enable-second-dsi-instance-on-j721s2-device

器件型号:PROCESSOR-SDK-J721S2

工具与软件:

您好、 Brijesh

 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1468944/faq-processor-sdk-j721s2-how-to-enable-second-dsi-instance-on-j721s2-device

我尝试从上面的 URL 下载补丁、但第二条 DSI 总线上没有任何内容。

这里有两个问题

Q1.in PSDK_RTOS/vision_apps/utils/DSSS/DSSS/APP/DSS_SoC.c src、  

 

void appDssConfigurePm(app_dss_default_prm_t *prm)
{
    appLogPrintf("DSS: SoC init ... !!!\n");
    ..
    ..
    ..
    if(prm->display_type==APP_DSS_DEFAULT_DISPLAY_TYPE_DSI)
    {
        SET_DEVICE_STATE_ON(TISCI_DEV_DSS_DSI0);
        SET_DEVICE_STATE_ON(TISCI_DEV_DPHY_TX0);
        //++ for 2nd DSI
        SET_DEVICE_STATE_ON(TISCI_DEV_DSS_DSI1);
        SET_DEVICE_STATE_ON(TISCI_DEV_DPHY_TX1);
    }
    ..
    ..
    else if(prm->display_type==APP_DSS_DEFAULT_DISPLAY_TYPE_DPI_HDMI)
    {
        ...
    }
     else if (prm->display_type==APP_DSS_DEFAULT_DISPLAY_TYPE_DSI)
    {
        #if defined (SOC_J721E)
        SET_CLOCK_PARENT(TISCI_DEV_DSS0, TISCI_DEV_DSS0_DSS_INST0_DPI_2_IN_2X_CLK, TISCI_DEV_DSS0_DSS_INST0_DPI_2_IN_2X_CLK_PARENT_HSDIV1_16FFT_MAIN_18_HSDIVOUT0_CLK);
        SET_CLOCK_FREQ (TISCI_DEV_DSS0, TISCI_DEV_DSS0_DSS_INST0_DPI_2_IN_2X_CLK, prm->timings.pixelClock);
        SET_CLOCK_STATE(TISCI_DEV_DSS0, TISCI_DEV_DSS0_DSS_INST0_DPI_2_IN_2X_CLK, 0, TISCI_MSG_VALUE_CLOCK_SW_STATE_REQ);
        #elif defined (SOC_J721S2) || defined (SOC_J784S4)
        SET_DEVICE_STATE_OFF(TISCI_DEV_DSS0);
        SET_CLOCK_PARENT(TISCI_DEV_DSS0, TISCI_DEV_DSS0_DSS_INST0_DPI_2_IN_2X_CLK, TISCI_DEV_DSS0_DSS_INST0_DPI_2_IN_2X_CLK_PARENT_HSDIV1_16FFT_MAIN_17_HSDIVOUT0_CLK);
        SET_CLOCK_FREQ_ALLOW_CHANGE(TISCI_DEV_DSS0, TISCI_DEV_DSS0_DSS_INST0_DPI_2_IN_2X_CLK_PARENT_HSDIV1_16FFT_MAIN_17_HSDIVOUT0_CLK, prm->timings.pixelClock);
        SET_CLOCK_STATE(TISCI_DEV_DSS0, TISCI_DEV_DSS0_DSS_INST0_DPI_2_IN_2X_CLK_PARENT_HSDIV1_16FFT_MAIN_17_HSDIVOUT0_CLK, 0x2, TISCI_MSG_VALUE_CLOCK_SW_STATE_REQ);
        
        /*
            How to config for the 2nd DSI ???
         */
        //SET_CLOCK_PARENT(????
        //SET_CLOCK_FREQ_ALLOW_CHANGE(?????
        //SET_CLOCK_STATE(??????
        
        SET_DEVICE_STATE_ON(TISCI_DEV_DSS0);
        #endif
    }

    appLogPrintf("DSS: SoC init ... Done !!!\n");
}
 

对于第二个 DSI、如何设置 时钟父级/SET_CLOCK_FREQ_ALLOW_CHANGE/SET_CLOCK_STATE??

问题2: 如何将输入管道连接到第二个 DSI 实例???

   要配置 APP_dctrl_path_info_t/app_dctrl_vp_params_t?

    我更新了显示子系统、请提供更多详细信息。

   

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、 Brijesh

    我从第一个 DSI 实例的寄存器(0x048000F0)和第二个 DSI 实例的寄存器(0x049000F0)读取值、

    并获得不同的值、

     第1个 DSI 实例的值 为0x 1、  但第2个 DSI 实例的值为0x0。

    我跟踪代码、  

    第1个 DSI 实例的寄存器值将从更改为 0 最终目的 1. 呼叫后 DSS_dctrlVpEnable (uint32_t vpId、uint32_t enable) vpId_2、

    但是、第2个 DSI 实例的寄存器值在调用后保持0  DSS_dctrlVpEnable (uint32_t vpId、uint32_t enable)  vpId_3。

    //Dss_dctrlDrvSetVpParamsIoctl @dss_dctrlApi.c
    #if defined (SOC_J721E) || defined (SOC_J721S2) || defined (SOC_J784S4)
            if ((FVID2_SOK == retVal) &&
                (TRUE == Dss_dctrlDrvIsOutputDSI(vpId)))
            {
                /* There is instId in pDrvInfo (Dss_DctrlDrvInfo *drvInfo, Dss_DctrlDsiParams *dsiPrms)
                   Dss_dctrlDrvSetDSIParams drvInfo->dsiParams.instId = dsiPrms->instId
                   retVal = Dss_dctrlDrvSetDSIParams(&gDss_DctrlDrvInfo, dsiPrms);
                */
                GT_2trace(DssTrace, GT_ERR, "Dss_dctrlDrvIsOutputDSI (vpId : %d)(DSI instance : %d)!!\r\n", vpId, pDrvInfo->dsiParams.instId);
    			if (0 == pDrvInfo->dsiParams.instId)
    			{
    				 GT_1trace(DssTrace, GT_ERR, "AAAAAAAAAAAAAAAAAAAAA 0x048000F0=0x%x\r\n", CSL_REG32_RD(0x048000F0));
    			}
    			else
    			{
    				GT_1trace(DssTrace, GT_ERR, "AAAAAAAAAAAAAAAAAAAAA 0x049000F0=0x%x\r\n", CSL_REG32_RD(0x049000F0));
    			}
                retVal = Dss_dctrlDrvEnableVideoDSI(pDrvInfo, &lcdOpTimingCfg->mInfo,
                    lcdPolarityCfg->hsPolarity, lcdPolarityCfg->vsPolarity);
    
    			if (0 == pDrvInfo->dsiParams.instId)
    			{
    				 GT_1trace(DssTrace, GT_ERR, "BBBBBBBBBBBBBBB 0x048000F0=0x%x\r\n", CSL_REG32_RD(0x048000F0));
    			}
    			else
    			{
    				GT_1trace(DssTrace, GT_ERR, "BBBBBBBBBBBBBBBBBBBB 0x049000F0=0x%x\r\n", CSL_REG32_RD(0x049000F0));
    			}
            }
    #endif
    
            Dss_dctrlVpEnable(vpId, TRUE);
    
    		if ((FVID2_SOK == retVal) &&
                (TRUE == Dss_dctrlDrvIsOutputDSI(vpId)))
            {
    			if (0 == pDrvInfo->dsiParams.instId)
    			{
    				 GT_1trace(DssTrace, GT_ERR, "CCCCCCCCCCCCCCCCCCCC 0x048000F0=0x%x\r\n", CSL_REG32_RD(0x048000F0));
    			}
    			else
    			{
    				GT_1trace(DssTrace, GT_ERR, "CCCCCCCCCCCCCCCCCCCCCCCCC 0x049000F0=0x%x\r\n", CSL_REG32_RD(0x049000F0));
    			}
            }

     

    日志

    [MCU2_0]     10.929974 s: | I | default | Dss_dctrlDrvIsOutputDSI (vpId : 2)(DSI instance : 0)!!
    [MCU2_0]     10.930012 s: | I | default | src/drv/dctrl/dss_dctrlApi.c @ Line 1168:
    [MCU2_0]     10.930046 s: | I | default | AAAAAAAAAAAAAAAAAAAAA 0x048000F0=0x0
    [MCU2_0]     10.930612 s: | I | default | src/drv/dctrl/dss_dctrlApi.c @ Line 1179:
    [MCU2_0]     10.930651 s: | I | default | BBBBBBBBBBBBBBB 0x048000F0=0x0
    [MCU2_0]     10.930685 s: | I | default | src/drv/dctrl/dss_dctrlApi.c @ Line 2366:
    [MCU2_0]     10.930718 s: | I | default | 1.vp_Regs->CONTROL : 0x340!!
    [MCU2_0]     10.930751 s: | I | default | src/drv/dctrl/dss_dctrlApi.c @ Line 2368:
    [MCU2_0]     10.930784 s: | I | default | 2.vp_Regs->CONTROL : 0x341!!
    [MCU2_0]     10.930816 s: | I | default | src/drv/dctrl/dss_dctrlApi.c @ Line 2378:
    [MCU2_0]     10.930853 s: | I | default | gDss_DctrlDrvInfo.vpState[2] : 1!!
    [MCU2_0]     10.930888 s: | I | default | src/drv/dctrl/dss_dctrlApi.c @ Line 1195:
    [MCU2_0]     10.930922 s: | I | default | CCCCCCCCCCCCCCCCCCCC 0x048000F0=0x1
    ...
    ...
    ...
    [MCU2_0]     10.951952 s: | I | default | Dss_dctrlDrvIsOutputDSI (vpId : 3)(DSI instance : 1)!!
    [MCU2_0]     10.951992 s: | I | default | src/drv/dctrl/dss_dctrlApi.c @ Line 1172:
    [MCU2_0]     10.952025 s: | I | default | AAAAAAAAAAAAAAAAAAAAA 0x049000F0=0x0
    [MCU2_0]     10.952532 s: | I | default | src/drv/dctrl/dss_dctrlApi.c @ Line 1183:
    [MCU2_0]     10.952568 s: | I | default | BBBBBBBBBBBBBBBBBBBB 0x049000F0=0x0
    [MCU2_0]     10.952604 s: | I | default | src/drv/dctrl/dss_dctrlApi.c @ Line 2366:
    [MCU2_0]     10.952637 s: | I | default | 1.vp_Regs->CONTROL : 0x340!!
    [MCU2_0]     10.952669 s: | I | default | src/drv/dctrl/dss_dctrlApi.c @ Line 2368:
    [MCU2_0]     10.952702 s: | I | default | 2.vp_Regs->CONTROL : 0x341!!
    [MCU2_0]     10.952734 s: | I | default | src/drv/dctrl/dss_dctrlApi.c @ Line 2378:
    [MCU2_0]     10.952771 s: | I | default | gDss_DctrlDrvInfo.vpState[3] : 1!!
    [MCU2_0]     10.952804 s: | I | default | src/drv/dctrl/dss_dctrlApi.c @ Line 1199:
    [MCU2_0]     10.952838 s: | I | default | CCCCCCCCCCCCCCCCCCCCCCCCC 0x049000F0=0x0
    

    请提供帮助。

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh:
    这是一个紧迫的问题、请您优先考虑并答复我们吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 John:

    当然、让我检查日志并更新该线程。  

    此致、

    Brijesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh:
    是否有任何状态更新?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 John:

    补丁中似乎缺少 VP 到 DSI 的连接。 您能否恢复我之前的补丁并使用附加的补丁?  

    /cfs-file/__key/communityserver-discussions-components-files/791/0001_2D00_Added_2D00_support_2D00_for_2D00_Second_2D00_DSI_2D00_instance_2D00_for_2D00_J721S2_2D00_and.patch

    -此补丁包含启用第二个 DSI 实例所需的所有更改。

    -这已在 EVM 上得到验证。

    -这将包含在下一个 SDK 版本中。  

    - DSS 独立示例修改为支持和测试第二个 DSI 实例。

    -此示例将 VP3连接到 DSI0、将 VP2连接到 DSI1实例。 它还相应地配置所需的 PLL。  

    此致、

    Brijesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh:

    我已经尝试了新的附加补丁。

    现在可以使用第2个 DSI 实例。

    非常感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Pierre、 结束本主题。