mbox series

[v5,00/23] media: imx: Create media links in bound notifiers

Message ID 20200420003930.11463-1-slongerbeam@gmail.com (mailing list archive)
Headers show
Series media: imx: Create media links in bound notifiers | expand

Message

Steve Longerbeam April 20, 2020, 12:39 a.m. UTC
Move media link creation into the notifier bound callbacks in the
set of subdevices required by imx (imx5/6/7 CSI, imx6/7 MIPI CSI-2
receivers, and video-mux).

Rui, Laurent:

Isn't it true that the imx7 CSI can only ever connect to a CSI mux?
See patch 18/23 which removes imx7_csi_get_upstream_endpoint(), and
19/23.

History:

v5:
- Revived patch "media: entity: Modify default behavior of
  media_entity_get_fwnode_pad" from v2.
- Added a v4l2_subdev_get_fwnode_pad_default, which can be used as
  a subdev's .get_fwnode_pad() operation if the subdev maps fwnode
  port id's and pad indexes 1:1. Used by video-mux, imx6/7 MIPI
  CSI-2 receivers, and imx7 CSI.
- Exported imx_media_create_fwnode_pad_link(s) to v4l2-core as
  v4l2_create_fwnode_links_to_pad() and v4l2_create_fwnode_links().
  Used by the video-mux, imx5/6/7 CSI's, and imx6/7 MIPI CSI-2
  receivers in their bound notifiers.
- Introduced a new group id IMX_MEDIA_GRP_ID_CSI_MUX, the imx6/7 CSI's
  will set the bound subdev grp_id to this if the bound subdev is a
  video mux.
- Removed imx7_csi_get_upstream_endpoint(), replacing with simpler
  code, see above.

v4:
- Removed the endpoint parsing callback APIs from video-mux and imx drivers
  as suggested by Sakari, replacing with endpoint parsing local to the
  drivers and the use of v4l2_async_notifier_add_fwnode_remote_subdev().
  As a result convenience function v4l2_async_register_fwnode_subdev()
  is no longer used and is reverted.

v3:
- The changes to the default behaviour in media_entity_get_fwnode_pad(),
  and the fixes to current media drivers that call it inconsistently, have
  been put-off to another time. Instead this version implements the
  get_fwnode_pad operation where required in the imx and video-mux
  subdevices to make media link creation work correctly. The
  improvements to media_entity_get_fwnode_pad() can wait to another
  patch series.

v2:
- rename/move the notifier-to-state inlines in imx7-mipi-csis.c and
  imx7-media-csi.c, suggested by Rui Silva.
- rewrite imx_media_create_links() to only add the missing media links
  from the imx6 MIPI CSI-2 receiver.


Steve Longerbeam (23):
  media: entity: Pass entity to get_fwnode_pad operation
  media: entity: Modify default behavior of media_entity_get_fwnode_pad
  media: v4l2-subdev: add v4l2_subdev_get_fwnode_pad_default
  media: v4l2-mc: add v4l2_create_fwnode_links helpers
  media: video-mux: Parse information from firmware without using
    callbacks
  media: imx: Parse information from firmware without using callbacks
  Revert "media: v4l2-fwnode: Add a convenience function for registering
    subdevs with notifiers"
  media: imx: csi: Implement get_fwnode_pad op
  media: video-mux: Implement get_fwnode_pad op
  media: imx: mipi csi-2: Implement get_fwnode_pad op
  media: imx: imx7-mipi-csis: Implement get_fwnode_pad op
  media: imx: imx7-media-csi: Implement get_fwnode_pad op
  media: video-mux: Create media links in bound notifier
  media: imx: mipi csi-2: Create media links in bound notifier
  media: imx7: mipi csis: Create media links in bound notifier
  media: imx7: csi: Create media links in bound notifier
  media: imx: csi: Create media links in bound notifier
  media: imx7: csi: Remove imx7_csi_get_upstream_endpoint()
  media: imx5/6/7: csi: Mark a bound video mux as a CSI mux
  media: imx: csi: Lookup upstream endpoint with
    imx_media_get_pad_fwnode
  media: imx: Create missing links from CSI-2 receiver
  media: imx: silence a couple debug messages
  media: imx: TODO: Remove media link creation todos

 drivers/media/mc/mc-entity.c                  |  27 ++-
 drivers/media/platform/video-mux.c            |  87 +++++++--
 drivers/media/v4l2-core/v4l2-fwnode.c         |  62 ------
 drivers/media/v4l2-core/v4l2-mc.c             |  95 +++++++++
 drivers/media/v4l2-core/v4l2-subdev.c         |  25 +++
 drivers/staging/media/imx/TODO                |  29 ---
 drivers/staging/media/imx/imx-media-csi.c     | 181 +++++++++++-------
 .../staging/media/imx/imx-media-dev-common.c  |  50 ++---
 drivers/staging/media/imx/imx-media-dev.c     |   2 +-
 .../staging/media/imx/imx-media-internal-sd.c |   6 +-
 drivers/staging/media/imx/imx-media-of.c      | 114 -----------
 drivers/staging/media/imx/imx-media-utils.c   |  33 ++++
 drivers/staging/media/imx/imx-media.h         |   6 +-
 drivers/staging/media/imx/imx6-mipi-csi2.c    |  93 +++++++--
 drivers/staging/media/imx/imx7-media-csi.c    | 160 +++++++++-------
 drivers/staging/media/imx/imx7-mipi-csis.c    | 107 ++++++++---
 include/media/media-entity.h                  |   9 +-
 include/media/v4l2-fwnode.h                   |  38 ----
 include/media/v4l2-mc.h                       |  48 +++++
 include/media/v4l2-subdev.h                   |  17 ++
 20 files changed, 687 insertions(+), 502 deletions(-)