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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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/22 to 07/22. Patches
08/22 and 09/22 start reworking the .check_timings() operation by making use
of the bus flags. Patches 10/22 to 12/22 rework the .get_timings() operation,
and patches 13/22 to 20/22 complete the .check_timings() rework. Patches 21/22
and 22/22 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.

Laurent Pinchart (22):
  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/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




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux