[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