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.

[参考译文] AM625:TIDSS_HOW TO:更改数据输出的时钟极性

Guru**** 2460850 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1473054/am625-tidss_how-to-change-the-clock-polarity-of-the-data-output

器件型号:AM625

工具与软件:

尊敬的支持部门:

我正在 am62上的定制电路板上评估 LCD (DPI、RGB888)。

如何将数据输出的时钟极性更改为上升沿驱动?

以下情况得到确认:

1.在 panel-simple.c 中的结构 panel_desc 中将"drm_BUS_FLAG_PIXDATA_DRIVE_POSedge"设置为".bus_FLAGS"

结果:IPC 寄存器被确认为"0"、但 DPI0_CLK_CTRL_DATA_CLK_INVDIS 为"0"。

是否应该将 DPI0_CLK_CTRL_DATA_CLK_INVDIS 设置为1?

从 Linux 中读取寄存器值。

root@am62xx-custom:~# devmem2 0x3020B04C w
/dev/mem opened.
Memory mapped at address 0xffffafc72000.
Read at address  0x3020B04C (0xffffafc7204c): 0x00063000

root@am62xx-custom:~# devmem2 0x00108300 w
/dev/mem opened.
Memory mapped at address 0xffffa1837000.
Read at address  0x00108300 (0xffffa1837300): 0x00000000

波形如下: (CH1:CLK、CH2:DATA)
数据在时钟的下降沿输出。 实际上、数据应该在时钟的上升沿输出。

2.将 "drm_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE"设置为 panel-simple.c 上结构体 panel desc 中的".bus_FLAGS"

结果:IPC 寄存器被确认为"1"、但 DPI0_CLK_CTRL_DATA_CLK_INVDIS 为"0"。

从 Linux 中读取寄存器值

root@am62xx-custom:~# devmem2 0x3020B04C w
/dev/mem opened.
Memory mapped at address 0xffff9f4a3000.
Read at address  0x3020B04C (0xffff9f4a304c): 0x00067000

root@am62xx-custom:~# devmem2 0x00108300 w
/dev/mem opened.
Memory mapped at address 0xffff84d14000.
Read at address  0x00108300 (0xffff84d14300): 0x00000000

波形如下:
数据在时钟的下降沿输出。 (CH1:CLK、CH2:DATA)

[参考]

SoC:AM6251
电路板:定制电路板
SDK:SDK-AM62X PROCESSOR-SDK-LINUX-RT (版本09.02.01.10)
液晶屏:P0700WVN1MB00 (天马)
设备驱动程序:Panel-simple.c ("CONFIG_DRM_Panel_SIMPLE)

# For LCD timing, add the following to panel-simple.c

		@@ -4027,6 +4036,36 @@ static const struct panel_desc yes_optoelectronics_ytc700tlag_05_201c = {
		        .connector_type = DRM_MODE_CONNECTOR_LVDS,
		 };

		+static const struct drm_display_mode tianma_P0700WVN1MB00_mode = {
		+        .clock = 33300,
		+        .hdisplay = 800,
		+        .hsync_start = 800 + 210,
		+        .hsync_end = 800 + 210 + 20,
		+        .htotal = 800 + 210 + 20 + 26,
		+        .vdisplay = 480,
		+        .vsync_start = 480 + 22,
		+        .vsync_end = 272 + 22 + 3,
		+        .vtotal = 272 + 22 + 3 + 20,
		+        .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
		+};
		+
		+static const struct panel_desc tianma_P0700WVN1MB00 = {
		+        .modes = &tianma_P0700WVN1MB00_mode,
		+        .num_modes = 1,
		+        .bpc = 8,
		+        .size = {
		+                .width = 154,
		+                .height = 86,
		+        },
		+        .delay = {
		+                .prepare = 25,
		+                .enable = 100,
		+        },
		+        .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
		+        .bus_flags = DRM_BUS_FLAG_DE_LOW,
		+        .connector_type = DRM_MODE_CONNECTOR_DPI,
		+};
		+

		@@ -4456,6 +4495,9 @@ static const struct of_device_id platform_of_match[] = {
		        }, {
		                .compatible = "yes-optoelectronics,ytc700tlag-05-201c",
		                .data = &yes_optoelectronics_ytc700tlag_05_201c,
		+        }, {
		+               .compatible = "tianma,P0700WVN1MB00",
		+               .data = &tianma_P0700WVN1MB00,
		        }, {
		                /* Must be the last entry */
		                .compatible = "panel-dpi",

此致、

最终目的

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

    您好、

    请参阅以下内容: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1228207/am62a7-rgb-display-flickering-and-pixel-issue/4686544#4686544

    此致、
    Krunal

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

    尊敬的 Krunal:

    感谢您的支持。

    可以通过使用 devmem2命令将地址"0x00108300"重写为"0x00000100"来更改数据输出的时钟极性。

    似乎无法从 DSS 控制此寄存器、那么如何从 Linux 控制它?

    我想从设备驱动程序或设备树控制它、而不是从 devmem2控制它。

    此致、

    最终目的

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

    您好、

    我们在 Linux 中尚不支持此功能、建议您 使用"mw.l 0x00108300 0x100;"修改 uEnv.txt 文件。

    此致、
    Krunal

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

    尊敬的 Krunal:

    感谢您回答我的问题。

    我尝试将其添加到 U-boot 环境变量中。

    最后、您能告诉我以下几点:

    如果我要将数据和 SYNC 输出的时钟极性设置为上升沿、以下寄存器设置是否正确?

    CFG0_CLK_CTRL 寄存器

     [9]:DPI0_CLK_CTRL_SYNC_CLK_INVDIS 为1、因此是上升沿。

     [8]:DPI0_CLK_CTRL_DATA_CLK_INVDIS 为1、因此为 上升沿。

    VP2_FREQ 寄存器

     [17]:ONOFF 为 1、所以  启用 RF 寄存器。

     [16]:Rf  为 1 、所以 它是一个上升沿。  
         # DPI0_CLK_CTRL_SYNC_CLK_INVDIS 寄存器的值应相反、但这不符合规则。

     [14]:IPC  为0、 所以 它是一个上升沿。

    此致、

    最终目的

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

    您好、

    我不确定是否遵循该问题、在 DSS 寄存器中-> 1表示上升沿、而在 CTL MMR 中-> 1表示故障沿。 这是不是正确的?

    此致、
    Krunal

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

    尊敬的 Krunal:

    [报价 userid="353402" url="~/support/processors-group/processors/f/processors-forum/1473054/am625-tidss_how-to-change-the-clock-polarity-of-the-data-output/5660306 #5660306"]我不确定是否遵循该问题、在 DSS 寄存器中-> 1表示上升沿、而在 CTL MMR 中-> 1表示故障沿。 这不正确吗?

    这是不正确的。
    根据数据表、其内容如下:

    电阻器 电流
    0 1.
    DSS 射频 从而降低温升 秋季
    IPC 秋季 从而降低温升
    CTL_MMR DPI0_CLK_CTRL_SYNC_CLK_INVDIS   秋季 从而降低温升
    DPI0_CLK_CTRL_DATA_CLK_INVDIS 秋季 从而降低温升

    此致、

    最终目的

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

    您好、

    这在 TRM 中似乎是一个拼写错误、我正在 与我们的 IP 设计人员确认。

    此致、

    Krunal

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

    尊敬的 Krunal:

    这是 TRM 中的拼写错误吗?

    此致、

    最终目的

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

    是的、应该如下所示:

    VP1_FREQ 寄存器:

    位[16]:1表示在上升沿驱动注意:CTRL_MMR_DPI0_CLK_CTRL[9] DPI0_CLK_CTRL_SYNC_CLK_INVDIS 设置应与[16] RF 设置相同

    位[14]:1表示在下降沿驱动注意:CTRL_MMR_DPI0_CLK_CTRL[8] DPI0_CLK_CTRL_DATA_CLK_INVDIS 设置应与[14] IPC 设置相反的

     

    CFG0_CLK_CTRL 寄存器:

    位[9]:0表示在下降沿驱动注意:此值应与 DSS POL_FREQ[16] RF 的编程值相同。

    位[8]:0表示在下降沿驱动。注意:该值应与 DSS POL_FREQ[14] IPC 的编程值相反。

    此致、
    Krunal