Re: [PATCH v5 00/16] Allwinner MIPI CSI-2 support for A31/V3s/A83T
Hi Paul, On Wed, May 26, 2021 at 03:28:20PM +0200, Paul Kocialkowski wrote: > Hi, > > On Wed 26 May 21, 14:00, Hans Verkuil wrote: > > Hi Paul, > > > > On 15/01/2021 21:01, Paul Kocialkowski wrote: > > > This series introduces support for MIPI CSI-2, with the A31 controller > > > that is > > > found on most SoCs (A31, V3s and probably V5) as well as the A83T-specific > > > controller. While the former uses the same MIPI D-PHY that is already > > > supported > > > for DSI, the latter embeds its own D-PHY. > > > > > > In order to distinguish the use of the D-PHY between Rx mode (for MIPI > > > CSI-2) > > > and Tx mode (for MIPI DSI), a submode is introduced for D-PHY in the PHY > > > API. > > > This allows adding Rx support in the A31 D-PHY driver. > > > > > > A few changes and fixes are applied to the A31 CSI controller driver, in > > > order > > > to support the MIPI CSI-2 use-case. > > > > Besides the compile error for patch 2/16, I also get several other compile > > errors: > > > > drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c: In function > > ‘sun6i_csi_v4l2_fwnode_init’: > > ./include/media/v4l2-async.h:207:10: error: expected expression before ‘)’ > > token > > 207 | ((type *) \ > > | ^ > > drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c:790:8: note: in > > expansion of macro ‘v4l2_async_notifier_add_fwnode_remote_subdev’ > > 790 | ret = v4l2_async_notifier_add_fwnode_remote_subdev(>notifier, > > |^~~~ > > ./include/media/v4l2-async.h:207:10: error: expected expression before ‘)’ > > token > > 207 | ((type *) \ > > | ^ > > drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c:811:8: note: in > > expansion of macro ‘v4l2_async_notifier_add_fwnode_remote_subdev’ > > 811 | ret = v4l2_async_notifier_add_fwnode_remote_subdev(>notifier, > > |^~~~ > > make[5]: *** [scripts/Makefile.build:272: > > drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.o] Error 1 > > make[5]: *** Waiting for unfinished jobs > > make[4]: *** [scripts/Makefile.build:272: > > drivers/media/platform/rockchip/rkisp1/rkisp1-isp.o] Error 1 > > make[3]: *** [scripts/Makefile.build:515: > > drivers/media/platform/rockchip/rkisp1] Error 2 > > make[3]: *** Waiting for unfinished jobs > > In file included from ./include/media/v4l2-subdev.h:14, > > from ./include/media/v4l2-device.h:13, > > from > > drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c:19: > > drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c: > > In function ‘sun8i_a83t_mipi_csi2_v4l2_setup’: > > ./include/media/v4l2-async.h:207:10: error: expected expression before ‘)’ > > token > > 207 | ((type *) \ > > | ^ > > drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c:495:8: > > note: in expansion of macro > > ‘v4l2_async_notifier_add_fwnode_remote_subdev’ > > 495 | ret = v4l2_async_notifier_add_fwnode_remote_subdev(notifier, > > handle, > > |^~~~ > > In file included from ./include/media/v4l2-subdev.h:14, > > from ./include/media/v4l2-device.h:13, > > from > > drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c:18: > > drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c: In function > > ‘sun6i_mipi_csi2_v4l2_setup’: > > ./include/media/v4l2-async.h:207:10: error: expected expression before ‘)’ > > token > > 207 | ((type *) \ > > | ^ > > drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c:437:8: note: > > in expansion of macro ‘v4l2_async_notifier_add_fwnode_remote_subdev’ > > 437 | ret = v4l2_async_notifier_add_fwnode_remote_subdev(notifier, > > handle, > > |^~~~ > > > > Can you rebase this series? > > Thanks for letting me know, I'll look into this for the next iteration. > > > I also need Acked-by's for patches 1-3 from one of the PHY maintainers, but > > as > > you mentioned this might need to change as well. > > > > Was there a reason why I haven't looked at this before? It's quite an old > > series, > > usually I don't wait for so long. If it was because I was really slow, then > > I > > apologize and please kick me sooner if you see a review like this take so > > long. > > I'm not sure, but Sakari definitely went over previous interations and made > various comments,so the series definitely hasn't gone unreviewed! My acks seem to be missing. Let me go through it. As for Hans: please ping if you don't get reviews. -- Kind regards, Sakari Ailus ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Re: [PATCH v5 00/16] Allwinner MIPI CSI-2 support for A31/V3s/A83T
Hi, On Wed 26 May 21, 14:00, Hans Verkuil wrote: > Hi Paul, > > On 15/01/2021 21:01, Paul Kocialkowski wrote: > > This series introduces support for MIPI CSI-2, with the A31 controller that > > is > > found on most SoCs (A31, V3s and probably V5) as well as the A83T-specific > > controller. While the former uses the same MIPI D-PHY that is already > > supported > > for DSI, the latter embeds its own D-PHY. > > > > In order to distinguish the use of the D-PHY between Rx mode (for MIPI > > CSI-2) > > and Tx mode (for MIPI DSI), a submode is introduced for D-PHY in the PHY > > API. > > This allows adding Rx support in the A31 D-PHY driver. > > > > A few changes and fixes are applied to the A31 CSI controller driver, in > > order > > to support the MIPI CSI-2 use-case. > > Besides the compile error for patch 2/16, I also get several other compile > errors: > > drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c: In function > ‘sun6i_csi_v4l2_fwnode_init’: > ./include/media/v4l2-async.h:207:10: error: expected expression before ‘)’ > token > 207 | ((type *) \ > | ^ > drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c:790:8: note: in expansion > of macro ‘v4l2_async_notifier_add_fwnode_remote_subdev’ > 790 | ret = v4l2_async_notifier_add_fwnode_remote_subdev(>notifier, > |^~~~ > ./include/media/v4l2-async.h:207:10: error: expected expression before ‘)’ > token > 207 | ((type *) \ > | ^ > drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c:811:8: note: in expansion > of macro ‘v4l2_async_notifier_add_fwnode_remote_subdev’ > 811 | ret = v4l2_async_notifier_add_fwnode_remote_subdev(>notifier, > |^~~~ > make[5]: *** [scripts/Makefile.build:272: > drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.o] Error 1 > make[5]: *** Waiting for unfinished jobs > make[4]: *** [scripts/Makefile.build:272: > drivers/media/platform/rockchip/rkisp1/rkisp1-isp.o] Error 1 > make[3]: *** [scripts/Makefile.build:515: > drivers/media/platform/rockchip/rkisp1] Error 2 > make[3]: *** Waiting for unfinished jobs > In file included from ./include/media/v4l2-subdev.h:14, > from ./include/media/v4l2-device.h:13, > from > drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c:19: > drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c: In > function ‘sun8i_a83t_mipi_csi2_v4l2_setup’: > ./include/media/v4l2-async.h:207:10: error: expected expression before ‘)’ > token > 207 | ((type *) \ > | ^ > drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c:495:8: > note: in expansion of macro > ‘v4l2_async_notifier_add_fwnode_remote_subdev’ > 495 | ret = v4l2_async_notifier_add_fwnode_remote_subdev(notifier, handle, > |^~~~ > In file included from ./include/media/v4l2-subdev.h:14, > from ./include/media/v4l2-device.h:13, > from > drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c:18: > drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c: In function > ‘sun6i_mipi_csi2_v4l2_setup’: > ./include/media/v4l2-async.h:207:10: error: expected expression before ‘)’ > token > 207 | ((type *) \ > | ^ > drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c:437:8: note: > in expansion of macro ‘v4l2_async_notifier_add_fwnode_remote_subdev’ > 437 | ret = v4l2_async_notifier_add_fwnode_remote_subdev(notifier, handle, > |^~~~ > > Can you rebase this series? Thanks for letting me know, I'll look into this for the next iteration. > I also need Acked-by's for patches 1-3 from one of the PHY maintainers, but as > you mentioned this might need to change as well. > > Was there a reason why I haven't looked at this before? It's quite an old > series, > usually I don't wait for so long. If it was because I was really slow, then I > apologize and please kick me sooner if you see a review like this take so > long. I'm not sure, but Sakari definitely went over previous interations and made various comments,so the series definitely hasn't gone unreviewed! To be honest I also lost momentum on this but I'll be trying to finalize the series soon, once the discussion on rx/tx handling has concluded. Cheers, Paul > > Regards, > > Hans > > > > > Changes since v4: > > - Added patch to stop using v4l2_async_notifier_parse_fwnode_endpoints; > > - Fixed checkpatch strict issues (parenthesis alignment); > > - Fixed runtime PM call order and disable; > > - Fixed fwnode_handle_put order; > > - Brought back phy-names for A31 since it's mandatory according to the > > generic > > PHY binding and needed by the code; > > - Added collected tags. > > > > Changes since v3:
Re: [PATCH v5 00/16] Allwinner MIPI CSI-2 support for A31/V3s/A83T
Hi Paul, On 15/01/2021 21:01, Paul Kocialkowski wrote: > This series introduces support for MIPI CSI-2, with the A31 controller that is > found on most SoCs (A31, V3s and probably V5) as well as the A83T-specific > controller. While the former uses the same MIPI D-PHY that is already > supported > for DSI, the latter embeds its own D-PHY. > > In order to distinguish the use of the D-PHY between Rx mode (for MIPI CSI-2) > and Tx mode (for MIPI DSI), a submode is introduced for D-PHY in the PHY API. > This allows adding Rx support in the A31 D-PHY driver. > > A few changes and fixes are applied to the A31 CSI controller driver, in order > to support the MIPI CSI-2 use-case. Besides the compile error for patch 2/16, I also get several other compile errors: drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c: In function ‘sun6i_csi_v4l2_fwnode_init’: ./include/media/v4l2-async.h:207:10: error: expected expression before ‘)’ token 207 | ((type *) \ | ^ drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c:790:8: note: in expansion of macro ‘v4l2_async_notifier_add_fwnode_remote_subdev’ 790 | ret = v4l2_async_notifier_add_fwnode_remote_subdev(>notifier, |^~~~ ./include/media/v4l2-async.h:207:10: error: expected expression before ‘)’ token 207 | ((type *) \ | ^ drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c:811:8: note: in expansion of macro ‘v4l2_async_notifier_add_fwnode_remote_subdev’ 811 | ret = v4l2_async_notifier_add_fwnode_remote_subdev(>notifier, |^~~~ make[5]: *** [scripts/Makefile.build:272: drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.o] Error 1 make[5]: *** Waiting for unfinished jobs make[4]: *** [scripts/Makefile.build:272: drivers/media/platform/rockchip/rkisp1/rkisp1-isp.o] Error 1 make[3]: *** [scripts/Makefile.build:515: drivers/media/platform/rockchip/rkisp1] Error 2 make[3]: *** Waiting for unfinished jobs In file included from ./include/media/v4l2-subdev.h:14, from ./include/media/v4l2-device.h:13, from drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c:19: drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c: In function ‘sun8i_a83t_mipi_csi2_v4l2_setup’: ./include/media/v4l2-async.h:207:10: error: expected expression before ‘)’ token 207 | ((type *) \ | ^ drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c:495:8: note: in expansion of macro ‘v4l2_async_notifier_add_fwnode_remote_subdev’ 495 | ret = v4l2_async_notifier_add_fwnode_remote_subdev(notifier, handle, |^~~~ In file included from ./include/media/v4l2-subdev.h:14, from ./include/media/v4l2-device.h:13, from drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c:18: drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c: In function ‘sun6i_mipi_csi2_v4l2_setup’: ./include/media/v4l2-async.h:207:10: error: expected expression before ‘)’ token 207 | ((type *) \ | ^ drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c:437:8: note: in expansion of macro ‘v4l2_async_notifier_add_fwnode_remote_subdev’ 437 | ret = v4l2_async_notifier_add_fwnode_remote_subdev(notifier, handle, |^~~~ Can you rebase this series? I also need Acked-by's for patches 1-3 from one of the PHY maintainers, but as you mentioned this might need to change as well. Was there a reason why I haven't looked at this before? It's quite an old series, usually I don't wait for so long. If it was because I was really slow, then I apologize and please kick me sooner if you see a review like this take so long. Regards, Hans > > Changes since v4: > - Added patch to stop using v4l2_async_notifier_parse_fwnode_endpoints; > - Fixed checkpatch strict issues (parenthesis alignment); > - Fixed runtime PM call order and disable; > - Fixed fwnode_handle_put order; > - Brought back phy-names for A31 since it's mandatory according to the generic > PHY binding and needed by the code; > - Added collected tags. > > Changes since v3: > - Fixed single-item phys description in sun6i mipi csi-2 binding; > - Fixed variables names in macros using container_of; > - Fixed style issue with operators at the end of lines; > - Reworked source endpoint/subdev assignment in sun6i-csi to handle > link_validate error case; > - Removed unrelated dt change in sun8i-a83t mipi csi-2 driver; > - Added collected tags. > > Changes since v2: > - added Kconfig depend on PM since it's not optional; > - removed phy-names for A31 MIPI CSI-2 controller; > - removed v3s compatible in the A31 MIPI CSI-2 controller driver; > - removed A31 CSI controller single-port binding deprecation; > - removed
[PATCH v5 00/16] Allwinner MIPI CSI-2 support for A31/V3s/A83T
This series introduces support for MIPI CSI-2, with the A31 controller that is found on most SoCs (A31, V3s and probably V5) as well as the A83T-specific controller. While the former uses the same MIPI D-PHY that is already supported for DSI, the latter embeds its own D-PHY. In order to distinguish the use of the D-PHY between Rx mode (for MIPI CSI-2) and Tx mode (for MIPI DSI), a submode is introduced for D-PHY in the PHY API. This allows adding Rx support in the A31 D-PHY driver. A few changes and fixes are applied to the A31 CSI controller driver, in order to support the MIPI CSI-2 use-case. Changes since v4: - Added patch to stop using v4l2_async_notifier_parse_fwnode_endpoints; - Fixed checkpatch strict issues (parenthesis alignment); - Fixed runtime PM call order and disable; - Fixed fwnode_handle_put order; - Brought back phy-names for A31 since it's mandatory according to the generic PHY binding and needed by the code; - Added collected tags. Changes since v3: - Fixed single-item phys description in sun6i mipi csi-2 binding; - Fixed variables names in macros using container_of; - Fixed style issue with operators at the end of lines; - Reworked source endpoint/subdev assignment in sun6i-csi to handle link_validate error case; - Removed unrelated dt change in sun8i-a83t mipi csi-2 driver; - Added collected tags. Changes since v2: - added Kconfig depend on PM since it's not optional; - removed phy-names for A31 MIPI CSI-2 controller; - removed v3s compatible in the A31 MIPI CSI-2 controller driver; - removed A31 CSI controller single-port binding deprecation; - removed empty dt port definitions; - fixed minor checkpatch warnings; - added collected tags; - added media-ctl output in cover letter. Changes since v1: - reworked fwnode and media graph on the CSI controller end to have one port per interface, which solves the bus type representation issue; - removed unused IRQ handlers in the MIPI CSI-2 bridges; - avoided the use of devm_regmap_init_mmio_clk; - deasserted reset before enabling clocks; - fixed reported return code issues (ret |=, missing checks); - applied requested cosmetic changes (backward goto, etc); - switched over to runtime PM for the mipi csi-2 bridge drivers; - selected PHY_SUN6I_MIPI_DPHY in Kconfig for sun6i-mipi-csi2; - registered nodes with mipi csi-2 bridge subdevs; - used V4L2 format info instead of switch/case for sun6i-csi bpp; - fixed device-tree bindings as requested (useless properties, license); - fixed mipi bridge dt instances names; - added PHY API documentation about mode/power on order requirement; - fixed clock error return code in d-phy code; - fixed D-PHY mode check in d-phy code; - added MAINTAINERS entries for the new drivers; - added V4L2 compliance results; - added various comments and rework commit mesages as requested. Media ctl outputs for the testing setups are available below: # sun6i-csi + sun6i-mipi-csi2 + ov5648 Media device information driver sun6i-csi model Allwinner Video Capture Device serial bus infoplatform:1cb.camera hw revision 0x0 driver version 5.10.0 Device topology - entity 1: sun6i-csi (2 pads, 1 link) type Node subtype V4L flags 0 device node name /dev/video0 pad0: Sink pad1: Sink <- "sun6i-mipi-csi2":1 [ENABLED] - entity 6: sun6i-mipi-csi2 (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 pad0: Sink [fmt:unknown/0x0] <- "ov5648 0-0036":0 [ENABLED,IMMUTABLE] pad1: Source [fmt:unknown/0x0] -> "sun6i-csi":1 [ENABLED] - entity 9: ov5648 0-0036 (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev1 pad0: Source [fmt:SBGGR8_1X8/2592x1944@1/15 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range] -> "sun6i-mipi-csi2":0 [ENABLED,IMMUTABLE] # sun6i-csi + sun8i-a83t-mipi-csi2 + ov8865 Media device information driver sun6i-csi model Allwinner Video Capture Device serial bus infoplatform:1cb.camera hw revision 0x0 driver version 5.10.0 Device topology - entity 1: sun6i-csi (2 pads, 1 link) type Node subtype V4L flags 0 device node name /dev/video0 pad0: Sink pad1: Sink <- "sun8i-a83t-mipi-csi2":1 [ENABLED] - entity 6: sun8i-a83t-mipi-csi2 (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 pad0: Sink [fmt:unknown/0x0] <- "ov8865 1-0036":0 [ENABLED,IMMUTABLE] pad1: Source [fmt:unknown/0x0] -> "sun6i-csi":1 [ENABLED] - entity 9: ov8865 1-0036 (1 pad, 1 link) type