[libcamera-devel,00/50] staging: media: imx: Prepare destaging of imx7-media-csi
mbox series

Message ID 20220510115147.19360-1-laurent.pinchart@ideasonboard.com
Headers show
Series
  • staging: media: imx: Prepare destaging of imx7-media-csi
Related show

Message

Laurent Pinchart May 10, 2022, 11:50 a.m. UTC
Hello,

This patch series prepares the imx7-media-csi for destaging by
decoupling it from the helpers shared with the i.MX6 IPUv3.

The strategy Paul and I have followed is to import copies of helper code
and, refactor it within the imx7-media-csi driver, and repeat until no
more shared helpers are used. There is still room for refactoring and
simplification of the imx7-media-csi driver, but I believe it is now in
a state clean enough to be moved out of staging.

The series also includes a few fixes or improvements in supported
formats that are now made possible thanks to this refactoring. See
patches 45/50 and 46/50 for details.

The code size has grown as a result. This is partly offset by code in
the shared helpers that can be removed or simplified, but I haven't
starting working on that. The helpers are now used for the i.MX6 IPUv3
only, so I will leave this exercise to anyone who would be interested in
destaging that driver as well.

Some of the items in the TODO file related to the imx7-media-csi driver
have been addressed. The two remaining items are frame interval monitor
support and restricting the list of supported formats to the SoC
version. The former isn't a destaging blocker in my opinion, as the
feature can be added later if desired (and frame interval monitoring
should then be moved to the V4L2 core). I believe the latter could also
be addressed after destaging the driver, but in any case, this is a
discussion for a future destaging series (which may come as soon as this
one is accepted).

Alexander, this also could greatly simplify your "[PATCH v3 0/8]
imx7/imx8mm media / csi patches" series.

Laurent Pinchart (48):
  staging: media: imx: imx7-media-csi: Initialize locks early on
  staging: media: imx: imx7-media-csi: Split imx_media_dev from probe()
  staging: media: imx: imx7-media-csi: Import notifier helpers
  staging: media: imx: imx7-media-csi: Drop duplicate link creation
  staging: media: imx: imx7-media-csi: Drop the imx_media notifier
  staging: media: imx: imx7-media-csi: Don't populate vdev lists
  staging: media: imx: imx7-media-csi: Drop unused frame_interval
  staging: media: imx: imx7-media-csi: Move format init to probe time
  staging: media: imx: imx7-media-csi: Import video device helpers
  staging: media: imx: imx7-media-csi: Drop legacy video device support
  staging: media: imx: imx7-media-csi: Drop unused controls support
  staging: media: imx: imx7-media-csi: Reorganize imx7_csi structure
  staging: media: imx: imx7-media-csi: Fold capture_priv into imx7_csi
  staging: media: imx: imx7-media-csi: Ensure consistent function prefix
  staging: media: imx: imx7-media-csi: Don't set subdev group id
  staging: media: imx: imx7-media-csi: Import imx_media_dev_init()
    helper
  staging: media: imx: imx7-media-csi: Embed imx_media_dev in imx7_csi
  staging: media: imx: imx7-media-csi: Drop imx_media_add_video_device
    call
  staging: media: imx: imx7-media-csi: Don't initialize unused fields
  staging: media: imx: imx7-media-csi: Inline imx_media_pipeline_pad()
  staging: media: imx: imx7-media-csi: Import
    imx_media_pipeline_set_stream()
  staging: media: imx: imx7-media-csi: Avoid unnecessary casts
  staging: media: imx: imx7-media-csi: Inline pipeline start/stop
  staging: media: imx: imx7-media-csi: Fold imx_media_dev into imx7_csi
  staging: media: imx: imx7-media-csi: Decouple from imx_media_buffer
  staging: media: imx: imx7-media-csi: Fold imx_media_video_dev into
    imx7_csi
  staging: media: imx: imx7-media-csi: Store imx7_csi in drv data
  staging: media: imx: imx7-media-csi: Decouple from imx_media_dma_buf
  staging: media: imx: imx7-media-csi: Decouple from shared macros
  staging: media: imx: imx7-media-csi: Drop error message on alloc
    failure
  staging: media: imx: imx7-media-csi: Import format helpers
  staging: media: imx: imx7-media-csi: Replace ipu_color_space with bool
    yuv field
  staging: media: imx: imx7-media-csi: Drop IC support from
    imx7_csi_try_colorimetry()
  staging: media: imx: imx7-media-csi: Drop IPU-only formats
  staging: media: imx: imx7-media-csi: Drop unsupported YUV and RGB
    formats
  staging: media: imx: imx7-media-csi: Make default formats consistent
  staging: media: imx: imx7-media-csi: Define macro for default mbus
    code
  staging: media: imx: imx7-media-csi: Simplify default mbus code in
    try_fmt
  staging: media: imx: imx7-media-csi: Drop YUV/RGB/BAYER format
    selectors
  staging: media: imx: imx7-media-csi: Drop unneeded imx7_csi_pixfmt
    fields
  staging: media: imx: imx7-media-csi: Inline imx7_csi_init_mbus_fmt()
  staging: media: imx: imx7-media-csi: Simplify default format in
    try_fmt
  staging: media: imx: imx7-media-csi: Fix list of supported formats
  staging: media: imx: imx7-media-csi: Add V4L2_PIX_FMT_Y14 support
  staging: media: imx: imx7-media-csi: Drop unneeded pixel format
    validation
  staging: media: imx: imx7-media-csi: Inline
    imx7_csi_enum_pixel_formats()
  staging: media: imx: imx7-media-csi: Drop V4L2 events support
  staging: media: imx: imx7-media-csi: Drop usage of shared helpers

Paul Elder (2):
  staging: media: imx: imx7-media-csi: Move misc init out of probe()
  staging: media: imx: imx7-media-csi: Remove imx_media_of_add_csi

 drivers/staging/media/imx/imx7-media-csi.c | 1370 +++++++++++++++++---
 1 file changed, 1172 insertions(+), 198 deletions(-)


base-commit: c5eb0a61238dd6faf37f58c9ce61c9980aaffd7a

Comments

Laurent Pinchart May 10, 2022, 11:56 a.m. UTC | #1
And of course I sent this to the wrong list... All my apologies for the
upcoming resend to the linux-media mailing list :-S

On Tue, May 10, 2022 at 02:50:57PM +0300, Laurent Pinchart via libcamera-devel wrote:
> Hello,
> 
> This patch series prepares the imx7-media-csi for destaging by
> decoupling it from the helpers shared with the i.MX6 IPUv3.
> 
> The strategy Paul and I have followed is to import copies of helper code
> and, refactor it within the imx7-media-csi driver, and repeat until no
> more shared helpers are used. There is still room for refactoring and
> simplification of the imx7-media-csi driver, but I believe it is now in
> a state clean enough to be moved out of staging.
> 
> The series also includes a few fixes or improvements in supported
> formats that are now made possible thanks to this refactoring. See
> patches 45/50 and 46/50 for details.
> 
> The code size has grown as a result. This is partly offset by code in
> the shared helpers that can be removed or simplified, but I haven't
> starting working on that. The helpers are now used for the i.MX6 IPUv3
> only, so I will leave this exercise to anyone who would be interested in
> destaging that driver as well.
> 
> Some of the items in the TODO file related to the imx7-media-csi driver
> have been addressed. The two remaining items are frame interval monitor
> support and restricting the list of supported formats to the SoC
> version. The former isn't a destaging blocker in my opinion, as the
> feature can be added later if desired (and frame interval monitoring
> should then be moved to the V4L2 core). I believe the latter could also
> be addressed after destaging the driver, but in any case, this is a
> discussion for a future destaging series (which may come as soon as this
> one is accepted).
> 
> Alexander, this also could greatly simplify your "[PATCH v3 0/8]
> imx7/imx8mm media / csi patches" series.
> 
> Laurent Pinchart (48):
>   staging: media: imx: imx7-media-csi: Initialize locks early on
>   staging: media: imx: imx7-media-csi: Split imx_media_dev from probe()
>   staging: media: imx: imx7-media-csi: Import notifier helpers
>   staging: media: imx: imx7-media-csi: Drop duplicate link creation
>   staging: media: imx: imx7-media-csi: Drop the imx_media notifier
>   staging: media: imx: imx7-media-csi: Don't populate vdev lists
>   staging: media: imx: imx7-media-csi: Drop unused frame_interval
>   staging: media: imx: imx7-media-csi: Move format init to probe time
>   staging: media: imx: imx7-media-csi: Import video device helpers
>   staging: media: imx: imx7-media-csi: Drop legacy video device support
>   staging: media: imx: imx7-media-csi: Drop unused controls support
>   staging: media: imx: imx7-media-csi: Reorganize imx7_csi structure
>   staging: media: imx: imx7-media-csi: Fold capture_priv into imx7_csi
>   staging: media: imx: imx7-media-csi: Ensure consistent function prefix
>   staging: media: imx: imx7-media-csi: Don't set subdev group id
>   staging: media: imx: imx7-media-csi: Import imx_media_dev_init()
>     helper
>   staging: media: imx: imx7-media-csi: Embed imx_media_dev in imx7_csi
>   staging: media: imx: imx7-media-csi: Drop imx_media_add_video_device
>     call
>   staging: media: imx: imx7-media-csi: Don't initialize unused fields
>   staging: media: imx: imx7-media-csi: Inline imx_media_pipeline_pad()
>   staging: media: imx: imx7-media-csi: Import
>     imx_media_pipeline_set_stream()
>   staging: media: imx: imx7-media-csi: Avoid unnecessary casts
>   staging: media: imx: imx7-media-csi: Inline pipeline start/stop
>   staging: media: imx: imx7-media-csi: Fold imx_media_dev into imx7_csi
>   staging: media: imx: imx7-media-csi: Decouple from imx_media_buffer
>   staging: media: imx: imx7-media-csi: Fold imx_media_video_dev into
>     imx7_csi
>   staging: media: imx: imx7-media-csi: Store imx7_csi in drv data
>   staging: media: imx: imx7-media-csi: Decouple from imx_media_dma_buf
>   staging: media: imx: imx7-media-csi: Decouple from shared macros
>   staging: media: imx: imx7-media-csi: Drop error message on alloc
>     failure
>   staging: media: imx: imx7-media-csi: Import format helpers
>   staging: media: imx: imx7-media-csi: Replace ipu_color_space with bool
>     yuv field
>   staging: media: imx: imx7-media-csi: Drop IC support from
>     imx7_csi_try_colorimetry()
>   staging: media: imx: imx7-media-csi: Drop IPU-only formats
>   staging: media: imx: imx7-media-csi: Drop unsupported YUV and RGB
>     formats
>   staging: media: imx: imx7-media-csi: Make default formats consistent
>   staging: media: imx: imx7-media-csi: Define macro for default mbus
>     code
>   staging: media: imx: imx7-media-csi: Simplify default mbus code in
>     try_fmt
>   staging: media: imx: imx7-media-csi: Drop YUV/RGB/BAYER format
>     selectors
>   staging: media: imx: imx7-media-csi: Drop unneeded imx7_csi_pixfmt
>     fields
>   staging: media: imx: imx7-media-csi: Inline imx7_csi_init_mbus_fmt()
>   staging: media: imx: imx7-media-csi: Simplify default format in
>     try_fmt
>   staging: media: imx: imx7-media-csi: Fix list of supported formats
>   staging: media: imx: imx7-media-csi: Add V4L2_PIX_FMT_Y14 support
>   staging: media: imx: imx7-media-csi: Drop unneeded pixel format
>     validation
>   staging: media: imx: imx7-media-csi: Inline
>     imx7_csi_enum_pixel_formats()
>   staging: media: imx: imx7-media-csi: Drop V4L2 events support
>   staging: media: imx: imx7-media-csi: Drop usage of shared helpers
> 
> Paul Elder (2):
>   staging: media: imx: imx7-media-csi: Move misc init out of probe()
>   staging: media: imx: imx7-media-csi: Remove imx_media_of_add_csi
> 
>  drivers/staging/media/imx/imx7-media-csi.c | 1370 +++++++++++++++++---
>  1 file changed, 1172 insertions(+), 198 deletions(-)
> 
> 
> base-commit: c5eb0a61238dd6faf37f58c9ce61c9980aaffd7a
> -- 
> Regards,
> 
> Laurent Pinchart
>