[PATCH v2 00/29] Remove the omapdrm and omapdss devices from platform code

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon May 8 11:32:35 UTC 2017


Hello,

This patch series is a second, extended version of the code previously posted
as "[PATCH/RFC 0/7] Remove the omapdrm device 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 few small cleanups and unused features removal
(01/28 to 04/28). It then slowly replaces all uses of the omapdrm and omapdss
platform data as explained above (05/28 to 20/28).

The next step is to remove 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). Patches 21/28 to 23/28 move
the useful features of the core to the omapdss_dss driver. Patch 24/28 adds
omapdrm platform device registration to the omapdss_dss driver to replace
board code, and patch 25/28 finally removes the omapdss platform driver.

Note that registering the omapdrm platform device from within the omapdss_dss
driver is a hack, but isn't worse than the current situation. Quite the
contrary, given that the omapdrm device exists for the sole purpose of
supporting the omapdrm/omapdss driver architecture, moving it out of platform
code can be considered as (slightly) cleaner. In any case, it will be easier
to refactor the code as everything is now isolated on the driver side.

Patches 26/28 and 27/28 remove the now unnecessary platform devices from
platform code, and patch 28/28 removes the now unused omapdrm platform data
structure.

The series will be annoying to merge given that it touches multiple subsystems
(ARM core, DRM, FBDEV and ALSA). The easiest solution would be to merge
everything through the DRM tree as that's where the bulk of changes lies. This
would require an ack from Bartlomiej for patch 04/28, from Peter, Liam or Mark
on patch 18/28 and from Tony on patches 26/28 and 27/28.

The patches are currently based on top of v4.11.

Laurent Pinchart (28):
  drm: omapdrm: Remove duplicate error messages when mapping memory
  drm: omapdrm: Drop support for non-DT devices
  drm: omapdrm: Remove unused dss_get_core_pdev() function
  drm: omapdrm: Remove unused default display name support
  drm: omapdrm: Infer the OMAP version from the SoC family
  drm: omapdrm: dispc: Select features based on compatible string
  drm: omapdrm: dpi: Remove platform driver
  drm: omapdrm: dpi: Replace OMAP SoC model checks with DSS device type
  drm: omapdrm: dsi: Store DSI type and PLL hardware data in OF data
  drm: omapdrm: dsi: Handle pin muxing internally
  drm: omapdrm: dss: Select features based on compatible string
  drm: omapdrm: dss: Split operations out of dss_features structure
  drm: omapdrm: dss: Initialize DSS internal features at probe time
  drm: omapdrm: hdmi: Store PHY features in PHY data structure
  drm: omapdrm: hdmi: Store PHY features in HDMI transmitter drivers
  drm: omapdrm: hdmi: Store PLL hardware data in HDMI transmitter
    drivers
  drm: omapdrm: hdmi: Replace OMAP SoC model check with HDMI xmit
    version
  drm: omapdrm: hdmi: Pass HDMI core version as integer to HDMI audio
  drm: omapdrm: sdi: Remove platform driver
  drm: omapdrm: Don't forward set_min_bus_tput() to no-op platform code
  drm: omapdrm: Move all debugfs code from core to dss
  drm: omapdrm: Move shutdown() handler from core to dss
  drm: omapdrm: Merge the dss_features and omap_dss_features structures
  drm: omapdrm: Register omapdrm platform device in omapdss driver
  drm: omapdrm: Remove the omapdss driver
  ARM: OMAP2+: Remove unused omapdrm platform device
  ARM: OMAP2+: Don't register omapdss device for omapdrm
  drm: omapdrm: Remove omapdrm platform data

 arch/arm/mach-omap2/Makefile                |   2 +-
 arch/arm/mach-omap2/display.c               | 118 +++++------
 arch/arm/mach-omap2/display.h               |   1 -
 arch/arm/mach-omap2/drm.c                   |  53 -----
 drivers/gpu/drm/omapdrm/dss/core.c          | 230 ++-------------------
 drivers/gpu/drm/omapdrm/dss/dispc.c         |  96 +++------
 drivers/gpu/drm/omapdrm/dss/display.c       |  19 +-
 drivers/gpu/drm/omapdrm/dss/dpi.c           | 150 +++-----------
 drivers/gpu/drm/omapdrm/dss/dsi.c           | 298 ++++++++++++++--------------
 drivers/gpu/drm/omapdrm/dss/dss.c           | 274 +++++++++++--------------
 drivers/gpu/drm/omapdrm/dss/dss.h           |  46 +++--
 drivers/gpu/drm/omapdrm/dss/dss_features.c  | 220 +++++++++++++-------
 drivers/gpu/drm/omapdrm/dss/dss_features.h  |  41 +++-
 drivers/gpu/drm/omapdrm/dss/hdmi.h          |  16 +-
 drivers/gpu/drm/omapdrm/dss/hdmi4.c         |  47 ++++-
 drivers/gpu/drm/omapdrm/dss/hdmi4_core.c    |   9 +-
 drivers/gpu/drm/omapdrm/dss/hdmi5.c         |  48 ++++-
 drivers/gpu/drm/omapdrm/dss/hdmi5_core.c    |   9 +-
 drivers/gpu/drm/omapdrm/dss/hdmi_phy.c      |  79 +-------
 drivers/gpu/drm/omapdrm/dss/hdmi_pll.c      |  86 +-------
 drivers/gpu/drm/omapdrm/dss/hdmi_wp.c       |  24 +--
 drivers/gpu/drm/omapdrm/dss/omapdss.h       |   2 -
 drivers/gpu/drm/omapdrm/dss/rfbi.c          |  12 +-
 drivers/gpu/drm/omapdrm/dss/sdi.c           |  54 -----
 drivers/gpu/drm/omapdrm/dss/venc.c          |  28 +--
 drivers/gpu/drm/omapdrm/dss/video-pll.c     |  20 +-
 drivers/gpu/drm/omapdrm/omap_drv.c          |  16 +-
 drivers/gpu/drm/omapdrm/omap_drv.h          |   1 -
 drivers/video/fbdev/omap2/omapfb/dss/core.c |   2 -
 include/linux/platform_data/omap_drm.h      |  53 -----
 include/linux/platform_data/omapdss.h       |   1 -
 include/sound/omap-hdmi-audio.h             |   2 +-
 sound/soc/omap/omap-hdmi-audio.c            |   9 +-
 33 files changed, 763 insertions(+), 1303 deletions(-)
 delete mode 100644 arch/arm/mach-omap2/drm.c
 delete mode 100644 include/linux/platform_data/omap_drm.h

-- 
Regards,

Laurent Pinchart



More information about the dri-devel mailing list