[PATCH 00/23] omapdrm: Rework the timing-related operations

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Jun 8 16:29:03 UTC 2018


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 07/23, and then
introduces new DRM bus flags to specify sync signal clock edges using the DRM
bus_flags mechanism in patch 08/23. This is the only extension to the DRM
core.

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 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

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: 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: Add display info bus flags to specify sync signals clock edges
  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

 drivers/gpu/drm/drm_modes.c                        |  10 +-
 .../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 ++++++++++++------
 include/drm/drm_connector.h                        |   4 +
 32 files changed, 326 insertions(+), 732 deletions(-)

-- 
Regards,

Laurent Pinchart



More information about the dri-devel mailing list