
- The Frame Interval Monitor could be exported to v4l2-core for
  general use.

- The CSI subdevice parses its nearest upstream neighbor's device-tree
  bus config in order to setup the CSI. Laurent Pinchart argues that
  instead the CSI subdev should call its neighbor's g_mbus_config op
  (which should be propagated if necessary) to get this info. However
  Hans Verkuil is planning to remove the g_mbus_config op. For now this
  driver uses the parsed DT bus config method until this issue is
  resolved.

  2020-06: g_mbus has been removed in favour of the get_mbus_config pad
  operation which should be used to avoid parsing the remote endpoint
  configuration.

- This media driver supports inheriting V4L2 controls to the
  video capture devices, from the subdevices in the capture device's
  pipeline. The controls for each capture device are updated in the
  link_notify callback when the pipeline is modified. This feature should be
  removed, userspace should use the subdev-based userspace API instead.

- Similarly to the legacy control handling, legacy format handling where
  formats on the video nodes are influenced by the active format of the
  connected subdev should be removed.

- i.MX7: all of the above, since it uses the imx media core

- i.MX7: use Frame Interval Monitor

- imx7-media-csi: Restrict the supported formats list to the SoC version.

  The imx7 CSI bridge can be configured to sample pixel components from the Rx
  queue in single (8bpp) or double (16bpp) component modes. Image format
  variants with different sample sizes (ie YUYV_2X8 vs YUYV_1X16) determine the
  pixel components sampling size per each clock cycle and their packing mode
  (see imx7_csi_configure() for details).

  As the imx7 CSI bridge can be interfaced with different IP blocks depending on
  the SoC model it is integrated on, the Rx queue sampling size should match
  the size of the samples transferred by the transmitting IP block.

  To avoid mis-configurations of the capture pipeline, the enumeration of the
  supported formats should be restricted to match the pixel source transmitting
  mode.

  Example: i.MX8MM SoC integrates the CSI bridge with the Samsung CSIS CSI-2
  receiver which operates in dual pixel sampling mode. The CSI bridge should
  only expose the 1X16 formats variant which instructs it to operate in dual
  pixel sampling mode. When the CSI bridge is instead integrated on an i.MX7,
  which supports both serial and parallel input, it should expose both variants.

  This currently only applies to YUYV formats, but other formats might need
  to be handled in the same way.
