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.

dra72x(J6E) HDMI i2c master error issue

Other Parts Discussed in Thread: TPD12S015

Hi All,

We are using 7.02.00.02 SDK + J6E (dra72x ) CPU , but currently we always have HDMI failure message  which is HDMI I2C master error when we type "modetest" .

Attachment files are bootlog and my dts file.

Could someone can give us a hint how to modify dts ?

Best,

Andy

  • dra72-evm-lga-j6e.dts.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
    /*
    * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
    *
    * This program is free software; you can redistribute it and/or modify
    * it under the terms of the GNU General Public License version 2 as
    * published by the Free Software Foundation.
    */
    /dts-v1/;
    #include "dra72x.dtsi"
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/clk/ti-dra7-atl.h>
    #include <dt-bindings/pinmux/mux_dra7xx.h>
    / {
    model = "TI DRA722";
    compatible = "ti,dra72-evm", "ti,dra722", "ti,dra72", "ti,dra7";
    memory {
    device_type = "memory";
    reg = <0x80000000 0x40000000>; /* 1024 MB */
    };
    reserved_mem: reserved-memory {
    #address-cells = <1>;
    #size-cells = <1>;
    ranges;
    ipu2_cma_pool: ipu2_cma@95800000 {
    compatible = "shared-dma-pool";
    reg = <0x95800000 0x3800000>;
    reusable;
    status = "okay";
    };
    dsp1_cma_pool: dsp1_cma@99000000 {
    compatible = "shared-dma-pool";
    reg = <0x99000000 0x4000000>;
    reusable;
    status = "okay";
    };
    ipu1_cma_pool: ipu1_cma@9d000000 {
    compatible = "shared-dma-pool";
    reg = <0x9d000000 0x2000000>;
    reusable;
    status = "okay";
    };
    dsp2_cma_pool: dsp2_cma@9f000000 {
    compatible = "shared-dma-pool";
    reg = <0x9f000000 0x800000>;
    reusable;
    status = "okay";
    };
    };
    /*
    extcon_usb1: extcon_usb1 {
    compatible = "linux,extcon-usb-gpio";
    id-gpios = <&pcf_gpio_21 1 GPIO_ACTIVE_HIGH>;
    };
    extcon_usb2: extcon_usb2 {
    compatible = "linux,extcon-usb-gpio";
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    20160721-boot.log.txt

  • Hi Andy,
    I'm not sure where is exactly the issue. But did you try to set i2c pins as outputs?

    Regards,
    Stan
  • Hi Stan,
    Thanks for your reply , we did setting the i2c pin to be i2c function. please see the attach file .

    tpd12s015: encoder@1 {
    compatible = "ti,dra7evm-tpd12s015";

    pinctrl-names = "i2c", "ddc";
    pinctrl-0 = <&hdmi_i2c_sel_pin &hdmi_i2c_pins_i2c>;
    pinctrl-1 = <&hdmi_i2c_sel_pin &hdmi_i2c_pins_ddc>;

    ddc-i2c-bus = <&i2c2>;
    mcasp-gpio = <&mcasp8>;

    gpios = <&pcf_hdmi 4 0>, /* P4, CT CP HPD */
    <&pcf_hdmi 5 0>, /* P5, LS OE */
    <&gpio7 12 0>; /* gpio7_12/sp1_cs2, HPD */

    ports {
    #address-cells = <1>;
    #size-cells = <0>;

    port@0 {
    reg = <0>;

    tpd12s015_in: endpoint@0 {
    remote-endpoint = <&hdmi_out>;
    };
    };

    port@1 {
    reg = <1>;

    tpd12s015_out: endpoint@0 {
    remote-endpoint = <&hdmi_connector_in>;
    };
    };
    };
    };


    By the way , I found there are two tpd12s015 driver , "ti,dra7evm-tpd12s015" and "ti,tpd12s015" .
    Which one should I use ?

    Best,
    Andy
  • Andy,
    I meant in:

    hdmi_i2c_pins_i2c: pinmux_hdmi_i2c_pins_default {
    pinctrl-single,pins = <
    0x408 (PIN_INPUT | MUX_MODE0) /* i2c2_sda.i2c2_sda */
    0x40c (PIN_INPUT | MUX_MODE0) /* i2c2_scl.i2c2_scl */

    PIN_INPUT
    to
    PIN_OUTPUT
    or to
    PIN_OUTPUT_PULLUP
  • Hi Andy,

    Did you manage to solve the problem?

    I recall another question to ask. Do you have a 3.3V to 5V voltage translator on the PCB? It's because SoC pins are 3.3-V , and HDMI needs 5 V.


    Regards,

    Stan

  • Hi Stan,
    Thanks for your reply.
    If I change from INPUT to OUTPUT, "i2cdetect -r -y 1" will pop i2c timeout and also the same at modtest command.
    If I stay with INPUT, "i2cdetect -r -y 1" can finish the scanning , but modtest still pop HDMI I2C master error.

    And we connect hdmi pins to a hdmi bridge ic , the bridge ic can accept 3.3V or 5V.

    Do you have other advice ?

    Best,
    Andy
  • Hi Andy,

    1. Are you working on TI J6 Eco EVM or on a custom hardware?
    2. is this issue seen only with GLSDK 7.02? Would it be possible to try with
    the GLSDK 7.04 release?
    3. The lines are supposed to be in INPUT mode which is actually input+output.
    Setting it to OUTPUT disables input path.
    4. To ensure that we are seeing issues only with the I2C lines and not the
    rest of the HDMI lines, can you please modify the function

    video/fbdev/omap2/dss/hdmi5_core.c:hdmi5_read_edid()

    to return 0 and check that modetest passes?

    regards,
    Venkat