Tool/software:
Hi support,
I am evaluating the LCD (DPI, RGB888) on a custom board on am62.
How can I change the clock polarity of the data output to rising edge driven?
The following was confirmed:
1. Set "DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE" to ".bus_flags" in struct panel_desc on panel-simple.c.
Result: IPC register is confirmed to be "0", but DPI0_CLK_CTRL_DATA_CLK_INVDIS is "0".
Shouldn't DPI0_CLK_CTRL_DATA_CLK_INVDIS be set to 1?


Read register values from Linux.
root@am62xx-custom:~# devmem2 0x3020B04C w /dev/mem opened. Memory mapped at address 0xffffafc72000. Read at address 0x3020B04C (0xffffafc7204c): 0x00063000 root@am62xx-custom:~# devmem2 0x00108300 w /dev/mem opened. Memory mapped at address 0xffffa1837000. Read at address 0x00108300 (0xffffa1837300): 0x00000000
The waveform is as follows: (CH1:CLK, CH2:DATA)
Data is output on the falling edge of the clock. In reality, data should be output on the rising edge of the clock.

2.Set "DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE" to ".bus_flags" in struct panel_desc on panel-simple.c.
Result: IPC register is confirmed to be "1", but DPI0_CLK_CTRL_DATA_CLK_INVDIS is "0".
Read register values from Linux
root@am62xx-custom:~# devmem2 0x3020B04C w /dev/mem opened. Memory mapped at address 0xffff9f4a3000. Read at address 0x3020B04C (0xffff9f4a304c): 0x00067000 root@am62xx-custom:~# devmem2 0x00108300 w /dev/mem opened. Memory mapped at address 0xffff84d14000. Read at address 0x00108300 (0xffff84d14300): 0x00000000
The waveform is as follows:
Data is output on the falling edge of the clock. (CH1:CLK, CH2:DATA)

[Reference]
SoC: AM6251
Board: Custom board
SDK: PROCESSOR-SDK-LINUX-RT-AM62X (Version.09.02.01.10)
LCD: P0700WVN1MB00 (TIANMA)
Device Driver: panel-simple.c ("CONFIG_DRM_PANEL_SIMPLE)
# For LCD timing, add the following to panel-simple.c
@@ -4027,6 +4036,36 @@ static const struct panel_desc yes_optoelectronics_ytc700tlag_05_201c = {
.connector_type = DRM_MODE_CONNECTOR_LVDS,
};
+static const struct drm_display_mode tianma_P0700WVN1MB00_mode = {
+ .clock = 33300,
+ .hdisplay = 800,
+ .hsync_start = 800 + 210,
+ .hsync_end = 800 + 210 + 20,
+ .htotal = 800 + 210 + 20 + 26,
+ .vdisplay = 480,
+ .vsync_start = 480 + 22,
+ .vsync_end = 272 + 22 + 3,
+ .vtotal = 272 + 22 + 3 + 20,
+ .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
+};
+
+static const struct panel_desc tianma_P0700WVN1MB00 = {
+ .modes = &tianma_P0700WVN1MB00_mode,
+ .num_modes = 1,
+ .bpc = 8,
+ .size = {
+ .width = 154,
+ .height = 86,
+ },
+ .delay = {
+ .prepare = 25,
+ .enable = 100,
+ },
+ .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
+ .bus_flags = DRM_BUS_FLAG_DE_LOW,
+ .connector_type = DRM_MODE_CONNECTOR_DPI,
+};
+
@@ -4456,6 +4495,9 @@ static const struct of_device_id platform_of_match[] = {
}, {
.compatible = "yes-optoelectronics,ytc700tlag-05-201c",
.data = &yes_optoelectronics_ytc700tlag_05_201c,
+ }, {
+ .compatible = "tianma,P0700WVN1MB00",
+ .data = &tianma_P0700WVN1MB00,
}, {
/* Must be the last entry */
.compatible = "panel-dpi",
Regards,
TO

