Re: [PATCH 00/16] Switch subdev dv timing callbacks to pad ops

From: Hans Verkuil
Date: Mon Apr 08 2024 - 10:18:42 EST


On 08/04/2024 16:15, Hans Verkuil wrote:
> On 05/04/2024 16:13, Paweł Anikiel wrote:
>> Currently, subdev dv timing calls (i.e. g/s/query_dv_timings) are video
>> ops without a pad argument. This is a problem if the subdevice can have
>> different dv timings for each pad (e.g. a DisplayPort receiver with
>> multiple virtual channels).
>>
>> This patchset changes subdev dv timing callbacks to include a pad
>> argument, and moves them from video to pad ops. All the affected
>> drivers are updated to use the new pad ops version.
>>
>> The affected drivers were updated in a way that mathes how they deal
>> with the pad argument in other callbacks (mainly enum_dv_timings,
>> dv_timings_cap, get/set_edid).
>>
>> This was originally a part of a larger patchset:
>> https://lore.kernel.org/lkml/20240221160215.484151-2-panikiel@xxxxxxxxxx/
>>
>> Paweł Anikiel (16):
>> media: v4l2-subdev: Add pad versions of dv timing subdev calls
>> media: i2c: adv748x: Switch dv timing callbacks to pad ops
>> media: i2c: adv7511: Switch dv timing callbacks to pad ops
>> media: i2c: adv7604: Switch dv timing callbacks to pad ops
>> media: i2c: adv7842: Switch dv timing callbacks to pad ops
>> media: i2c: tc358743: Switch dv timing callbacks to pad ops
>> media: i2c: tda1997x: Switch dv timing callbacks to pad ops
>> media: i2c: ths7303: Switch dv timing callbacks to pad ops
>> media: i2c: ths8200: Switch dv timing callbacks to pad ops
>> media: i2c: tvp7002: Switch dv timing callbacks to pad ops
>> media: spi: gs1662: Switch dv timing callbacks to pad ops
>> media: cobalt: Use pad variant of dv timing subdev calls
>> media: rcar-vin: Use pad variant of dv timing subdev calls
>> media: vpif_capture: Use pad variant of dv timing subdev calls
>> media: tegra-video: Use pad variant of dv timing subdev calls
>> media: v4l2-subdev: Remove non-pad dv timing callbacks
>
> You missed one:
>
> In file included from include/media/v4l2-device.h:13,
> from drivers/media/platform/ti/davinci/vpif_display.h:13,
> from drivers/media/platform/ti/davinci/vpif_display.c:26:
> drivers/media/platform/ti/davinci/vpif_display.c: In function 'vpif_s_dv_timings':
> include/media/v4l2-subdev.h:1816:56: error: 'const struct v4l2_subdev_video_ops' has no member named 's_dv_timings'
> 1816 | else if (!(__sd->ops->o && __sd->ops->o->f)) \
> | ^~
> drivers/media/platform/ti/davinci/vpif_display.c:937:15: note: in expansion of macro 'v4l2_subdev_call'
> 937 | ret = v4l2_subdev_call(ch->sd, video, s_dv_timings, timings);
> | ^~~~~~~~~~~~~~~~
> include/media/v4l2-subdev.h:1819:53: error: 'const struct v4l2_subdev_video_ops' has no member named 's_dv_timings'
> 1819 | v4l2_subdev_call_wrappers.o->f) \
> | ^~
> drivers/media/platform/ti/davinci/vpif_display.c:937:15: note: in expansion of macro 'v4l2_subdev_call'
> 937 | ret = v4l2_subdev_call(ch->sd, video, s_dv_timings, timings);
> | ^~~~~~~~~~~~~~~~
> include/media/v4l2-subdev.h:1820:63: error: 'const struct v4l2_subdev_video_ops' has no member named 's_dv_timings'
> 1820 | __result = v4l2_subdev_call_wrappers.o->f( \
> | ^~
> drivers/media/platform/ti/davinci/vpif_display.c:937:15: note: in expansion of macro 'v4l2_subdev_call'
> 937 | ret = v4l2_subdev_call(ch->sd, video, s_dv_timings, timings);
> | ^~~~~~~~~~~~~~~~
> include/media/v4l2-subdev.h:1823:48: error: 'const struct v4l2_subdev_video_ops' has no member named 's_dv_timings'
> 1823 | __result = __sd->ops->o->f(__sd, ##args); \
> | ^~
> drivers/media/platform/ti/davinci/vpif_display.c:937:15: note: in expansion of macro 'v4l2_subdev_call'
> 937 | ret = v4l2_subdev_call(ch->sd, video, s_dv_timings, timings);
> | ^~~~~~~~~~~~~~~~
> drivers/media/platform/ti/davinci/vpif_display.c:937:15: error: no member 's_dv_timings' in struct v4l2_subdev_video_ops
> drivers/media/platform/ti/davinci/vpif_display.c:937:15: error: no member 's_dv_timings' in struct v4l2_subdev_video_ops
> drivers/media/platform/ti/davinci/vpif_display.c:937:15: error: no member 's_dv_timings' in struct v4l2_subdev_video_ops
> drivers/media/platform/ti/davinci/vpif_display.c:937:15: error: no member 's_dv_timings' in struct v4l2_subdev_video_ops

No need to post a v2. Just post a single patch '14.5/16' to convert vpif_display that
will be added after patch [14/16], then I'll take care of it.

Regards,

Hans

>
> Regards,
>
> Hans
>
>>
>> drivers/media/i2c/adv748x/adv748x-hdmi.c | 16 ++++----
>> drivers/media/i2c/adv7511-v4l2.c | 14 +++++--
>> drivers/media/i2c/adv7604.c | 14 +++----
>> drivers/media/i2c/adv7842.c | 25 ++++++++----
>> drivers/media/i2c/tc358743.c | 23 +++++++----
>> drivers/media/i2c/tda1997x.c | 12 +++---
>> drivers/media/i2c/ths7303.c | 8 +++-
>> drivers/media/i2c/ths8200.c | 14 +++++--
>> drivers/media/i2c/tvp7002.c | 26 +++++++++----
>> drivers/media/pci/cobalt/cobalt-v4l2.c | 12 +++---
>> .../platform/renesas/rcar-vin/rcar-v4l2.c | 9 +++--
>> .../media/platform/ti/davinci/vpif_capture.c | 4 +-
>> drivers/media/spi/gs1662.c | 21 +++++++---
>> drivers/media/v4l2-core/v4l2-subdev.c | 39 +++++++++++++++++--
>> drivers/staging/media/tegra-video/vi.c | 12 +++---
>> include/media/v4l2-subdev.h | 28 ++++++-------
>> 16 files changed, 183 insertions(+), 94 deletions(-)
>>
>
>