--- linux-11.01.05/drivers/gpu/drm/tidss/tidss_dispc_regs.h 2025-07-02 05:17:52.000000000 +0800 +++ linux-11.01.05/drivers/gpu/drm/tidss/tidss_dispc_regs.h 2026-05-15 16:15:25.175222066 +0800 @@ -254,4 +254,11 @@ #define OLDI_PWRDN_TX BIT(8) +#define SCOTT_TEST 1 +#if SCOTT_TEST /* scott, 2026/05/15 */ +/* Bits in the MAIN_CTRL_MMR_CFG0_DPI0_CLK_CTRL register */ +#define DPI0_CLK_CTRL_DATA_CLK_INVDIS BIT(8) +#define DPI0_CLK_CTRL_SYNC_CLK_INVDIS BIT(9) +#endif /* SCOTT_TEST */ + #endif /* __TIDSS_DISPC_REGS_H */ --- linux-11.01.05/drivers/gpu/drm/tidss/tidss_dispc.c 2025-07-02 05:17:52.000000000 +0800 +++ linux-11.01.05/drivers/gpu/drm/tidss/tidss_dispc.c 2026-05-15 16:19:04.629858695 +0800 @@ -560,7 +560,9 @@ const struct dispc_features *feat; struct clk *fclk; - +#if SCOTT_TEST /* scott, 2026/05/15 */ + struct regmap *syscon_dpi_io_ctrl; +#endif /* SCOTT_TEST */ bool is_enabled; struct dss_vp_data vp_data[TIDSS_MAX_PORTS]; @@ -1323,6 +1325,15 @@ dispc_enable_oldi(dispc, hw_videoport, fmt); } +#if SCOTT_TEST /* scott, 2026/05/15 */ + bool ipc = !!(tstate->bus_flags & DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE); + bool rf = !!(tstate->bus_flags & DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE); + if (dispc->vp_data[hw_videoport].gamma_table && dispc->syscon_dpi_io_ctrl) { + regmap_write(dispc->syscon_dpi_io_ctrl, 0x0, + (!ipc ? DPI0_CLK_CTRL_DATA_CLK_INVDIS : 0) | + (rf ? DPI0_CLK_CTRL_SYNC_CLK_INVDIS : 0)); + } +#endif /* SCOTT_TEST */ } void dispc_vp_enable(struct dispc_device *dispc, u32 hw_videoport, @@ -3396,6 +3407,20 @@ dispc_init_errata(dispc); +#if SCOTT_TEST /* scott, 2026/05/15 */ + dispc->syscon_dpi_io_ctrl = syscon_regmap_lookup_by_compatible("ti,am625-dss-dpi0-clk-ctrl"); + if (IS_ERR(dispc->syscon_dpi_io_ctrl)) { + if (PTR_ERR(dispc->syscon_dpi_io_ctrl) != -ENODEV) { + r = dev_err_probe(dispc->dev, PTR_ERR(dispc->syscon_dpi_io_ctrl), + "DISPC: syscon_regmap_lookup_by_phandle failed.\n"); + return r; + } + + dispc->syscon_dpi_io_ctrl = NULL; + } + dev_warn(dev, "===>>> scott add patch here!!\n"); +#endif /* SCOTT_TEST */ + dispc->fourccs = devm_kcalloc(dev, ARRAY_SIZE(dispc_color_formats), sizeof(*dispc->fourccs), GFP_KERNEL); if (!dispc->fourccs)