Tool/software:
Hi guys,
we have an issue with a RGB 24bit 4,3" panel. It creates an echo on the right side of two pixels which are changing even dynamicly.
We already tried many things like upgrading FW to 11.xx wtihout taking effect.
Currently in use:
- Kernel 6.1.69
- Debian 12
What we see as unusal is a too high pitch coming from 32bit color.
# cat /sys/class/graphics/fb0/bits_per_pixel 32 # cat /sys/class/graphics/fb0/stride 1920
We are using RGB888 so we dont understand why is here an entry of 32 Bit
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>; }; }; };
We see in DRM debug that 32 Bit is set.
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
it is set by: tidss 30200000.dss: [drm:drm_fb_helper_generic_probe] surface width(480), height(272) and bpp(32)
So we ask are we here on the right track?
Why is XR24 used instead of AR24 when display is RGB888. The pitch should be 1440 with 480px x 3bits
And in generall is this the root cause for the echo in screen?