工具/软件:
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位
一般来说、这是屏幕回波的根本原因吗?