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.

DM8168 HDMI output not working

Other Parts Discussed in Thread: TPD12S521

I've the same conditions as in my earlier post: http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/257457.aspx

In Short: A DM8168 custum board with 1GB RAM (on only one EMIF) EZDSK 5_05_02_00 with LINUX PSP 04.04.00.01.

The current bootarg settings for loading the VPSS driver contain: notifyk.vpssm3_sva=0xBF900000

For starting the VPSS, framebuffer and HDMI driver I perform the following steps:

  1. prcm_config s
  2. insmod syslink.ko
  3. firmware_loader 1 dm816x_hdvicp.xem3 start
  4. firmware_loader 2 dm816x_hdvpss.xem3 start
  5. insmod vpss.ko sbufaddr=0xBFB00000 mode=hdmi:1080p-60,dvo2:1080p-60,hdcomp:1080p-60
  6. insmod ti81xxfb.ko vram=0:24M,1:16M,2:6M
  7. fbset -depth 32 -rgba 8/16,8/8,8/0,0/0
  8. insmod ti81xxhdmi.ko

The firmware and modules are loaded fine, but running every HDMI example I can't see anything on the connected monitor. (But I can read the EDID information via "cat /sys/devices/platform/vpss/display0/edid")

Between the DM8168 and the HDMI connector our custom board has the same TPD12S521 port protection chip as the EVM.

The same steps as described executed on the EVM lead to a working monitor. So I digged deeper and did a "dmesg | grep hdmi" after hot plugging the same HDMI monitor to the EVM as to our custom board.

Here is the output from EVM:

hdmi: Enter HDMI_W1_GlobalInitVars()
hdmi: Enter HDMI_Core_GlobalInitVars()
hdmi: Enter HDMI_W1_ConfigVideoResolutionTiming()
hdmi: Enter HDMI_W1_ConfigVideoInterface()
hdmi: HDMI_WP_AUDIO_CFG = 0x1030006
hdmi: HDMI_WP_AUDIO_CFG2 = 0x20c0
hdmi: HDMI_WP_AUDIO_CTRL = 0x20
hdmi: Enter DSS_HDMI_CORE_SW_RESET_ASSERT ()
hdmi: Enter DSS_HDMI_CORE_POWER_DOWN_DISABLE()
hdmi: Enter DSS_HDMI_CORE_SW_RESET_RELEASE()
hdmi: Enter HDMI_W1_StartVideoFrame  ()
hdmi: Irqenable 60000011
hdmi: 40 hpd
hdmi: -------------DEBUG-------------------
hdmi: 1 hdmi_wp_irqstatus
hdmi: 1 hdmi_core_intr_state
hdmi: 60 hdmi_core_intr1
hdmi: 3 hdmi_core_intr2
hdmi: 9 hdmi_core_intr3
hdmi: 87 hdmi_core_sys_sys_stat
hdmi: -------------DEBUG-------------------
hdmi: first hpd
hdmi: -------------DEBUG-------------------
hdmi: 1 hdmi_wp_irqstatus
hdmi: 1 hdmi_core_intr_state
hdmi: 40 hdmi_core_intr1
hdmi: 0 hdmi_core_intr2
hdmi: 1 hdmi_core_intr3
hdmi: 85 hdmi_core_sys_sys_stat
hdmi: -------------DEBUG-------------------
hdmi: -------------DEBUG-------------------
hdmi: 1 hdmi_wp_irqstatus
hdmi: 1 hdmi_core_intr_state
hdmi: 40 hdmi_core_intr1
hdmi: 1 hdmi_core_intr2
hdmi: 1 hdmi_core_intr3
hdmi: 87 hdmi_core_sys_sys_stat
hdmi: -------------DEBUG-------------------
hdmi: -------------DEBUG-------------------
hdmi: 1 hdmi_wp_irqstatus
hdmi: 1 hdmi_core_intr_state
hdmi: 40 hdmi_core_intr1
hdmi: 1 hdmi_core_intr2
hdmi: 1 hdmi_core_intr3
hdmi: 85 hdmi_core_sys_sys_stat
hdmi: -------------DEBUG-------------------

And here from custom board:

found best resolution: 1440x900 (25)
Extension block present db 2 21
84
Extension block present db 1 21
84
Extension block present db 3 21
84
Extension block present db 3 21
84
Extension block present db 3 21
84
hdmi: Enter HDMI_W1_GlobalInitVars()
hdmi: Enter HDMI_Core_GlobalInitVars()
hdmi: Enter HDMI_W1_ConfigVideoResolutionTiming()
hdmi: Enter HDMI_W1_ConfigVideoInterface()
hdmi: HDMI_WP_AUDIO_CFG = 0x1030006
hdmi: HDMI_WP_AUDIO_CFG2 = 0x20c0
hdmi: HDMI_WP_AUDIO_CTRL = 0x20
hdmi: Enter DSS_HDMI_CORE_SW_RESET_ASSERT ()
hdmi: Enter DSS_HDMI_CORE_POWER_DOWN_DISABLE()
hdmi: Enter DSS_HDMI_CORE_SW_RESET_RELEASE()
hdmi: Enter HDMI_W1_StartVideoFrame  ()
hdmi: Irqenable 60000011
hdmi: 40 hpd
hdmi: -------------DEBUG-------------------
hdmi: 1 hdmi_wp_irqstatus
hdmi: 1 hdmi_core_intr_state
hdmi: 40 hdmi_core_intr1
hdmi: 3 hdmi_core_intr2
hdmi: f hdmi_core_intr3
hdmi: 83 hdmi_core_sys_sys_stat
hdmi: -------------DEBUG-------------------
hdmi: first hpd
hdmi: -------------DEBUG-------------------
hdmi: 1 hdmi_wp_irqstatus
hdmi: 1 hdmi_core_intr_state
hdmi: 40 hdmi_core_intr1
hdmi: 1 hdmi_core_intr2
hdmi: 1 hdmi_core_intr3
hdmi: 81 hdmi_core_sys_sys_stat
hdmi: -------------DEBUG-------------------
hdmi: -------------DEBUG-------------------
hdmi: 1 hdmi_wp_irqstatus
hdmi: 1 hdmi_core_intr_state
hdmi: 40 hdmi_core_intr1
hdmi: 1 hdmi_core_intr2
hdmi: 1 hdmi_core_intr3
hdmi: 83 hdmi_core_sys_sys_stat
hdmi: -------------DEBUG-------------------
hdmi: -------------DEBUG-------------------
hdmi: 1 hdmi_wp_irqstatus
hdmi: 1 hdmi_core_intr_state
hdmi: 40 hdmi_core_intr1
hdmi: 1 hdmi_core_intr2
hdmi: 1 hdmi_core_intr3
hdmi: 81 hdmi_core_sys_sys_stat
hdmi: -------------DEBUG-------------------

It is basically the same execept the "Extension block present" stuff, and the (I think) more important difference in the hdmi_core_intr1 (HDMI Core interrupt register content) and the hdmi_core_sys_sys_stat (HDMI Core System State Register). The EVM gets 0x60 in the interrupt register when the monitor is plugged in for the first time, which means HPD (Hot Plug Detect either unplug or plug) and RSEN (Receiver sense has changed, Vcc is applied to or removedfrm attached HDMI receiver). On our custom board it's only 0x40 meaning HPD.

And as you can see, the following status register contents also differ only in bit 2 (0x04) meaning RSEN (0 = No receiver connected, 1 = Receiver connected and powered on)

So, basically the plug in of the monitor leads to a change of the hot plug detect pin, but the receiver sense keeps 0.

I can't see, why there is this difference between our board and the EVM since (from my point of view) the software (driver modules and M3 firmware) and hardware (same TPD12S521 chip, HDMI cable, HDMI monitor) is the same.

Measuring with an oscilloscope showed, that the TDMS clock output on our board is not clocking at all. Do I need to activate that clock by software, shouldn't that be done by HDMI driver module?

I'd appreciate any help you could give me.

  • I made another interesting observation.

    When I call prcm_config (which is indeed just a renamed prcm_config_app_a8host_debug.xv5T) I got different outputs on EVM and custom board. - For convenience I marked the differences as yellow.

    custom board:

    Doing PRCM settings...
            PRCM for IVHD0 is in Progress, Please wait.....
                            BW Phy Addr : 0x48180600 Data : 0x00000002
                            AW Phy Addr : 0x48180600 Data : 0x00000002
                            Phy Addr : 0x48180c04 Data : 0x00000037
                            BW Phy Addr : 0x48180620 Data : 0x00070000
                            AW Phy Addr : 0x48180620 Data : 0x00070002
                            BW Phy Addr : 0x48180624 Data : 0x00030000
                            AW Phy Addr : 0x48180624 Data : 0x00010002
                            Phy Addr : 0x48180600 Data : 0x00000102
                            BW Phy Addr : 0x48180c10 Data : 0x00000007
                            AW Phy Addr : 0x48180c10 Data : 0x00000003
                            Phy Addr : 0x48180c14 Data : 0x00000004
                            BW Phy Addr : 0x58088000 Data : 0xeafffffe
                            AW Phy Addr : 0x58088000 Data : 0xeafffffe
                            BW Phy Addr : 0x58098000 Data : 0xeafffefe
                            AW Phy Addr : 0x58098000 Data : 0xeafffffe
                            BW Phy Addr : 0x48180c10 Data : 0x00000003
                            AW Phy Addr : 0x48180c10 Data : 0x00000000
                            Phy Addr : 0x48180c14 Data : 0x00000007
            PRCM for IVHD0 is Done Successfully
            PRCM for IVHD1 is in Progress, Please wait.....
                            BW Phy Addr : 0x48180700 Data : 0x00000002
                            AW Phy Addr : 0x48180700 Data : 0x00000002
                            Phy Addr : 0x48180d04 Data : 0x00000037
                            BW Phy Addr : 0x48180720 Data : 0x00070000
                            AW Phy Addr : 0x48180720 Data : 0x00050002
                            BW Phy Addr : 0x48180724 Data : 0x00030000
                            AW Phy Addr : 0x48180724 Data : 0x00010002
                            Phy Addr : 0x48180700 Data : 0x00000102
                            BW Phy Addr : 0x48180d10 Data : 0x00000007
                            AW Phy Addr : 0x48180d10 Data : 0x00000003
                            Phy Addr : 0x48180d14 Data : 0x00000004
                            BW Phy Addr : 0x5a088000 Data : 0xeaffffee
                            AW Phy Addr : 0x5a088000 Data : 0xeafffffe
                            BW Phy Addr : 0x5a098000 Data : 0xeaffffee
                            AW Phy Addr : 0x5a098000 Data : 0xeafffffe
                            BW Phy Addr : 0x48180d10 Data : 0x00000003
                            AW Phy Addr : 0x48180d10 Data : 0x00000000
                            Phy Addr : 0x48180d14 Data : 0x00000007
            PRCM for IVHD1 is Done Successfully
            PRCM for IVHD2 is in Progress, Please wait.....
                            BW Phy Addr : 0x48180800 Data : 0x00000002
                            AW Phy Addr : 0x48180800 Data : 0x00000002
                            Phy Addr : 0x48180e04 Data : 0x00000037
                            BW Phy Addr : 0x48180820 Data : 0x00070000
                            AW Phy Addr : 0x48180820 Data : 0x00050002
                            BW Phy Addr : 0x48180824 Data : 0x00030000
                            AW Phy Addr : 0x48180824 Data : 0x00010002
                            Phy Addr : 0x48180800 Data : 0x00000102
                            BW Phy Addr : 0x48180e10 Data : 0x00000007
                            AW Phy Addr : 0x48180e10 Data : 0x00000003
                            Phy Addr : 0x48180e14 Data : 0x00000004
                            BW Phy Addr : 0x53088000 Data : 0xeafffffe
                            AW Phy Addr : 0x53088000 Data : 0xeafffffe
                            BW Phy Addr : 0x53098000 Data : 0xeafffffe
                            AW Phy Addr : 0x53098000 Data : 0xeafffffe
                            BW Phy Addr : 0x48180e10 Data : 0x00000003
                            AW Phy Addr : 0x48180e10 Data : 0x00000000
                            Phy Addr : 0x48180e14 Data : 0x00000007
            PRCM for IVHD2 is Done Successfully
    PRCM Initialization completed

    EVM:

    Doing PRCM settings...
            PRCM for IVHD0 is in Progress, Please wait.....
                            BW Phy Addr : 0x48180600 Data : 0x00000002
                            AW Phy Addr : 0x48180600 Data : 0x00000002
                            Phy Addr : 0x48180c04 Data : 0x00000037
                            BW Phy Addr : 0x48180620 Data : 0x00070000
                            AW Phy Addr : 0x48180620 Data : 0x00070002
                            BW Phy Addr : 0x48180624 Data : 0x00030000
                            AW Phy Addr : 0x48180624 Data : 0x00010002
                            Phy Addr : 0x48180600 Data : 0x00000102
                            BW Phy Addr : 0x48180c10 Data : 0x00000007
                            AW Phy Addr : 0x48180c10 Data : 0x00000003
                            Phy Addr : 0x48180c14 Data : 0x00000004
                            BW Phy Addr : 0x58088000 Data : 0x562eeeb1
                            AW Phy Addr : 0x58088000 Data : 0xeafffffe
                            BW Phy Addr : 0x58098000 Data : 0xa5f2b556
                            AW Phy Addr : 0x58098000 Data : 0xeafffffe
                            BW Phy Addr : 0x48180c10 Data : 0x00000003
                            AW Phy Addr : 0x48180c10 Data : 0x00000000
                            Phy Addr : 0x48180c14 Data : 0x00000007
            PRCM for IVHD0 is Done Successfully
            PRCM for IVHD1 is in Progress, Please wait.....
                            BW Phy Addr : 0x48180700 Data : 0x00000002
                            AW Phy Addr : 0x48180700 Data : 0x00000002
                            Phy Addr : 0x48180d04 Data : 0x00000037
                            BW Phy Addr : 0x48180720 Data : 0x00070000
                            AW Phy Addr : 0x48180720 Data : 0x00050002
                            BW Phy Addr : 0x48180724 Data : 0x00030000
                            AW Phy Addr : 0x48180724 Data : 0x00010002
                            Phy Addr : 0x48180700 Data : 0x00000102
                            BW Phy Addr : 0x48180d10 Data : 0x00000007
                            AW Phy Addr : 0x48180d10 Data : 0x00000003
                            Phy Addr : 0x48180d14 Data : 0x00000004
                            BW Phy Addr : 0x5a088000 Data : 0x78befb87
                            AW Phy Addr : 0x5a088000 Data : 0xeafffffe
                            BW Phy Addr : 0x5a098000 Data : 0xe40c8378
                            AW Phy Addr : 0x5a098000 Data : 0xeafffffe
                            BW Phy Addr : 0x48180d10 Data : 0x00000003
                            AW Phy Addr : 0x48180d10 Data : 0x00000000
                            Phy Addr : 0x48180d14 Data : 0x00000007
            PRCM for IVHD1 is Done Successfully
            PRCM for IVHD2 is in Progress, Please wait.....
                            BW Phy Addr : 0x48180800 Data : 0x00000002
                            AW Phy Addr : 0x48180800 Data : 0x00000002
                            Phy Addr : 0x48180e04 Data : 0x00000037
                            BW Phy Addr : 0x48180820 Data : 0x00070000
                            AW Phy Addr : 0x48180820 Data : 0x00050002
                            BW Phy Addr : 0x48180824 Data : 0x00030000
                            AW Phy Addr : 0x48180824 Data : 0x00010002
                            Phy Addr : 0x48180800 Data : 0x00000102
                            BW Phy Addr : 0x48180e10 Data : 0x00000007
                            AW Phy Addr : 0x48180e10 Data : 0x00000003
                            Phy Addr : 0x48180e14 Data : 0x00000004
                            BW Phy Addr : 0x53088000 Data : 0xf21c9953
                            AW Phy Addr : 0x53088000 Data : 0xeafffffe
                            BW Phy Addr : 0x53098000 Data : 0xd372c4f2
                            AW Phy Addr : 0x53098000 Data : 0xeafffffe
                            BW Phy Addr : 0x48180e10 Data : 0x00000003
                            AW Phy Addr : 0x48180e10 Data : 0x00000000
                            Phy Addr : 0x48180e14 Data : 0x00000007
            PRCM for IVHD2 is Done Successfully
    PRCM Initialization completed

    To be honest, I don't exactly understand what the tool prcm_config_app_a8host_debug.xv5T is doing. But since it is responsible for initialization of the clocks in any way, I see the problems (different values here, not clocking TDMS) probably are connected.

    UPDATE: Obviously this is not the source of the not working HDMI. The different output from prcm_config between EVM and custom board is, cause I once made a POR on the EVM and just a warm reset via "reboot" command on custom board.

  • Hi Peter,

    This looks to me like a hardware related issue. Here is one similar thread:

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/p/199068/709519.aspx#709519

    You can double check you custom board hardware:

    http://processors.wiki.ti.com/index.php/AM389x_C6A816x_DM816x_Hardware_Design_Guide

    BR

    Pavel

  • It was a hardware issue indeed. Our hardware guys had another look on the board and discovered they didn't connected the TPD12S521 correctly. They connected the differential signals (TDMS) only to the pins of the chip and didn't parallel "bypassed" it.

    To be be honest, from my sight as a software developer I would have connected the TPD12S521 wrong too. The EVM schematics shows only the "wires" to and from the pins and has an additional comment: "DIFFERENTIAL SIGNALS ROUTE THROUGH ESD DEVICE". That sentence was interpreted exactly as the drawing shows: The signals should go through the device (and not additionaly "around it"). - A look at the gerber data showed our mistake.

    Thanks for your help! The HDMI output is now working fine.