diff options
author | Sakari Ailus <sakari.ailus@linux.intel.com> | 2024-04-29 11:44:22 +0300 |
---|---|---|
committer | Hans Verkuil <hverkuil@xs4all.nl> | 2025-02-15 15:22:53 +0100 |
commit | 9849b9fead648d33966d00f3c770e0ee768bc2c1 (patch) | |
tree | c333ad3d6258bcb3af50b607b3e744a64031711f /drivers/media/v4l2-core | |
parent | 15f0035bfd0a7e3c829fd12c17ca0454c944649f (diff) | |
download | linux-9849b9fead648d33966d00f3c770e0ee768bc2c1.tar.gz linux-9849b9fead648d33966d00f3c770e0ee768bc2c1.tar.bz2 linux-9849b9fead648d33966d00f3c770e0ee768bc2c1.zip |
media: v4l: Support obtaining link frequency via get_mbus_config
Add link_freq field to struct v4l2_mbus_config in order to pass the link
frequency to the receiving sub-device.
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Diffstat (limited to 'drivers/media/v4l2-core')
-rw-r--r-- | drivers/media/v4l2-core/v4l2-common.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/media/v4l2-core/v4l2-common.c b/drivers/media/v4l2-core/v4l2-common.c index 9fe74c7e064f..e4b2de3833ee 100644 --- a/drivers/media/v4l2-core/v4l2-common.c +++ b/drivers/media/v4l2-core/v4l2-common.c @@ -508,12 +508,23 @@ EXPORT_SYMBOL_GPL(__v4l2_get_link_freq_ctrl); s64 __v4l2_get_link_freq_pad(struct media_pad *pad, unsigned int mul, unsigned int div) { + struct v4l2_mbus_config mbus_config = {}; struct v4l2_subdev *sd; + int ret; sd = media_entity_to_v4l2_subdev(pad->entity); - if (!sd) - return -ENODEV; + ret = v4l2_subdev_call(sd, pad, get_mbus_config, pad->index, + &mbus_config); + if (ret < 0 && ret != -ENOIOCTLCMD) + return ret; + + if (mbus_config.link_freq) + return mbus_config.link_freq; + /* + * Fall back to using the link frequency control if the media bus config + * doesn't provide a link frequency. + */ return __v4l2_get_link_freq_ctrl(sd->ctrl_handler, mul, div); } EXPORT_SYMBOL_GPL(__v4l2_get_link_freq_pad); |