Message ID | 20240405141411.1807189-1-panikiel@google.com (mailing list archive) |
---|---|
Headers | show |
Series | Switch subdev dv timing callbacks to pad ops | expand |
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@google.com/ > > 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 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(-) >
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@google.com/ >> >> 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(-) >> > >
On Mon, Apr 8, 2024 at 4:18 PM Hans Verkuil <hverkuil-cisco@xs4all.nl> wrote: > > 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@google.com/ > >> > >> 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. I probably thought vpif-capture.c and vpif-display.c were the same file. I sent the 14.5 patch as you requested. As an aside, how did you run the compile test? It would be nice to know for the future. For this, I did a few greps and manually enabled all the drivers in menuconfig. Is there a better way? Regards, Paweł > > 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(-) > >> > > > > >