[PATCH v3 00/35] omapdrm: Deconstruct DSS features

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Aug 4 22:43:44 UTC 2017


Hello,

This patch series is a third version of the code previously posted as
"[PATCH v2 00/29] Remove the omapdrm and omapdss devices from platform code".

The omapdss/omapdrm initialization code is quite a mess. The physical devices
are instantiated from DT, but two virtual devices named omapdrm and omapdss
are instanciated from platform code to pass various pieces of platform data to
the drivers.

The omapdrm and omapdss platform devices are currently used to pass data and
function pointers from board code to the drivers for the purpose of

- identifying the OMAP SoC revision
- controlling the DSI pads
- configuring bus throughput

It turns out that all these can be handled in the omapdrm and omapdss drivers
without the need for platform data.

- The SoC revision is used to identify the version of various DSS IP cores,
which can instead be done through compatible string matching (with the help of
soc_device_match() in two cases where ES version is needed).

- The DSI pads control can be performed by the driver directly without calling
board code, accessing the related registers through syscon.

- Bus throughput control is implemented in mach-omap2 as a no-op, so we can
just drop the code.

This patch series starts with a new patch that fixes soc_device_match() usage
on OMAP2+. It turned out that OMAP2+ registers SoC device attributes at late
init time, making soc_device_match() impossible to use for drivers at probe
time, which is unfortunately the location where the feature is most needed.

The next five patches (02/35 to 06/35) are small and simple unneeded or unused
code removal. The next two patches (07/35 and 08/35) are cleanups that make
sense by themselves and will be needed by later refactoring.

The series then starts removing usage of the DSS platform data. It first
removes callbacks to platform code in patches 09/35 and 10/35, and then
tackles the larger task of replacing DSS version usage with model data
stored in OF or SoC device match entries (patches 11/35 to 14/35).

The next large user of the DSS version is the omap_dss_features infrastructure
not to be confused with the similarly named dss_features. The former is a
dirty mix of data related to all IP cores in the while display device, while
the latter contains data related to the DSS itself. The next patches
deconstruct omap_dss_features by removing one unneeded features field (15/35),
and slowly moving features to where they belong (patches 16/35 to 34/35).
Patch 35/35 finally removes the omap_dss_features altogether as they're then
empty.

Note that patches 17/35 and 18/35 are not strictly related to
omap_dss_features deconstruction, but they pave the road to removing the
omapdss platform driver (for the virtual omapdss platform device, also known
as core code, not to be confused with the omapdss_dss driver for the DSS
hardware device) which is the ultimate goal of this effort and should be ready
for upstreaming.

Compared to v2, the DSS version usage in the HDMI4 and HDMI5 drivers is still
present, as the related patches were more controversial and require more work.
I will tackle that next as a separate patch series that will finally remove
omapdss platform driver

This version should be simpler to merge given that it doesn't touch the FBDEV
and ALSA subsystems, but still carries an annoying dependency on OMAP2+
platform code. The easiest solution would be to merge the single OMAP2+ patch
(01/35) through the DRM tree as that's where the bulk of changes lies.

The patches are currently based on top of v4.13-rc2 (-rc1 doesn't boot on the
AM57xx board I use for testing) and have been tested on OMAP3 (BeagleBoard-xM,
DM3730), OMAP4 (pandaboard, OMAP4460) and OMAP5 (AM572x EVM, AM572x). Many
regressions were found, and fixed :-)

Laurent Pinchart (35):
  ARM: OMAP2+: Register SoC device attributes from machine .init()
  drm: omapdrm: acx565akm: Remove unneeded check for OF node
  drm: omapdrm: connector-analog-tv: Remove unneeded check for OF node
  drm: omapdrm: panel-dpi: Remove unneeded check for OF node
  drm: omapdrm: dpi: Remove unneeded regulator check
  drm: omapdrm: venc: Don't export omap_dss_pal_vm and omap_dss_ntsc_vm
  drm: omapdrm: hdmi: Store PHY features in PHY data structure
  drm: omapdrm: dss: Split operations out of dss_features structure
  drm: omapdrm: dsi: Handle pin muxing internally
  drm: omapdrm: Don't forward set_min_bus_tput() to no-op platform code
  drm: omapdrm: dispc: Select features based on compatible string
  drm: omapdrm: dpi: Replace OMAP SoC model checks with DSS model
  drm: omapdrm: dsi: Store DSI model and PLL hardware data in OF data
  drm: omapdrm: dss: Select features based on compatible string
  drm: omapdrm: dss: Use supported outputs instead of display types
  drm: omapdrm: dss: Initialize DSS internal features at probe time
  drm: omapdrm: Move all debugfs code from core to dss
  drm: omapdrm: Move shutdown() handler from core to dss
  drm: omapdrm: Move size unit features to dispc_features structure
  drm: omapdrm: Move color modes feature to dispc_features structure
  drm: omapdrm: Move overlay caps features to dispc_features structure
  drm: omapdrm: Move num_ovls and num_mgrs to dispc_features structure
  drm: omapdrm: Move DISPC_CLK_SWITCH reg feature to struct dss_features
  drm: omapdrm: Move reg_fields to dispc_features structure
  drm: omapdrm: Move FEAT_VENC_REQUIRES_TV_DAC_CLK to venc driver
  drm: omapdrm: Move FEAT_DSI_* features to dsi driver
  drm: omapdrm: Move FEAT_HDMI_* features to hdmi4 driver
  drm: omapdrm: Move FEAT_DPI_USES_VDDS_DSI feature to dpi code
  drm: omapdrm: Move FEAT_LCD_CLK_SRC feature to dss_features structure
  drm: omapdrm: Move FEAT_* features to dispc driver
  drm: omapdrm: Move FEAT_PARAM_DSI* features to dsi driver
  drm: omapdrm: Move PCD, LINEWIDTH and DOWNSCALE features to dispc
    driver
  drm: omapdrm: Move DSS_FCK feature to dss driver
  drm: omapdrm: Move supported outputs feature to dss driver
  drm: omapdrm: Remove dss_features.h

 arch/arm/mach-omap2/board-generic.c                |   1 +
 arch/arm/mach-omap2/io.c                           |   1 -
 .../gpu/drm/omapdrm/displays/connector-analog-tv.c |   3 +
 drivers/gpu/drm/omapdrm/displays/panel-dpi.c       |   3 +
 .../drm/omapdrm/displays/panel-sony-acx565akm.c    |   3 +
 drivers/gpu/drm/omapdrm/dss/Makefile               |   2 +-
 drivers/gpu/drm/omapdrm/dss/core.c                 | 133 ---
 drivers/gpu/drm/omapdrm/dss/dispc.c                | 824 ++++++++++++++-----
 drivers/gpu/drm/omapdrm/dss/dpi.c                  |  88 +-
 drivers/gpu/drm/omapdrm/dss/dsi.c                  | 307 ++++---
 drivers/gpu/drm/omapdrm/dss/dss.c                  | 406 ++++++---
 drivers/gpu/drm/omapdrm/dss/dss.h                  |  46 +-
 drivers/gpu/drm/omapdrm/dss/dss_features.c         | 905 ---------------------
 drivers/gpu/drm/omapdrm/dss/dss_features.h         | 109 ---
 drivers/gpu/drm/omapdrm/dss/hdmi.h                 |   9 +
 drivers/gpu/drm/omapdrm/dss/hdmi4.c                |   1 -
 drivers/gpu/drm/omapdrm/dss/hdmi4_core.c           |  38 +-
 drivers/gpu/drm/omapdrm/dss/hdmi5.c                |   1 -
 drivers/gpu/drm/omapdrm/dss/hdmi_phy.c             |  23 +-
 drivers/gpu/drm/omapdrm/dss/omapdss.h              |   7 -
 drivers/gpu/drm/omapdrm/dss/venc.c                 |  21 +-
 drivers/gpu/drm/omapdrm/dss/video-pll.c            |   1 -
 22 files changed, 1296 insertions(+), 1636 deletions(-)
 delete mode 100644 drivers/gpu/drm/omapdrm/dss/dss_features.c
 delete mode 100644 drivers/gpu/drm/omapdrm/dss/dss_features.h

-- 
Regards,

Laurent Pinchart



More information about the dri-devel mailing list