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.

[参考译文] AM623:单链路 OLDI 面板问题

Guru**** 2422260 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1542587/am623-single-link-oldi-panel-problem

器件型号:AM623


工具/软件:

将面板设置为 am62x 上的 OLDI LVDS。 面板是单链路面板。 但是、设置后、图像仅显示在 LCD 的左侧。 图像将全部显示、但显示在左侧。 这是为什么? 这是器件树的一部分。

    panel-lvds {
        compatible = "panel-lvds";
        backlight = <&backlight>;
        data-mapping = "jeida-24";
        rotation = <0>;

        width-mm = <95>;
        height-mm = <55>;

        status = "okay";

        panel-timing {
            clock-frequency = <25000000>;
            hactive = <800>;
            vactive = <480>;
            hback-porch = <8>;
            hfront-porch = <8>;
            hsync-len = <4>;
            vback-porch = <16>;
            vfront-porch = <16>;
            vsync-len = <4>;
            de-active = <1>;
            pixelclk-active = <1>;
        };

        port {
            panel_input: endpoint {
                remote-endpoint = <&oldi0_output>;
            };
        };
    };

    backlight: ecap1-backlight {
        compatible = "pwm-backlight";
        pwms = <&ecap1 0 1000000 0>;
        brightness-levels = <0 64 128 192 255>;
        default-brightness-level = <4>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_backlight>;
        status = "okay";
    };

 &oldi0 {
    status = "okay";
};

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

    // DSS → OLDI0
    port@0 {
        reg = <0>;
        oldi0_input: endpoint {
            remote-endpoint = <&dss_to_oldi>;
        };
    };

    // OLDI0 → Panel
    port@1 {
        reg = <1>;
        oldi0_output: endpoint {
            remote-endpoint = <&panel_input>;
        };
    };
};

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

    /* port@0: OLDI output */
    port@0 {
        reg = <0>;
        dss_to_oldi: endpoint {
            remote-endpoint = <&oldi0_input>;
        };
    };
};

&ecap1 {
    status = "okay";
};

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

            oldi0: oldi@0 {
                reg = <0>;
                clocks = <&k3_clks 186 0>;
                clock-names = "s_clk";
                /*ti,companion-oldi = <&oldi1>; */
                ti,oldi-io-ctrl = <&dss_oldi_io_ctrl>;
                status = "disabled";

                oldi0_ports: ports {
                };
            };

            /*oldi1: oldi@1 {
                reg = <1>;
                ti,secondary-oldi;
                status = "disabled";

                oldi1_ports: ports {
                };
            };*/
        };

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

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

    您好、
    我们目前没有“panel-LVDS"的“的工作参考。

    您可以尝试使用 https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am625-sk-microtips-mf101hie-panel.dtso?h=ti-linux-6.12.y 中所示的“panel-simple"吗“吗

    您可以为单链路 OLDI 丢弃“双 LVDS 奇数像素“和“双 LVDS 偶数像素“标志。 面板计时可以在“panel-simple.c"中“中的 fresh 节点中指定。

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

    我根据 URL 更改了代码和器件树、但仍然一样。 您能否介绍一下图像仅显示在液晶屏左侧的一些情况?

    static const struct drm_display_mode my_mode = {
        .clock = 25000,
        .hdisplay = 800,
        .hsync_start = 800 + 8,
        .hsync_end = 800 + 8 + 4,
        .htotal = 800 + 8 + 4 + 8,
        .vdisplay = 480,
        .vsync_start = 480 + 16,
        .vsync_end = 480 + 16 + 4,
        .vtotal = 480 + 16 + 4 + 16,
    };
    
    static const struct panel_desc my_panel = {
        .modes = &my_mode,
        .bpc = 8,
        .num_modes = 1,
        .size = {
            .width = 95,
            .height = 55,
        },
        .delay = {
            .prepare = 10,
            .disable = 10,
            .enable = 20,
            .unprepare = 5,
        },
        .bus_flags = DRM_BUS_FLAG_DE_HIGH,
        .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA,
        .connector_type = DRM_MODE_CONNECTOR_LVDS,
    };

    #else
        panel {
            compatible = "pna,pna-panel", "panel-simple";
            backlight = <&backlight>;
            status = "okay";
    
            port {
                panel_input: endpoint {
                    remote-endpoint = <&oldi0_output>;
                };
            };
        };
            backlight: ecap1-backlight {
            compatible = "pwm-backlight";
            pwms = <&ecap1 0 1000000 0>;
            brightness-levels = <0 64 128 192 255>;
            default-brightness-level = <4>;
            pinctrl-names = "default";
            pinctrl-0 = <&pinctrl_backlight>;
            status = "okay";
        };
        &oldi0 {
        status = "okay";
    };
    
    &oldi0_ports {
        #address-cells = <1>;
        #size-cells = <0>;
    
        // DSS → OLDI0
        port@0 {
            reg = <0>;
            oldi0_input: endpoint {
                remote-endpoint = <&dss_to_oldi>;
            };
        };
    
        // OLDI0 → Panel
        port@1 {
            reg = <1>;
            oldi0_output: endpoint {
                remote-endpoint = <&panel_input>;
            };
        };
    };
    
    &dss_ports {
        #address-cells = <1>;
        #size-cells = <0>;
    
        /* port@0: OLDI output */
        port@0 {
            reg = <0>;
            dss_to_oldi: endpoint {
                remote-endpoint = <&oldi0_input>;
            };
        };
    };
    
    &ecap1 {
        status = "okay";
    };
    

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

    0x3020A160 的寄存器值是多少?

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

    Root@am62xx-EVM:~# devmem2 0x3020a160
    /dev/mem 已打开。
    0xffff8b25e000 映射的存储器。
    读取地址 0x3020A160 (0xffff8b25e160):0x00001185

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

    作为解决此问题的实验、您能尝试在 u-boot 中禁用启动界面吗?
    您可以在此处找到相关说明: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/latest/exports/docs/linux/Foundational_Components /U-Boot/UG-splash-Screen.html#disabining-splash-screen 

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

    此外、您是否使用了最新的 SDK?

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

    software-dl.ti.com/.../Overview_Building_the_SDK.html

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

    更改之前、有 fb0 和 fb1、fb1 已连接到面板。

    我更改了 u-boot 配置。

    CONFIG_VIDEO=n
    CONFIG_SYS_WHITE_ON_BLACK=n
    CONFIG_SPL_VIDEO_TIDSS=n
    CONFIG_VIDEO_BMP_GZIP=n
    CONFIG_BMP=n
    CONFIG_BMP_24BPP=n
    CONFIG_BMP_32BPP=n
    CONFIG_SPL_VIDEO=n
    CONFIG_SPL_SPLASH_SCREEN=n
    CONFIG_SPL_SYS_WHITE_ON_BLACK=n
    CONFIG_SPL_SPLASH_SCREEN_ALIGN=n
    CONFIG_SPL_SPLASH_SOURCE=n
    CONFIG_SPL_VIDEO_BMP_GZIP=n
    CONFIG_SPL_BMP_24BPP=n
    CONFIG_SPL_BMP_32BPP=n
    CONFIG_SPL_HIDE_LOGO_VERSION=n
    CONFIG_CMD_BMP=n
    CONFIG_SPL_BMP=n
    CONFIG_FDT_SIMPLEFB=n

    我生成 tisdk-default-image、并将 tiboot3.bin、tispl.bin 和 u-boot.img 复制到 SD 卡。

    更改后、移除 fb1、并将 fb0 连接至面板。

    但是、更改后、 手动使用 0x00FFFF00 填充 fb0 时面板上不会显示任何内容。

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

    以下命令返回什么?
    kmsprint
    modetest -M tidss
    kmstest

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

    root@am62xx-evm:~# kmsprint
    Connector 0 (40) LVDS-1 (connected)
      Encoder 0 (39) NONE
        Crtc 0 (38) 800x480@59.08 25.000 800/8/4/8/? 480/16/4/16/? 59 (59.08) 0x0 0x48
          Plane 0 (31) fb-id: 48 (crtcs: 0) 0,0 800x480 -> 0,0 800x480 (AR12 AB12 RA12 RG16 BG16 AR15 AB15 AR24 AB24 RA24 BA24 RG24 BG24 AR30 AB30 XR12 XB12 RX12 XR15 XB15 XR24 XB24 RX24 BX24 XR30 XB30 YUYV UYVY NV12)
            FB 48 800x480
    root@am62xx-evm:~# modetest -M tidss
    Encoders:
    id      crtc    type    possible crtcs  possible clones
    39      38      none    0x00000001      0x00000001
    
    Connectors:
    id      encoder status          name            size (mm)       modes   encoders
    40      39      connected       LVDS-1          95x55           1       39
      modes:
            index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot
      #0 800x480 59.08 800 808 812 820 480 496 500 516 25000 flags: ; type: preferred, driver
      props:
            1 EDID:
                    flags: immutable blob
                    blobs:
    
                    value:
            2 DPMS:
                    flags: enum
                    enums: On=0 Standby=1 Suspend=2 Off=3
                    value: 0
            5 link-status:
                    flags: enum
                    enums: Good=0 Bad=1
                    value: 0
            6 non-desktop:
                    flags: immutable range
                    values: 0 1
                    value: 0
            4 TILE:
                    flags: immutable blob
                    blobs:
    
                    value:
    
    CRTCs:
    id      fb      pos     size
    38      48      (0,0)   (800x480)
      #0 800x480 59.08 800 808 812 820 480 496 500 516 25000 flags: ; type: preferred, driver
      props:
            24 VRR_ENABLED:
                    flags: range
                    values: 0 1
                    value: 0
            27 CTM:
                    flags: blob
                    blobs:
    
                    value:
            28 GAMMA_LUT:
                    flags: blob
                    blobs:
    
                    value:
            29 GAMMA_LUT_SIZE:
                    flags: immutable range
                    values: 0 4294967295
                    value: 256
    
    Planes:
    id      crtc    fb      CRTC x,y        x,y     gamma size      possible crtcs
    31      38      48      0,0             0,0     0               0x00000001
      formats: AR12 AB12 RA12 RG16 BG16 AR15 AB15 AR24 AB24 RA24 BA24 RG24 BG24 AR30 AB30 XR12 XB12 RX12 XR15 XB15 XR24 XB24 RX24 BX24 XR30 XB30 YUYV UYVY NV12
      props:
            8 type:
                    flags: immutable enum
                    enums: Overlay=0 Primary=1 Cursor=2
                    value: 1
            30 IN_FORMATS:
                    flags: immutable blob
                    blobs:
    
                    value:
                            01000000000000001d00000018000000
                            01000000900000004152313241423132
                            52413132524731364247313641523135
                            41423135415232344142323452413234
                            42413234524732344247323441523330
                            41423330585231325842313252583132
                            58523135584231355852323458423234
                            52583234425832345852333058423330
                            59555956555956594e56313200000000
                            ffffff1f000000000000000000000000
                            0000000000000000
                    in_formats blob decoded:
                             AR12:  LINEAR(0x0)
                             AB12:  LINEAR(0x0)
                             RA12:  LINEAR(0x0)
                             RG16:  LINEAR(0x0)
                             BG16:  LINEAR(0x0)
                             AR15:  LINEAR(0x0)
                             AB15:  LINEAR(0x0)
                             AR24:  LINEAR(0x0)
                             AB24:  LINEAR(0x0)
                             RA24:  LINEAR(0x0)
                             BA24:  LINEAR(0x0)
                             RG24:  LINEAR(0x0)
                             BG24:  LINEAR(0x0)
                             AR30:  LINEAR(0x0)
                             AB30:  LINEAR(0x0)
                             XR12:  LINEAR(0x0)
                             XB12:  LINEAR(0x0)
                             RX12:  LINEAR(0x0)
                             XR15:  LINEAR(0x0)
                             XB15:  LINEAR(0x0)
                             XR24:  LINEAR(0x0)
                             XB24:  LINEAR(0x0)
                             RX24:  LINEAR(0x0)
                             BX24:  LINEAR(0x0)
                             XR30:  LINEAR(0x0)
                             XB30:  LINEAR(0x0)
                             YUYV:  LINEAR(0x0)
                             UYVY:  LINEAR(0x0)
                             NV12:  LINEAR(0x0)
            33 zpos:
                    flags: range
                    values: 0 1
                    value: 0
            34 COLOR_ENCODING:
                    flags: enum
                    enums: ITU-R BT.601 YCbCr=0 ITU-R BT.709 YCbCr=1
                    value: 0
            35 COLOR_RANGE:
                    flags: enum
                    enums: YCbCr limited range=0 YCbCr full range=1
                    value: 1
            36 alpha:
                    flags: range
                    values: 0 65535
                    value: 65535
            37 pixel blend mode:
                    flags: enum
                    enums: Pre-multiplied=0 Coverage=1
                    value: 0
    41      0       0       0,0             0,0     0               0x00000001
      formats: AR12 AB12 RA12 RG16 BG16 AR15 AB15 AR24 AB24 RA24 BA24 RG24 BG24 AR30 AB30 XR12 XB12 RX12 XR15 XB15 XR24 XB24 RX24 BX24 XR30 XB30 YUYV UYVY NV12
      props:
            8 type:
                    flags: immutable enum
                    enums: Overlay=0 Primary=1 Cursor=2
                    value: 0
            30 IN_FORMATS:
                    flags: immutable blob
                    blobs:
    
                    value:
                            01000000000000001d00000018000000
                            01000000900000004152313241423132
                            52413132524731364247313641523135
                            41423135415232344142323452413234
                            42413234524732344247323441523330
                            41423330585231325842313252583132
                            58523135584231355852323458423234
                            52583234425832345852333058423330
                            59555956555956594e56313200000000
                            ffffff1f000000000000000000000000
                            0000000000000000
                    in_formats blob decoded:
                             AR12:  LINEAR(0x0)
                             AB12:  LINEAR(0x0)
                             RA12:  LINEAR(0x0)
                             RG16:  LINEAR(0x0)
                             BG16:  LINEAR(0x0)
                             AR15:  LINEAR(0x0)
                             AB15:  LINEAR(0x0)
                             AR24:  LINEAR(0x0)
                             AB24:  LINEAR(0x0)
                             RA24:  LINEAR(0x0)
                             BA24:  LINEAR(0x0)
                             RG24:  LINEAR(0x0)
                             BG24:  LINEAR(0x0)
                             AR30:  LINEAR(0x0)
                             AB30:  LINEAR(0x0)
                             XR12:  LINEAR(0x0)
                             XB12:  LINEAR(0x0)
                             RX12:  LINEAR(0x0)
                             XR15:  LINEAR(0x0)
                             XB15:  LINEAR(0x0)
                             XR24:  LINEAR(0x0)
                             XB24:  LINEAR(0x0)
                             RX24:  LINEAR(0x0)
                             BX24:  LINEAR(0x0)
                             XR30:  LINEAR(0x0)
                             XB30:  LINEAR(0x0)
                             YUYV:  LINEAR(0x0)
                             UYVY:  LINEAR(0x0)
                             NV12:  LINEAR(0x0)
            43 zpos:
                    flags: range
                    values: 0 1
                    value: 1
            44 COLOR_ENCODING:
                    flags: enum
                    enums: ITU-R BT.601 YCbCr=0 ITU-R BT.709 YCbCr=1
                    value: 0
            45 COLOR_RANGE:
                    flags: enum
                    enums: YCbCr limited range=0 YCbCr full range=1
                    value: 1
            46 alpha:
                    flags: range
                    values: 0 65535
                    value: 65535
            47 pixel blend mode:
                    flags: enum
                    enums: Pre-multiplied=0 Coverage=1
                    value: 0
    
    Frame buffers:
    id      size    pitch
    
    root@am62xx-evm:~# kmstest
    Connector 0/@40: LVDS-1
      Crtc 0/@38: 800x480@59.08 25.000 800/8/4/8/? 480/16/4/16/? 59 (59.08) 0x0 0x48
      Plane 0/@31: 0,0-800x480
        Fb 49 800x480-XR24
    press enter to exit

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

    使用 kmstest,您在屏幕上看到了什么?

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

    没有看到任何内容、但出现黑屏。

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

    以前也出现过类似的问题: 关于:AM625-Q1:单通道 OLDI 输出:只有半显示屏 
    还使用了 SL JEIDA LVDS 面板。

    1.没有在 JEIDA 模式下配置面板。 0x3020A160 的值应为 0x1183、而不是 0x1185。 您能尝试以类似的方式定义 DTS 吗? 您确定您的面板使用 JEIDA 格式而不是 VESA 吗?
    2、他们的解决方案来自像内核 dts 一样修改 U-Boot dts。 但是、禁用启动界面时不显示并不真正有意义、尤其是因为 Linux 不会引发错误。
    3.您能确认所使用的 SDK 版本吗? 您共享了 10.1 的链接、最新的是 11.1。 如果未使用最新的、您可以尝试使用最新的 SDK 吗?
      

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

    1.当我恢复到 panel-LVDS 时、0x3020A160 为 0x1183。 我认为在将面板 LVDS 转换为简单面板时出现了错误配置。

    3.我使用的是 10.1. 我必须询问我的客户是否可以使用 11.1。 他们选择了 10.1 版本。

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

    1.使用 panel-simple 时、使用强制将该寄存器设置为 0x1183 时会发生什么情况:
    devmem2 0x3020a160 (带 0x1183)?
    2.在询问客户是否可以迁移之前、如果您检查 11.1 SDK 是否能够解决该问题、可能会很有用。

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

    1.不过、当 0x3020a160 为 0x1183 并且在 u-boot 中禁用了启动界面时、屏幕上没有任何内容。 我将 0x3020a160 的 DTS 修改为 0x1183。

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

    您可以尝试以下操作:
    重新启用启动界面
    在 U-Boot 中使用以下补丁: /cfs-file/__key/communityserver-discussions-components-files/791/0003_2D00_lvds.patch

    请注意、
    E2E 社区的某个人使用该补丁来解决类似的问题、但该补丁适用于 U-Boot 2023、而不是 2025。
    首先替换`panel_lvds:panel-lvds {` by `display {`、看看会发生什么?

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

    贴片的结构直接从 DSS 连接到面板。 但是、我们的结构设计为从 DSS 转换到 oldi、然后再转换到面板。 是否需要通过 OLDI 的过程?

    补丁: oldi_out0 (DSS 端口 0)-> lcd_in0 (panel)

    我的代码: dss_to_oldi (dss port0)-> oldi0_input (oldi0 port0)-> oldi0_output (oldi0 port1)-> panel_input (panel)

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

    保留 OLDI 桥接器有利于抽象目的、但该桥接器不需要在 Linux 中配置驱动器。
    由于此问题的原因仍然未知、我们无法在最后复制您的设置、我建议您尝试一次。

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

    当根据贴片更改器件树时、LCD 不会开启。

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

    在不更改任何其他计时参数的情况下、加倍 hdisplay 和加倍时钟是否显示全屏?

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

    时钟加倍时、图像仅显示在 LCD 的左侧、但会闪烁。

    当 hdisplay 加倍时、无论原始图像如何、整个屏幕都会变成白色。

    当时钟和显示屏加倍时、整个屏幕都是空白的。

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

    谢谢。 禁用 U-Boot、 Linux 根本无法运行面板(您看到的是空白屏幕)这表明您的时序参数有误。 我建议您与您的面板供应商核实这些信息。 您也可以探测输出时钟频率进行交叉检查、但我没有看到设置有任何其他问题。