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.

[FAQ] PROCESSOR-SDK-DRA8X-TDA4X: How to enable vout1/DPI1 output in vision apps?

Part Number: PROCESSOR-SDK-DRA8X-TDA4X

The vision apps, by default, supports outputs in DPI0/vout0 output port. This article explains how it can be changed to output on DPI1/vout1 output port. 

  • Vision apps currently uses vout0/DPI0 output port for HDMI output. This article explains how vision apps can be changed to get the output over vout1.
    Vout1/DPI1 output supports 16 data lines and 4 control signals, so it can be used to output BT656, BT1120, BT601 output formats.

    Enabling vout1 in vision apps requires few changes in the dss implementation

    • For HDMI output, vision apps connects VP2 output to vout0. The same VP2 output can also be connected to vout1. This requires small change in file psdk_rtos_auto_j7_07_00_00_11\vision_apps\utils\dss\src\app_dss_defaults.c. In this file, API appDssDefaultInit connects VP2 output to vout0/DPI0 for HDMI output. Change to as shown below.

    obj->nodeVpId = APP_DCTRL_NODE_VP2;
    obj->nodeDpiId = APP_DCTRL_NODE_DPI_DPI1;

    • vout1 output supports 16 data lines and 4 control signals. These pins need to be enabled in the pinmux register. vout1 output pins can be selected by selecting function4 for padconfig_86 (0x0011C158h) to padconfig_106 (0x0011C1A8h). In vision apps, the pinmux for vout0 is configured in an array, gVout0PinCfg, in the file psdk_rtos_auto_j7_07_00_00_11\vision_apps\utils\misc\src\app_pinmux.c. This can be replaced with below pinmux array for vout1.

    static pinmuxPerCfg_t gVout1PinCfg[] =
    {
    /* MyVOUT1 -> VOUT1_DATA0 */
    {
    PIN_RGMII5_TX_CTL, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA1 */
    {
    PIN_RGMII5_RX_CTL, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA2 */
    {
    PIN_RGMII5_TD3, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA3 */
    {
    PIN_RGMII5_TD2, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA4 */
    {
    PIN_RGMII5_TD1, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA5 */
    {
    PIN_RGMII5_TD0, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA6 */
    {
    PIN_RGMII5_TXC, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA7 */
    {
    PIN_RGMII5_RXC, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA8 */
    {
    PIN_RGMII5_RD3, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA9 */
    {
    PIN_RGMII5_RD2, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA10 */
    {
    PIN_RGMII5_RD1, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA11 */
    {
    PIN_RGMII5_RD0, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA12 */
    {
    PIN_RGMII6_TX_CTL, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA13 */
    {
    PIN_RGMII6_RX_CTL, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA14 */
    {
    PIN_RGMII6_TD3, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_DATA15 */
    {
    PIN_RGMII6_TD2, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_VSYNC */
    {
    PIN_RGMII6_TD1, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_HSYNC */
    {
    PIN_RGMII6_TD0, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT1_PCLK */
    {
    PIN_RGMII6_TXC, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },
    /* MyVOUT1 -> VOUT0_DE */
    {
    PIN_RGMII6_RXC, PIN_MODE(4) | \
    ((PIN_PULL_DISABLE) & (~PIN_PULL_DIRECTION & ~PIN_INPUT_ENABLE))
    },

    {PINMUX_END}
    };

    • Then newly created array gVout1PinCfg for pinmux configuration can be added to gDispPinCfg as shown below, in the same file

    static pinmuxModuleCfg_t gDispPinCfg[] =
    {
    {0, TRUE, gVout1PinCfg},
    {1, TRUE, gI2c1PinCfg},
    {PINMUX_END}
    };

    Regards,

    Brijesh