mbox series

[v7,0/6] Allwinner A31/A83T MIPI CSI-2 and A31 ISP / ISP Driver

Message ID 20220924153304.77598-1-paul.kocialkowski@bootlin.com (mailing list archive)
Headers show
Series Allwinner A31/A83T MIPI CSI-2 and A31 ISP / ISP Driver | expand

Message

Paul Kocialkowski Sept. 24, 2022, 3:32 p.m. UTC
This part only concerns the introduction of the new ISP driver and related
adaptation of the CSI driver.

Most non-dt patches still need reviewing but should be pretty straightforward. 
Since this multi-part series has been going on for a while, it would be great
to see it merged soon!

Changes since v6:
- Added a per-compatible check for the required port in dt binding;
- Reworded ISP output port description in dt binding;
- Reversed ISP detection order to have fwnode first;
- Removed info print when ISP link is detected;
- Added warn print when ISP is linked but not enabled in config;
- Fixed sun6i_csi_isp_detect return type;
- Removed useless initialization in sun6i_csi_isp_detect;
- Fixed typo in sun6i_csi_isp_detect;
- Added collected tags;

Changes since v5:
- Rebased on latest media tree;
- Added collected tag;
- Switched to using media_pad_remote_pad_first;
- Switched to using media_pad_remote_pad_unique.

Changes since v4:
- Fixed device-tree binding indent-align;
- Added collected tag;
- Rebased on latest media tree;

Changes since v3:
- Removed the v4l2 controls handler from the driver;
- Added variant structure for table sizes;
- Removed the info message about video device registration;
- Removed comments in uAPI header;
- Used '/schemas/graph.yaml#/properties/port' whenever possible in bindings;
- Added CSI patches dependent on the ISP driver;
- Rebased on the latest media tree;

Changes since all-in-one v2:
- Updated Kconfig to follow the latest media-wide changes;
- Reworked async subdev handling with a dedicated structure holding the
  corresponding source to avoid matching in the driver;
- Switched to clock-managed regmap mmio;
- Used helper to get a single enabled link for an entity's pad, to replace
  source selection at link_validate time and select the remote source at
  stream on time instead;
- Added mutex for mbus format serialization;
- Used endpoint-base instead of video-interface for "internal" endpoints
  in device-tree schema;
- Added TODO with unstaging requirements;
- Various cosmetic cleanups;
- Updated copyright years;

Paul Kocialkowski (6):
  dt-bindings: media: Add Allwinner A31 ISP bindings documentation
  dt-bindings: media: sun6i-a31-csi: Add internal output port to the ISP
  staging: media: Add support for the Allwinner A31 ISP
  MAINTAINERS: Add entry for the Allwinner A31 ISP driver
  media: sun6i-csi: Detect the availability of the ISP
  media: sun6i-csi: Add support for hooking to the isp devices

 .../media/allwinner,sun6i-a31-csi.yaml        |   4 +
 .../media/allwinner,sun6i-a31-isp.yaml        | 101 +++
 MAINTAINERS                                   |   9 +
 .../platform/sunxi/sun6i-csi/sun6i_csi.c      |  75 +-
 .../platform/sunxi/sun6i-csi/sun6i_csi.h      |  10 +
 .../sunxi/sun6i-csi/sun6i_csi_bridge.c        |  32 +-
 .../sunxi/sun6i-csi/sun6i_csi_capture.c       |  19 +-
 .../sunxi/sun6i-csi/sun6i_csi_capture.h       |   1 +
 drivers/staging/media/sunxi/Kconfig           |   1 +
 drivers/staging/media/sunxi/Makefile          |   1 +
 drivers/staging/media/sunxi/sun6i-isp/Kconfig |  15 +
 .../staging/media/sunxi/sun6i-isp/Makefile    |   4 +
 .../staging/media/sunxi/sun6i-isp/TODO.txt    |   6 +
 .../staging/media/sunxi/sun6i-isp/sun6i_isp.c | 555 +++++++++++++
 .../staging/media/sunxi/sun6i-isp/sun6i_isp.h |  90 +++
 .../media/sunxi/sun6i-isp/sun6i_isp_capture.c | 742 ++++++++++++++++++
 .../media/sunxi/sun6i-isp/sun6i_isp_capture.h |  78 ++
 .../media/sunxi/sun6i-isp/sun6i_isp_params.c  | 566 +++++++++++++
 .../media/sunxi/sun6i-isp/sun6i_isp_params.h  |  52 ++
 .../media/sunxi/sun6i-isp/sun6i_isp_proc.c    | 577 ++++++++++++++
 .../media/sunxi/sun6i-isp/sun6i_isp_proc.h    |  66 ++
 .../media/sunxi/sun6i-isp/sun6i_isp_reg.h     | 275 +++++++
 .../sunxi/sun6i-isp/uapi/sun6i-isp-config.h   |  43 +
 23 files changed, 3309 insertions(+), 13 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/media/allwinner,sun6i-a31-isp.yaml
 create mode 100644 drivers/staging/media/sunxi/sun6i-isp/Kconfig
 create mode 100644 drivers/staging/media/sunxi/sun6i-isp/Makefile
 create mode 100644 drivers/staging/media/sunxi/sun6i-isp/TODO.txt
 create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp.c
 create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp.h
 create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c
 create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.h
 create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c
 create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.h
 create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c
 create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.h
 create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_reg.h
 create mode 100644 drivers/staging/media/sunxi/sun6i-isp/uapi/sun6i-isp-config.h

Comments

Paul Kocialkowski Oct. 21, 2022, 2:14 p.m. UTC | #1
Hi,

On Sat 24 Sep 22, 17:32, Paul Kocialkowski wrote:
> This part only concerns the introduction of the new ISP driver and related
> adaptation of the CSI driver.

I don't think there is any significant issue preventing this series from
being merged in Linux 6.2 at this point.

Could we move forward on it? It's been around for quite some time now.

Thanks!

Paul

> Most non-dt patches still need reviewing but should be pretty straightforward. 
> Since this multi-part series has been going on for a while, it would be great
> to see it merged soon!
> 
> Changes since v6:
> - Added a per-compatible check for the required port in dt binding;
> - Reworded ISP output port description in dt binding;
> - Reversed ISP detection order to have fwnode first;
> - Removed info print when ISP link is detected;
> - Added warn print when ISP is linked but not enabled in config;
> - Fixed sun6i_csi_isp_detect return type;
> - Removed useless initialization in sun6i_csi_isp_detect;
> - Fixed typo in sun6i_csi_isp_detect;
> - Added collected tags;
> 
> Changes since v5:
> - Rebased on latest media tree;
> - Added collected tag;
> - Switched to using media_pad_remote_pad_first;
> - Switched to using media_pad_remote_pad_unique.
> 
> Changes since v4:
> - Fixed device-tree binding indent-align;
> - Added collected tag;
> - Rebased on latest media tree;
> 
> Changes since v3:
> - Removed the v4l2 controls handler from the driver;
> - Added variant structure for table sizes;
> - Removed the info message about video device registration;
> - Removed comments in uAPI header;
> - Used '/schemas/graph.yaml#/properties/port' whenever possible in bindings;
> - Added CSI patches dependent on the ISP driver;
> - Rebased on the latest media tree;
> 
> Changes since all-in-one v2:
> - Updated Kconfig to follow the latest media-wide changes;
> - Reworked async subdev handling with a dedicated structure holding the
>   corresponding source to avoid matching in the driver;
> - Switched to clock-managed regmap mmio;
> - Used helper to get a single enabled link for an entity's pad, to replace
>   source selection at link_validate time and select the remote source at
>   stream on time instead;
> - Added mutex for mbus format serialization;
> - Used endpoint-base instead of video-interface for "internal" endpoints
>   in device-tree schema;
> - Added TODO with unstaging requirements;
> - Various cosmetic cleanups;
> - Updated copyright years;
> 
> Paul Kocialkowski (6):
>   dt-bindings: media: Add Allwinner A31 ISP bindings documentation
>   dt-bindings: media: sun6i-a31-csi: Add internal output port to the ISP
>   staging: media: Add support for the Allwinner A31 ISP
>   MAINTAINERS: Add entry for the Allwinner A31 ISP driver
>   media: sun6i-csi: Detect the availability of the ISP
>   media: sun6i-csi: Add support for hooking to the isp devices
> 
>  .../media/allwinner,sun6i-a31-csi.yaml        |   4 +
>  .../media/allwinner,sun6i-a31-isp.yaml        | 101 +++
>  MAINTAINERS                                   |   9 +
>  .../platform/sunxi/sun6i-csi/sun6i_csi.c      |  75 +-
>  .../platform/sunxi/sun6i-csi/sun6i_csi.h      |  10 +
>  .../sunxi/sun6i-csi/sun6i_csi_bridge.c        |  32 +-
>  .../sunxi/sun6i-csi/sun6i_csi_capture.c       |  19 +-
>  .../sunxi/sun6i-csi/sun6i_csi_capture.h       |   1 +
>  drivers/staging/media/sunxi/Kconfig           |   1 +
>  drivers/staging/media/sunxi/Makefile          |   1 +
>  drivers/staging/media/sunxi/sun6i-isp/Kconfig |  15 +
>  .../staging/media/sunxi/sun6i-isp/Makefile    |   4 +
>  .../staging/media/sunxi/sun6i-isp/TODO.txt    |   6 +
>  .../staging/media/sunxi/sun6i-isp/sun6i_isp.c | 555 +++++++++++++
>  .../staging/media/sunxi/sun6i-isp/sun6i_isp.h |  90 +++
>  .../media/sunxi/sun6i-isp/sun6i_isp_capture.c | 742 ++++++++++++++++++
>  .../media/sunxi/sun6i-isp/sun6i_isp_capture.h |  78 ++
>  .../media/sunxi/sun6i-isp/sun6i_isp_params.c  | 566 +++++++++++++
>  .../media/sunxi/sun6i-isp/sun6i_isp_params.h  |  52 ++
>  .../media/sunxi/sun6i-isp/sun6i_isp_proc.c    | 577 ++++++++++++++
>  .../media/sunxi/sun6i-isp/sun6i_isp_proc.h    |  66 ++
>  .../media/sunxi/sun6i-isp/sun6i_isp_reg.h     | 275 +++++++
>  .../sunxi/sun6i-isp/uapi/sun6i-isp-config.h   |  43 +
>  23 files changed, 3309 insertions(+), 13 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/media/allwinner,sun6i-a31-isp.yaml
>  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/Kconfig
>  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/Makefile
>  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/TODO.txt
>  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp.c
>  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp.h
>  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c
>  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.h
>  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c
>  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.h
>  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c
>  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.h
>  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_reg.h
>  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/uapi/sun6i-isp-config.h
> 
> -- 
> 2.37.3
>
Jernej Škrabec Oct. 25, 2022, 5:01 a.m. UTC | #2
Hi Paul,

Dne petek, 21. oktober 2022 ob 16:14:26 CEST je Paul Kocialkowski napisal(a):
> Hi,
> 
> On Sat 24 Sep 22, 17:32, Paul Kocialkowski wrote:
> > This part only concerns the introduction of the new ISP driver and related
> > adaptation of the CSI driver.
> 
> I don't think there is any significant issue preventing this series from
> being merged in Linux 6.2 at this point.
> 
> Could we move forward on it? It's been around for quite some time now.

While I'm no expert in ISP drivers, I can take a look (for other series too) 
this week.

Could you attach output of v4l2-complience output (for both)?

Best regards,
Jernej

> 
> Thanks!
> 
> Paul
> 
> > Most non-dt patches still need reviewing but should be pretty
> > straightforward. Since this multi-part series has been going on for a
> > while, it would be great to see it merged soon!
> > 
> > Changes since v6:
> > - Added a per-compatible check for the required port in dt binding;
> > - Reworded ISP output port description in dt binding;
> > - Reversed ISP detection order to have fwnode first;
> > - Removed info print when ISP link is detected;
> > - Added warn print when ISP is linked but not enabled in config;
> > - Fixed sun6i_csi_isp_detect return type;
> > - Removed useless initialization in sun6i_csi_isp_detect;
> > - Fixed typo in sun6i_csi_isp_detect;
> > - Added collected tags;
> > 
> > Changes since v5:
> > - Rebased on latest media tree;
> > - Added collected tag;
> > - Switched to using media_pad_remote_pad_first;
> > - Switched to using media_pad_remote_pad_unique.
> > 
> > Changes since v4:
> > - Fixed device-tree binding indent-align;
> > - Added collected tag;
> > - Rebased on latest media tree;
> > 
> > Changes since v3:
> > - Removed the v4l2 controls handler from the driver;
> > - Added variant structure for table sizes;
> > - Removed the info message about video device registration;
> > - Removed comments in uAPI header;
> > - Used '/schemas/graph.yaml#/properties/port' whenever possible in
> > bindings; - Added CSI patches dependent on the ISP driver;
> > - Rebased on the latest media tree;
> > 
> > Changes since all-in-one v2:
> > - Updated Kconfig to follow the latest media-wide changes;
> > - Reworked async subdev handling with a dedicated structure holding the
> > 
> >   corresponding source to avoid matching in the driver;
> > 
> > - Switched to clock-managed regmap mmio;
> > - Used helper to get a single enabled link for an entity's pad, to replace
> > 
> >   source selection at link_validate time and select the remote source at
> >   stream on time instead;
> > 
> > - Added mutex for mbus format serialization;
> > - Used endpoint-base instead of video-interface for "internal" endpoints
> > 
> >   in device-tree schema;
> > 
> > - Added TODO with unstaging requirements;
> > - Various cosmetic cleanups;
> > - Updated copyright years;
> > 
> > Paul Kocialkowski (6):
> >   dt-bindings: media: Add Allwinner A31 ISP bindings documentation
> >   dt-bindings: media: sun6i-a31-csi: Add internal output port to the ISP
> >   staging: media: Add support for the Allwinner A31 ISP
> >   MAINTAINERS: Add entry for the Allwinner A31 ISP driver
> >   media: sun6i-csi: Detect the availability of the ISP
> >   media: sun6i-csi: Add support for hooking to the isp devices
> >  
> >  .../media/allwinner,sun6i-a31-csi.yaml        |   4 +
> >  .../media/allwinner,sun6i-a31-isp.yaml        | 101 +++
> >  MAINTAINERS                                   |   9 +
> >  .../platform/sunxi/sun6i-csi/sun6i_csi.c      |  75 +-
> >  .../platform/sunxi/sun6i-csi/sun6i_csi.h      |  10 +
> >  .../sunxi/sun6i-csi/sun6i_csi_bridge.c        |  32 +-
> >  .../sunxi/sun6i-csi/sun6i_csi_capture.c       |  19 +-
> >  .../sunxi/sun6i-csi/sun6i_csi_capture.h       |   1 +
> >  drivers/staging/media/sunxi/Kconfig           |   1 +
> >  drivers/staging/media/sunxi/Makefile          |   1 +
> >  drivers/staging/media/sunxi/sun6i-isp/Kconfig |  15 +
> >  .../staging/media/sunxi/sun6i-isp/Makefile    |   4 +
> >  .../staging/media/sunxi/sun6i-isp/TODO.txt    |   6 +
> >  .../staging/media/sunxi/sun6i-isp/sun6i_isp.c | 555 +++++++++++++
> >  .../staging/media/sunxi/sun6i-isp/sun6i_isp.h |  90 +++
> >  .../media/sunxi/sun6i-isp/sun6i_isp_capture.c | 742 ++++++++++++++++++
> >  .../media/sunxi/sun6i-isp/sun6i_isp_capture.h |  78 ++
> >  .../media/sunxi/sun6i-isp/sun6i_isp_params.c  | 566 +++++++++++++
> >  .../media/sunxi/sun6i-isp/sun6i_isp_params.h  |  52 ++
> >  .../media/sunxi/sun6i-isp/sun6i_isp_proc.c    | 577 ++++++++++++++
> >  .../media/sunxi/sun6i-isp/sun6i_isp_proc.h    |  66 ++
> >  .../media/sunxi/sun6i-isp/sun6i_isp_reg.h     | 275 +++++++
> >  .../sunxi/sun6i-isp/uapi/sun6i-isp-config.h   |  43 +
> >  23 files changed, 3309 insertions(+), 13 deletions(-)
> >  create mode 100644
> >  Documentation/devicetree/bindings/media/allwinner,sun6i-a31-isp.yaml
> >  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/Kconfig
> >  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/Makefile
> >  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/TODO.txt
> >  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp.c
> >  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp.h
> >  create mode 100644
> >  drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c create mode
> >  100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.h create
> >  mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c
> >  create mode 100644
> >  drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.h create mode
> >  100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c create
> >  mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.h
> >  create mode 100644 drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_reg.h
> >  create mode 100644
> >  drivers/staging/media/sunxi/sun6i-isp/uapi/sun6i-isp-config.h