media: v4l2-subdev: Introduce [get|set]_mbus_config pad ops

Introduce two new pad operations to allow retrieving and configuring the
media bus parameters on a subdevice pad.

The newly introduced operations aims to replace the s/g_mbus_config video
operations, which have been on their way for deprecation since a long
time.

Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
Jacopo Mondi
2020-07-17 16:53:15 +02:00
committed by Mauro Carvalho Chehab
parent 9123e3a74e
commit 38df0b8506
2 changed files with 44 additions and 0 deletions

View File

@@ -670,6 +670,30 @@ struct v4l2_subdev_pad_config {
*
* @set_frame_desc: set the low level media bus frame parameters, @fd array
* may be adjusted by the subdev driver to device capabilities.
*
* @get_mbus_config: get the media bus configuration of a remote sub-device.
* The media bus configuration is usually retrieved from the
* firmware interface at sub-device probe time, immediately
* applied to the hardware and eventually adjusted by the
* driver. Remote sub-devices (usually video receivers) shall
* use this operation to query the transmitting end bus
* configuration in order to adjust their own one accordingly.
* Callers should make sure they get the most up-to-date as
* possible configuration from the remote end, likely calling
* this operation as close as possible to stream on time. The
* operation shall fail if the pad index it has been called on
* is not valid or in case of unrecoverable failures.
*
* @set_mbus_config: set the media bus configuration of a remote sub-device.
* This operations is intended to allow, in combination with
* the get_mbus_config operation, the negotiation of media bus
* configuration parameters between media sub-devices. The
* operation shall not fail if the requested configuration is
* not supported, but the driver shall update the content of
* the %config argument to reflect what has been actually
* applied to the hardware. The operation shall fail if the
* pad index it has been called on is not valid or in case of
* unrecoverable failures.
*/
struct v4l2_subdev_pad_ops {
int (*init_cfg)(struct v4l2_subdev *sd,
@@ -710,6 +734,10 @@ struct v4l2_subdev_pad_ops {
struct v4l2_mbus_frame_desc *fd);
int (*set_frame_desc)(struct v4l2_subdev *sd, unsigned int pad,
struct v4l2_mbus_frame_desc *fd);
int (*get_mbus_config)(struct v4l2_subdev *sd, unsigned int pad,
struct v4l2_mbus_config *config);
int (*set_mbus_config)(struct v4l2_subdev *sd, unsigned int pad,
struct v4l2_mbus_config *config);
};
/**