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.

[参考译文] Linux/AM5728:设备树 HDMI 配置问题

Guru**** 1125150 points
Other Parts Discussed in Thread: TPD12S015, AM5728, DRA744
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/647728/linux-am5728-device-tree-hdmi-configuration-problem

器件型号:AM5728
主题中讨论的其他器件:TPD12S015DRA742

工具/软件:Linux

 我有一个在 v3.00 PSDK 下工作的定制 AM5728板、但当我尝试更新系统以使用04.01 PSDK 时、HDMI 系统出现故障。 该板基于 Compulab AM5728 SOM 构建在我自己的定制载板之上、没有像 AM5728-EVM/Beagle-X15系统那样的 TPD12S015 HDMI 电平转换器。 该板仅使用 HDMI。 自 v3.00版本以来、随着用于 am57xx-EVM 的 TI DTS/dtsi 系统的格式的扩展、我正在抢先将我的 DTS 更新为使用 EVM 作为起点的新 Linux kernenel 系统。 我遇到的问题是 HDMI 配置不正确。 引导时、控制台日志中会发出许多"connector-HDMI connector:Failed to find video source"行。  
我的原始版本3.0设备树包含的映射如下所示:
am57xx-aii-compulab.dts
dT-bindings/input/input.h
am57xx-cl-som-am57x.dtsi*
#include
#include
#include "dra74x.dtsi"
#include "dra7.dtsi"
#include
#include
#include "skelin.dtsi"
#include
*am57xx-cl-som-am57x.dtsi 没有与 HDMI/DRM 相关的定义
am57xx-aii-compulab.dts 中用于配置 HDMI 的相关代码如下所示:
/{
    型号="保证5728焊接控制器";
    compatible ="aii、assiance5728"、"compulab、cl-som-am57x"、"ti、am5728"、"ti、dra742"、"ti、dra744"、 "TI、dra7";
    别名{
        display0 =&HDMI;
    };
HDMI_conn:连接器@0{
兼容="HDMI 连接器";
标签="HDMI";
类型="A";
};
};
&dra7_PMX_CORE{
    HDMI_Pins:pinmux_HDMI_Pins{
        pinctrl-single、pins =<
            DRA7XX_CORE_IOPAD (0x3808、PIN_INPUT | MUX_MODE1)     /* i2c2_sda.HDMI1_DDC_SCL *
            DRA7XX_CORE_IOPAD (0x380c、PIN_INPUT | MUX_MODE1)     /* i2c2_SCL.HDMI1_DDC_sda *
        >;
    };
    HDMI_conn_pins:pinmux_HDMI_conn_pins{
        pinctrl-single、pins =<
            DRA7XX_CORE_IOPAD (0x37b8、PIN_INPUT | MUX_MODE14)    /* SPI1_CS2.GPIO7_12 *
        >;
    };
};
HDMI{(&H)
    状态="ok";
    VDDA-SUPPLY =<&ldo4_reg>;
    pinctrl-names ="default";
    pinctrl-0 =<&HDMI_PINs>;
    端口{
        HDMI_OUT:端点{
            远程端点=<&HDMI_connector_in_>;
            通道=<1 0 3 2 5 4 7 6>;
        };
    };
};
HDMI_conn{(&H)
    pinctrl-names ="default";
    pinctrl-0 =<&HDMI_conn_PINs>;
    HPD-GPIO =<&GPIO7 12 GPIO_ACTIVE_HIGH>;
    端口{
        HDMI_connector_in:端点{
            远程端点=<&HDMI_OUT>;
        };
    };
};
 现在、在 AM57xx-EVM 上、HDMI 系统显然通过 tpd12s015电平转换器进行耦合、因此所有器件树形位都配置该器件来代替我的机器上使用的更通用的"HDMI 连接器"。 tpd12s015几乎是一款直通器件/电平转换器、但它需要2个额外的使能端(CT_CP_HPD 和 LS_OE)、这在我的案例中不存在。  
我查看了 tpd12s015器件的外观、并将两个"额外"GPIO 对准未使用的引脚、但如果可以的话、我不想专门指定2个引脚。 我稍微简要地看了一下低级 DTS 文件(dra74和 dra7)、但在 v3.00和 v4.01之间没有看到任何变化。
 很明显、我没有正确配置某些内容来应对自 v3.00以来的变化-因此有一些问题:
我正在查看驱动程序、不清楚视频源是如何从 DSS 路由到 HDMI 的。 有人能否快速解释一下这应该是如何在器件树中"连接"的。
即解释 DSS、编码器、连接器之间的关系、或将我指向文档。
2.鉴于 TI 器件树看起来都使用 tpd12s015驱动程序(有两个!)-现在更通用的"HDMI-connector"驱动程序中是否存在一个未被注意到的错误?  
   
3.我是否可以打开任何调试以帮助跟踪此配置可能出现的问题。  
  
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们尝试了快速 Hack 补丁、从 AM5 EVM 链中删除了 tpd12s015驱动程序、效果良好。  该补丁从 DTS 中删除了 tpd12s015、而 tpd12s015处理的少数 GPIO 被更改为由 GPIO-hog 处理、以便始终启用它们。 因此、软件认为 SoC 现在直接连接到 HDMI 连接器。

    已在 X15和 AM5 EVM 上附加已尝试的补丁。 该补丁不在 4.1处理器 SDK 之上、而是    在 git repo 的 ti-linux-4.9.y 分支上。

    以下是所做的更改-

    已删除

    --------

    tpd12s015{(&T)

           GPIO =<&GPIO7 10 GPIO_ACTIVE_HIGH_>、      /* GPIO7_10、CT CP HPD */

                  <GPIO2 30 GPIO_ACTIVE_HIGH_>、      /* GPIO2_30、LS OE */

                  <GPIO7 12 GPIO_ACTIVE_HIGH_>;      /* GPIO7_12/SP1_CS2、HPD */

    };

    已添加

    --------

    GPIO7{

           P10{

                  /* GPIO7_10、CT CP HPD */

                  GPIO-hog;

                  GPIO =<10 GPIO_ACTIVE_HIGH_>;

                  输出高电平;

                  线路名称="CT CP HPD";

           };

    };

    GPIO2{

           P30{

                  /* GPIO2_30、LS OE */

                  GPIO-hog;

                  GPIO =<30 GPIO_ACTIVE_HIGH_>;

                  输出高电平;

                  线路名称="LS OE";

           };

           hdmi0:连接器{

                  兼容="HDMI 连接器";

                  标签="HDMI";

                  类型="A";

                  HPD-GPIO =<&GPIO7 12 GPIO_ACTIVE_HIGH>;

                  端口{

                         HDMI_connector_in:端点{

                                 远程端点=<&HDMI_OUT>;

                         };

                  };

    如果您看到"找不到视频源"错误、则表示链中的上一个组件尚未注册。 例如、在 TI GP EVM 板中、如果 HDMI 连接器提供该错误、则表示尚未成功探测 tpd12s015。  

     

    但是、即使在正常启动中、也可能会由于延迟探测而出现此错误。 即、如果恰好首先探测 HDMI 连接器驱动程序、则它找不到 tpd12s015、因为它尚未加载。 一段时间后、探测 tpd12s015、然后成功重试 HDMI 连接器。

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

    Manisha、

      感谢您确认系统/器件树在没有定义 TPD12S015编码器的情况下工作-彻底检查始终是最有用的! 最后、我在各种内核驱动程序中添加了一些调试语句、以查看故障位置、现在我的板上运行了4.9.41内核。 如果其他人使用 Compulab AM572x 电路板、以下是对我有用的配置-我去除了非相关位、因此配置更容易查看-请注意、在我的案例中、我只使用 HDMI。  

    最终配置(内核配置)
    
    CONFIG_DRM_OMAP=y
    CONFIG_DRM_OMA_WB=y
    CONFIG_OMAP2_DSS_INIT=y
    CONFIG_OMAP_DSS_BAS=y
    CONFIG_OMAP2_DSS_DEBUG=y
    CONFIG_OMAP2_DSS_DEBUG_OPA2_DMAP_CONFIG_IN_CONFIG_DMAP_CONFIG_IN_EN_DM_CONFIG_DMAP_DM_CONFIG=y
    CONFIG_IN_DMAP_IN_DM_CONFIG_IN_ENK_CONFIG_IN_IN_IN_OPA2_IN_DM_DM_DM_DMAP_CONFIG_IN_DM_DM_ENK_CONFIG_IN_IN_IN_IN_IN_DMAP_CONFIG_IN_DM_DM_CONFIG_IN_IN_IN_IN_OPA2_IN_DM_DM_DM_DM_IN_DM_IN_IN_DMAP_IN_IN_IN_CONFIG_IN_DM_IN_IN_DM_CONFIG_IN_IN_DM_IN_DM_IN_DM
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    未设置
    # CONFIG_DRM_OMA_ENCODER_TPD12S015未设置
    # CONFIG_DRM_OMA_ENCODER_TC358768
    未设置# CONFIG_DRM_OMAP-DRA7_DECODER 未设置
    # CONFIG_DRM_OMAP-DRA7EVM_ENCODE_TPD12S015未设置
    # CONFIG_DRM_OMAP-DRM_OMAP-DRM_CONDECODE_CONFIG OMAP-OMAP-OMAP-OMAP-OMAP-OMAP-OMAP-OMAP-OMAP-OMAP-SCON_OMAP-OMAP-OMAP-OMAP-OMAP-SCON_CONFIG #CONFIG_OMAP-OMAP-OMAP-OMAP-OMAP-OMAP-OMAP-OMAP-OMAP-OMAP-OMAP-OMAP-OMAP-O
    
    
    
    
    
    未设置
    # CONFIG_DRM_OMA_PAGE_LGPHILIPS_LB035Q02未设置
    # CONFIG_DRM_OMA_PAGE_LS037V7DW01未设置
    # CONFIG_DRM_PAGE_TTO_TD028TTEC1未设置
    # CONFIG_DRM_OMA_PAGE_TPO_LDC_CONFIG
    DRM_OPTC_DRP_DRP_TOP_ST_DRP_CONT_LDC_CONFIG
    
    
    
    
    
    未设置# DRP_DRP_COM1_INT_LDC_DRP_CONFIG 设置# DRP_LDC_DRP_COM1_INT_DRP_TOP_COM1_INT_DRP_CONT_LD_CONT_OPTIC_CONT_LD_CONFIG #DRP_CONFIG_INT_DRP_CONT_DRP_CONT_OPTIC_INT_OPTIC_CONFIG #DRP_CONT_DRP_CONT_DRP_CONFIG #DRP_ST_
    CONFIG_DRM_BRIDGE=y
    
    
    
    相关设备树位: 
    *我选择不包含稳压器定义(ldoln_reg、lddo4_reg)、以保持此文档简洁 /{ 别名{ display0 =&HDMI; }; HDMI_conn:连接器{ Compatible ="HDMI-connector"; label ="HDMI"; type ="A"; HPD-GPIO =<&GPIO7 12 GPIO_ACTIVE_HIGH>; 端口{ HDMI_connector_in:端点{ 远程端点=<&HDMI_OUT>; }; }; }; }; &dra7_PMX_CORE{ /* HDMI 相关引脚配置*/ HDMI_Pins:pinmux_HDMI_Pins{ pinctrl-single、pins =< DRA7XX_CORE_IOPAD (0x3808、PIN_INPUT | MUX_MODE1) /* i2c2_sda.HDMI1_DDC_SCL * DRA7XX_CORE_IOPAD (0x380c、PIN_INPUT | MUX_MODE1) /* i2c2_SCL.HDMI1_DDC_sda * >; }; HDMI_conn_pins:pinmux_HDMI_conn_pins{ pinctrl-single、pins =< DRA7XX_CORE_IOPAD (0x37b8、PIN_INPUT | MUX_MODE14) /* SPI1_CS2.GPIO7_12 */ >; }; DSS_dpI_pins:DSS_pins{ pinctrl-single、pins =< >; }; }; &DSS{ 状态="ok"; pinctrl-names ="default"; VDDA_VIDEO_SUPPLY =<&ldoln_reg>; } ;&HDMI{ 状态="ok"; VDDA-SUPPLY =<&ldo4_reg>; pinctrl-names ="default"; pinctrl-0 =<&HDMI_PINs>; 端口{ HDMI_OUT:端点{ 远程端点=<&HDMI_connector_in_>; 通道=<1 0 3 2 5 4 7 6>; }; }; }; &HDMI_conn{ pinctrl-names ="default"; pinctrl-0 =<&HDMI_conn_PINs>; };