工具/软件:
e2e.ti.com/.../WhatsApp-Video-2025_2D00_05_2D00_18-um-19.49.56_5F00_8438e7fe.mp4
大家好、
我们遇到了 RGB 24位4、3英寸面板的问题。 它在两个像素的右侧产生一个回波、这两个像素甚至会发生动态变化。
我们已经尝试了许多事情,如将 FW 升级到11.xx wtihout 生效。
当前使用中:
-内核6.1.69.
- Debian 12
我们认为不必要的是来自32位颜色的音调太高。
# cat /sys/class/graphics/fb0/bits_per_pixel 32 # cat /sys/class/graphics/fb0/stride 1920
我们使用的是 RGB888、因此我们不明白为什么这里是32位条目
panel-simple.c
static const struct drm_display_mode hetech_hc043te30029_mode = { .clock = 9200, .hdisplay = 480, .hsync_start = 480 + 6, .hsync_end = 486 + 41, .htotal = 480 + 6 + 6 + 41, .vdisplay = 272, .vsync_start = 272 + 4, .vsync_end = 276 + 10, .vtotal = 272 + 4 + 2 + 10, .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, }; static const struct panel_desc hetech_hc043te30029 = { .modes = &hetech_hc043te30029_mode, .num_modes = 1, .bpc = 8, .size = { .width = 95, .height = 54, }, .bus_format = MEDIA_BUS_FMT_RGB888_1X24, .connector_type = DRM_MODE_CONNECTOR_DPI, .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE, };
DTS:
panel { compatible = "hetech,hc043te30029","simple-panel"; power-supply = <&vcc_3v3_sw>; backlight = <&backlight>; status = "okay"; enable-gpio = <&main_gpio0 41 GPIO_ACTIVE_HIGH>; port { panel_in: endpoint { remote-endpoint = <&lcd0_out>; data-lines = <24>; }; }; }; &dss { pinctrl-names = "default"; pinctrl-0 = <&main_dss0_pins_default>; }; &dss_ports { #address-cells = <1>; #size-cells = <0>; /* VP2: DPI/HDMI Output */ port@1 { reg = <1>; lcd0_out: endpoint { remote-endpoint = <&panel_in>; }; }; };
我们在 DRM 调试中看到设置了32位。
root@DT404:~# cat /sys/kernel/debug/dri/0/framebuffer framebuffer[50]: allocated by = drm-framebuffer refcount=2 format=XR24 little-endian (0x34325258) modifier=0x0 size=480x272 layers: size[0]=480x272 pitch[0]=1920 offset[0]=0 obj[0]: name=0 refcount=3 start=00100080 size=524288 imported=no dma_addr=0x00000000b8200000 vaddr=00000000c10ec708 framebuffer[48]: allocated by = [fbcon] refcount=1 format=XR24 little-endian (0x34325258) modifier=0x0 size=480x272 layers: size[0]=480x272 pitch[0]=1920 offset[0]=0 obj[0]: name=0 refcount=3 start=00100000 size=524288 imported=no dma_addr=0x00000000b8180000 vaddr=00000000650e361f
它由以下命令设置: tidss 30200000.dss:[DRM:drm_fb_helper_generic_probe]表面宽度(480)、高度(272)和 bpp (32)
我们问、我们这里是否正确?
为什么显示为 RGB888时使用 XR24而不是 AR24。 间距应为1440、采用480px 3位
一般来说、这是屏幕回波的根本原因吗?