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.

[参考译文] AM3358:tildcDRM 故障

Guru**** 2878870 points

Other Parts Discussed in Thread: AM3358

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1634342/am3358-tilcdc-drm-failure

部件号: AM3358

您好、

我们正在开发基于 AM3358 的 HDMI 电路板、使用 SiI9022ACNU 芯片组、I2C 产品良好、所有硬件配置均良好。

但是、insmod tildc.ko 似乎与 DRM 有关、请参阅下面的崩溃报告、我们期望的是、与必须加载的 I2C 探针 tildcdc 模块无关。 随附了从 BeagleBone Black 修改的 dtsi 文件。

[143.780424] ---- 【在这里剪切】------
[ 143.785155]警告:CPU:0 PID:209、位于 drivers/GPU/DRM/DRM_ATOM_STATE_HEABLE.c:174 DRM_ATOM_HEABLE_CRTC_DUCLE_STATE+0x60 处
[143.797408] 链接的模块: tilcdc (+)
[143.801548] CPU: 0 PID: 209 comm: insmod not tainted 6.6.58 #20
[ 143.807510]硬件名称:通用 AM33XX(扁平器件树)
[ 143.813649] 从 show_stack+0x18/0x1c 展开 runy_backtrace
[ 143.818930] 从 dump_stack_lvl+0x40/0x4c 的 show_stack
[143.824019]  从__WARN+0x80/0x14c 删除 dump_stack_lvl
[143.828847]  来自 WARN_Slowpath_fmt+0x184/0x1fc 的__warn
[143.834019]  来自 DRM_ATOUS_Helper_CRTC_DUPLEX_STATE+0x68/0x70 的 WARN_SLOWPATH_fmt
[ 143.841814] 来自 DRM_ATOUSION_GET_CRC_STATE+0x70/0x110 的 DRM_ATOUS_HEABLE_CRTC_DUCLE_STATE
[ 143.850395] DRM_ATOUS_GET_CRC_STATE 来自 DRM_ATOUS_HEABLE_DISABLE_ALL+0x98/0x1d0
[143.858186]  DRM_ATOUS_HEABLE_DISABLE_ALL 来自 DRM_ATOUS_HEABLE_SHUTDOWN+0x90/0x144
[ 143.866064] 从 tilcdc_fini+0x58/0xe0 [tilcdc]获取 drm_atomic_helper_dutoff
[ 143.873142] 从 tilcdc_init.constprop.0+0x234/0x610 [tilcdc]获取的 tilcdc_fini [tilcdc]
[ 143.880893] tilcdc_init.constprop.0 [tilcdc] from tilcdc_pdev_probe+0x58/0xac [tilcdc]
[ 143.888990] 来自 platform_probe+0x64/0xb8 的 tildc_pdev_probe [tildc]
[143.895500]  platform_probe from really_probe+0xd8/0x3d0
[ 143.900857] really_probe、来自__DRIVER_probe_device+0x94/0x1e8
[ 143.906821] 来自 DRIVER_PROBE_DEVICE+0x38/0xc8 的__DRIVER_PROBE_DEVICE
[ 143.913307] 来自__DRIVER_CONNECT+0xe0/0x1b8 的 DRIVER_PROBOE_DEVICE
[ 143.919358] __driver_attach from bus_for_each_dev+0x84/0xd4
[143.925060]  bus_for_each_dev、来自 bus_add_driver+0xf8/0x21c
[143.930759]  来自 DRIVER_REGISTER+0x84/0x11c 的 BUS_ADD_DRIVER
[143.936374]  从 DO_ONE_initcall+0x50/0x2ac 删除 DRIVER_REGISTER
[ 143.942079] do_one_initcall from do_init_module+0x5c/0x20c
[ 143.947690] do_init_module_from_file+0x9C/0xd8 中的 do_init_module
[143.953733]  init_module_from_file from sys_finit_module+0x170/0x34c
[ 143.960125] 来自 ret_fast_syscall+0x0/0x54 的 sys_finit_module
[ 143.965817]异常堆栈 (0xe1515fa8 到 0xe1515ff0)
[143.970898] 5fa0:          1256e800 00000063 00000003 0124e190 00000000 bedc7f42
[ 143.979117] 5fc0:1256e800 00000063 bedc7f42 0000017b 00000003 b6f8dcd8 00000000 0053b82c
[143.98733] 5fe0:bedc7c70 bedc7c60 004905ec b6ec28f0
[143.992567] --[结束跟踪 000000000000 ]-----

 

# i2cdetect -y -r 0
   0 1 2 3 4 5 6 7 8 9 a b c d e f
00:      ----- ----- -----  
10:-------- ---- UU -------- ----  
第 20 章:我的心 ----- --  
第 30 章:你是我的女人 ----- ---- 3b ---- 3f  
第 40 章:我是你的女人 ----- ----- --  
第 50 章:我是你的女人 ----- ----- --  
第 60 章:第 62 章: ----- -----  
第 70 章:我的心 -----

 

Rgds

Chandra

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

    尊敬的 Chandra:

    我正在将您的问题发送给我们的显示专家以征求意见。

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

    尊敬的 Chandra:
    Linux 6.6 tilcdc 驱动程序有多个补丁。 TI SDK 11.02 上的最新版本具有 Linux 6.12。
    但即使这样做也可能不够。 请查看以下 Linux 下一个分支:   
    https://gitlab.com/linux-kernel/linux-next/-/commits/master/drivers/gpu/drm/tilcdc?ref_type=heads 

    这些提交可能不会在即将发布的 Linux 版本中被忽略。 您可能需要使用上游 Linux、然后将这些补丁移植回上游 Linux。

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

    尊敬的 Divyansh:

    现在、我们能够检测到 HDMI、发现问题是 tildc.ko、需要等待 si 驱动程序加载、之后如果我们吸入它、它将正常工作、我们可以在 LCD 上看到数据。

    现在新的问题是,颜色似乎是错误的不确定是否有任何内核驱动程序修复了这一点,在我们的 dts 文件中,我们必须设置交叉,因为它是 24 位 RGB 接口

    下面是我们如何在屏幕上获取数据的图像、

    带交叉:

    带直向、

    下面是 DTS 设置:

    {&LCDC}
       状态=“正常“;
       蓝色和红色布线=“交叉“;//根据您的 PCB 布线进行调整

     

       端口{
           LCDC_OUT_HDMI:端点{
               远程端点=<&HDMI_IN>;
               总线宽度=<24>;//明确设置 24 位
    数据映射=“rgb888";“;
           };
       };
    };

    &i2c0{
       sil9022:sil9022a@3b{
           兼容=“sil、sii9022“;
           REG =<0x3B>;// SiI9022A 的标准 I2C 地址、因为 CI2CA =高电平、0x3B、LOW = 0x39

    iovcc-supply =<&v3V3_reg_HDMI>;  /* I/O 电源:1.8V 或 3.3V */
           Cvcc12-supply =<&v1V2_reg_HDMI>; //*数字内核电源:1.2V */
           Reset-GPIOs =<&GPIO0 6 GPIO_ACTIVE_LOW>;  
           Interrupt-parent =<&GPIO1>;
           中断=<25 IRQ_TYPE_EDGE_FALLING>;

    pinctrl-names =“default",“,"off"、"off";“;</s>“
    pinctrl-0 =<&si_HDMI_smarthud_pins>;
    pinctrl-1 =<&si_HDMI_smarthud_off_pins>;

           状态=“正常“;

     

           //定义视频输入(来自 LCDC)和输出 (HDMI) 的端口
           端口{
               #address-cells =<1>;
               #size-cells =<0>;

     

               端口@0{
                   reg =<0>;
                   HDMI_IN:端点{
                       远程端点=<&LCDC_OUT_HDMI>;
                   };
             };

     

    端口@1{
                   reg =<1>;
                   hdmi_OUT:端点{
                       远程端点=<&HDMI_con_in>;
                   };
    };
           };
       };
    };

    si_hdmi_smartud_pins:si_hdmi_smarthud_pins{
    pinctrl-single、pins =<
    AM33XX_PADF (AM335X_PIN_LCD_DATA0、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_DATA1、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_DATA2、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_DATA3、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_DATA4、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_Data5、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_DATA6、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_DATA7、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_DATA8、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_DATA9、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_DATA10、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_DATA11、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_DATA12、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_DATA13、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_DATA14、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_DATA15、PIN_OUTPUT、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_GPMC_AD15、PIN_OUTPUT、MUX_MODE1)
    AM33XX_PADF (AM335X_PIN_GPMC_AD14、PIN_OUTPUT、MUX_MODE1)
    AM33XX_PADF (AM335X_PIN_GPMC_AD13、PIN_OUTPUT、MUX_MODE1)
    AM33XX_PADF (AM335X_PIN_GPMC_AD12、PIN_OUTPUT、MUX_MODE1)
    AM33XX_PADF (AM335X_PIN_GPMC_AD11、PIN_OUTPUT、MUX_MODE1)
    AM33XX_PADF (AM335X_PIN_GPMC_AD10、PIN_OUTPUT、MUX_MODE1)
    AM33XX_PADF (AM335X_PIN_GPMC_AD9、PIN_OUTPUT、MUX_MODE1)
    AM33XX_PADF (AM335X_PIN_GPMC_AD8、PIN_OUTPUT、MUX_MODE1)
    AM33XX_PADF (AM335X_PIN_LCD_VSYNC、PIN_OUTPUT_PULLDOWN、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_HSYNC、PIN_OUTPUT_PULLDOWN、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_PCLK、PIN_OUTPUT_PULLDOWN、MUX_MODE0)
    AM33XX_PADF (AM335X_PIN_LCD_AC_BIAS_EN、PIN_OUTPUT_PULLDOWN、MUX_MODE0)

    /* HDMI 重置和 HDMI 中断*/
    AM33XX_PADF (AM335X_PIN_SPI0_CS1、PIN_OUTPUT_PULLUP、MUX_MODE7)/* spi0_CS1.gpio0_6*/
    AM33XX_PADF (AM335X_PIN_GPMC_A9、PIN_INPUT_PULLUP、MUX_MODE7)/* GPMC_A9.GPIO1_25*/
    >;
    };

    Rgds

    Chandra

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在我们的 DTS 文件中、我们必须设置交叉、因为它是 24 位 RGB 接口接口

    不确定我是否明白、交叉设置可解决您的问题?

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

    否、屏幕显示为 pinkish。

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

    预期输出是多少? 蓝色的、其中您没有指定 蓝红色布线=“交叉“?

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

    否、屏幕显示为 pinkish。 低于预期值和预期值、

    预期:

    我们得到的是、

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

    您得到的是“交叉“、“右移“或两者兼有之?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid=“525798" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1634342/am3358-tilcdc-drm-failure/6305537

    我们得到的是、

    [/报价]

    这是与交叉。  

    {&LCDC}
       状态=“正常“;
       蓝色和红色布线=“交叉“;//根据您的 PCB 布线进行调整

     

       端口{
           LCDC_OUT_HDMI:端点{
               远程端点=<&HDMI_IN>;
               总线宽度=<24>;//明确设置 24 位
    数据映射=“rgb888";“;
           };
       };
    };

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

    这是一个很好的问题。

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

    尊敬的 Divyansh:

    看起来我们 root 导致了这个问题、似乎 AM3358 以 RGB565 格式发送数据、当我们以 16 位格式填充数据时、可以正确显示数据。

    在哪里可以查看驱动程序代码、或者可以更改任何参数以设置为 24 位数据、RGB888 格式?

    Rgds

    Chandra

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

    尊敬的 Chandrashekhar:
    我不确定您是否看到此器件勘误表、请告知我此勘误表是否有帮助: https://www.ti.com/lit/er/sprz360i/sprz360i.pdf (第 3.1.1 节)

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

    您是指在硬件中、我们需要实际切换行以匹配您的勘误表? 您能查看原理图上我分享的内容吗? 我想我们遗漏了一些东西。

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

    尊敬的 Chandra:
    是的、您需要更改硬件中的数据线路路由。 请检查我们 EVM 上使用的以下布线:

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

    您好、

    根据勘误表如果我继续、如果我们忽略、仍然可以使用 16 位数据输出、低位颜色正确、从 Am3358 中我们将其配置为交叉、BGA888 数据将输出

    Data7 到 Data0 = Blue7 到 Blue0

    Data15 至 Data8 = Green7 至 Green0

    Data23 到 Data16 = Red7 到 Red0

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

    尊敬的 Chandra:
    不可以、仅仅忽略 LSB 数据线不能解决问题、因为需要移动这些线路。 请检查 BeagleBone Black 原理图中的 16 位参考实现: https://github.com/beagleboard/beaglebone-black/blob/master/BBB_SCH.pdf 

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

    我仍然仅使用 24 位帧缓冲区运行、 BeagleBone 为 16 位帧缓冲区。  

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

    尊敬的 Chandra:
    即使在启用了交叉标志的 24 位 RGB888 下运行、也需要以下连接路由:
    DATA[15:11]=> LCD[R7:R3]-> LCD[23:19]
    DATA[10:5]=> LCD[G7:G2]-> LCD[15:10]
    DATA[4:0]=> LCD[B7:B3]-> LCD[7:3]

    但目前 在您的设置中、Data[23:16]包含指向 LCD 红色部分的所有 3 种颜色的 LSB。

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

    芯片勘误表似乎让我们重新设计了电路板。 不确定我们是否可以在 tilcdc_crtc 文件中修复此问题、在该文件中我们会写入每个像素数据。 驱动程序中是否有任何修复? 我们的新电路板平均进行硬件修复。

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

    尊敬的 Chandra:  
    遗憾的是、没有驱动程序级修复。