Re: [PATCH v5 00/16] Allwinner MIPI CSI-2 support for A31/V3s/A83T

2021-05-26 Thread Sakari Ailus
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

2021-05-26 Thread Paul Kocialkowski
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

2021-05-26 Thread Hans Verkuil
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

2021-01-15 Thread Paul Kocialkowski
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