主题中讨论的其他器件:SK-AM62、 SK-LCD1、SK-AM62B-P1
工具与软件:
我正在尝试在 AM6254ATCGGAALW 上使用双 OLDI 显示器。
我没有看到 tidss 在启动时初始化、如 SDK 文档第 3.2.2.6节中所述。 DSS 第3.2.2.6.6.1小节和我没有看到/dev/dri 目录出现。
我正在使用 TISDK v09.01.00.08 (2023年12月18日)。 我认为此版本支持 TIDSS 和双 OLDI、无需补丁、对吗?
我在编写代码时将以下文章作为参考:
PROCESSOR-SDK-AM62X:如何在内核中启用 LVDS
我在启动期间确实看到了以下内核消息:
root@am62xx-evm:~# dmesg | grep dss [ 11.746589] platform 30200000.dss: deferred probe pending
我在设备树或 kernel .config 中犯了什么错误?
以下是我的相关内核配置:
CONFIG_DRM_PANEL=y CONFIG_DRM_PANEL_LVDS=y CONFIG_DRM_PANEL_SIMPLE=y CONFIG_DRM_BRIDGE=y CONFIG_DRM_PANEL_BRIDGE=y CONFIG_DRM_TIDSS=y CONFIG_DRM_LEGACY=y CONFIG_DRM_NOMODESET=y CONFIG_FB_CMDLINE=y CONFIG_FB_NOTIFY=y CONFIG_FB=y CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_SYS_FILLRECT=m CONFIG_FB_SYS_COPYAREA=m CONFIG_FB_SYS_IMAGEBLIT=m CONFIG_FB_SYS_FOPS=m CONFIG_FB_DEFERRED_IO=y CONFIG_FB_MODE_HELPERS=y CONFIG_FB_SIMPLE=y CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_PWM=m CONFIG_VIDEOMODE_HELPERS=y
以下是我的相关器件树代码部分:
#include <dt-bindings/soc/ti,sci_pm_domain.h> #include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/arm-gic.h> #include "k3-pinctrl.h" #include <dt-bindings/net/ti-dp83867.h> #include "k3-am625.dtsi" dss_oldi_io_ctrl: dss-oldi-io-ctrl@8600 { compatible = "syscon"; reg = <0x8600 0x200>; }; dss: dss@30200000 { compatible = "ti,am625-dss"; pinctrl-names = "default"; pinctrl-0 = <&main_oldi0_pins_default &main_oldi1_pins_default>; reg = <0x00 0x30200000 0x00 0x1000>, /* common */ <0x00 0x30201000 0x00 0x1000>, /* common1 */ <0x00 0x30202000 0x00 0x1000>, /* vidl1 */ <0x00 0x30206000 0x00 0x1000>, /* vid */ <0x00 0x30207000 0x00 0x1000>, /* ovr1 */ <0x00 0x30208000 0x00 0x1000>, /* ovr2 */ <0x00 0x3020a000 0x00 0x1000>, /* vp1: Used for OLDI */ <0x00 0x3020b000 0x00 0x1000>; /* vp2: Used as DPI Out */ reg-names = "common", "common1", "vidl1", "vid", "ovr1", "ovr2", "vp1", "vp2"; ti,am65x-oldi-io-ctrl = <&dss_oldi_io_ctrl>; power-domains = <&k3_pds 67 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 67 1>, <&k3_clks 216 1>, <&k3_clks 67 2>; clock-names = "fck", "vp1", "vp2"; interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; dss_ports: ports { #address-cells = <1>; #size-cells = <0>; /* VP1: LVDS Output (OLDI TX 0) */ port@0 { reg = <0>; oldi_out0: endpoint { remote-endpoint = <&lcd_in0>; }; }; /* VP1: LVDS Output (OLDI TX 1) */ port@2 { reg = <2>; oldi_out1: endpoint { remote-endpoint = <&lcd_in1>; }; }; }; }; /* * Note that the OLDI TX 0 transmits the odd set of pixels * while the OLDI TX 1 transmits the even set. This is a * fixed configuration in the IP integration and is not * changeable. The properties, "dual-lvds-odd-pixels" and * "dual-lvds-even-pixels" have been used to merely * identify if a Dual Link configuration is required. * Swapping them will not make any difference. */ port@0 { dual-lvds-odd-pixels; lcd_in0: endpoint { remote-endpoint = <&oldi_out0>; }; }; port@1 { dual-lvds-even-pixels; lcd_in1: endpoint { remote-endpoint = <&oldi_out1>; }; }; chosen { #address-cells = <2>; #size-cells = <2>; ranges; stdout-path = "serial2:115200n8"; bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000"; framebuffer0: framebuffer@0 { compatible = "simple-framebuffer"; power-domains = <&k3_pds 67 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 67 1>, <&k3_clks 216 1>, <&k3_clks 67 2>; display = <&dss>; reg = <0x00 0xff700000 0x00 0x008ca000>; width = <1920>; height = <1200>; stride = <(1920 * 4)>; format = "x8r8g8b8"; }; };