Hello, This patch series reworks all the timing-related operations (.get_timings(), .set_timings() and .check_timings()) as a step toward moving from omap_dss_device to drm_bridge. All timing-related operations are called by the omapdrm driver on the omap_dss_device at the end of display pipeline, and the operations are then handled directly or forwarded to the previous omap_dss_device in the pipeline. This causes an issue in our quest to move to drm_bridge: the drm_bridge equivalent to the timing operations, .mode_valid(), .mode_fixup() and .mode_set(), are called in the source to sink direction. Furthermore, timing handling in the omapdrm driver is very complicated, with timings getting mangled, stored in random places, retrieved back by unrelated code, mangled again, stored in different places, and modified across objects. Simplifying that is crucial to move to drm_bridge. This patch series simplifies the timings operation and reverse the direction in which they're called. The driver still uses the videomode structure instead of the drm_display_mode structure to store timing information, this will be fixed in a second step. The series is really a succession of cleanups interleaved with the real changes, with a total of 406 lines of code removed overall. It starts with small changes, cleanups and code removal in patches 01/23 to 08/23. Patches 09/23 and 10/23 start reworking the .check_timings() operation by making use of the bus flags. Patches 11/23 to 13/23 rework the .get_timings() operation, and patches 14/23 to 21/23 complete the .check_timings() rework. Patches 22/23 and 23/23 finally rework the .set_timings() operation. The series is based on top of the previously submitted "[PATCH v2 00/21] omapdrm: Rework the HPD-related operations" patch series. For convenience I've pushed it to my tree at git://linuxtv.org/pinchartl/media.git omapdrm/bridge/timings Since v1 patch "drm: Add display info bus flags to specify sync signals clock edges" has been dropped as a competing implementation has been merged in the DRM tree. Since v2 patch "drm/omap: encoder-tfp410: Don't fix timings in .set_timings() handler" has been split out of "drm/omap: dss: hdmi: Rename hdmi_display_(set|check)_timing() functions". Laurent Pinchart (23): drm/omap: Pass both output and display omap_dss_device to connector init drm/omap: Determine connector type directly in omap_connector.c drm/omap: dss: hdmi: Rename hdmi_display_(set|check)_timing() functions drm/omap: encoder-tfp410: Don't fix timings in .set_timings() handler drm/omap: Make the video_mode pointer to .set_timings() const drm/omap: Remove duplicate calls to .set_timings() operation drm/omap: Remove unneeded fallback for missing .check_timings() drm/omap: Don't store video mode internally for external encoders drm/omap: Store bus flags in the omap_dss_device structure drm/omap: Don't call .check_timings() operation recursively drm/omap: Query timing information from analog TV encoder drm/omap: Remove .get_timings() operation from display connectors drm/omap: panels: Don't modify fixed timings drm/omap: Move bus flag hack to encoder implementation drm/omap: Split mode fixup and mode set from encoder enable drm/omap: Call dispc timings check operation directly drm/omap: dpi: Don't fixup video mode in dpi_set_mode() drm/omap: dsi: Fixup video mode in .set_config() operation drm/omap: hdmi: Constify video mode and related pointers drm/omap: sdi: Fixup video mode in .check_timings() operation drm/omap: venc: Fixup video mode in .check_timings() operation drm/omap: Store CRTC timings in .set_timings() operation drm/omap: Don't call .set_timings() operation recursively .../gpu/drm/omapdrm/displays/connector-analog-tv.c | 52 -------- drivers/gpu/drm/omapdrm/displays/connector-dvi.c | 57 --------- drivers/gpu/drm/omapdrm/displays/connector-hdmi.c | 51 -------- drivers/gpu/drm/omapdrm/displays/encoder-opa362.c | 29 ----- drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c | 37 +----- .../gpu/drm/omapdrm/displays/encoder-tpd12s015.c | 26 ---- drivers/gpu/drm/omapdrm/displays/panel-dpi.c | 23 ---- .../omapdrm/displays/panel-lgphilips-lb035q02.c | 40 ++---- .../drm/omapdrm/displays/panel-nec-nl8048hl11.c | 29 +---- .../drm/omapdrm/displays/panel-sharp-ls037v7dw01.c | 38 ++---- .../drm/omapdrm/displays/panel-sony-acx565akm.c | 29 +---- .../drm/omapdrm/displays/panel-tpo-td028ttec1.c | 38 ++---- .../drm/omapdrm/displays/panel-tpo-td043mtea1.c | 38 ++---- drivers/gpu/drm/omapdrm/dss/dispc.c | 18 +-- drivers/gpu/drm/omapdrm/dss/dpi.c | 20 +-- drivers/gpu/drm/omapdrm/dss/dsi.c | 42 +++---- drivers/gpu/drm/omapdrm/dss/dss.h | 3 - drivers/gpu/drm/omapdrm/dss/hdmi.h | 8 +- drivers/gpu/drm/omapdrm/dss/hdmi4.c | 23 +--- drivers/gpu/drm/omapdrm/dss/hdmi5.c | 23 +--- drivers/gpu/drm/omapdrm/dss/hdmi5_core.c | 6 +- drivers/gpu/drm/omapdrm/dss/hdmi_wp.c | 8 +- drivers/gpu/drm/omapdrm/dss/omapdss.h | 6 +- drivers/gpu/drm/omapdrm/dss/sdi.c | 46 ++++--- drivers/gpu/drm/omapdrm/dss/venc.c | 39 +++--- drivers/gpu/drm/omapdrm/omap_connector.c | 140 +++++++++++++-------- drivers/gpu/drm/omapdrm/omap_connector.h | 5 +- drivers/gpu/drm/omapdrm/omap_crtc.c | 20 --- drivers/gpu/drm/omapdrm/omap_drv.c | 26 +--- drivers/gpu/drm/omapdrm/omap_encoder.c | 124 ++++++++++++------ 30 files changed, 314 insertions(+), 730 deletions(-) -- Regards, Laurent Pinchart _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel