mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-30 15:44:13 +08:00
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:
parent
9123e3a74e
commit
38df0b8506
@ -309,6 +309,20 @@ static int call_enum_dv_timings(struct v4l2_subdev *sd,
|
|||||||
sd->ops->pad->enum_dv_timings(sd, dvt);
|
sd->ops->pad->enum_dv_timings(sd, dvt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int call_get_mbus_config(struct v4l2_subdev *sd, unsigned int pad,
|
||||||
|
struct v4l2_mbus_config *config)
|
||||||
|
{
|
||||||
|
return check_pad(sd, pad) ? :
|
||||||
|
sd->ops->pad->get_mbus_config(sd, pad, config);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int call_set_mbus_config(struct v4l2_subdev *sd, unsigned int pad,
|
||||||
|
struct v4l2_mbus_config *config)
|
||||||
|
{
|
||||||
|
return check_pad(sd, pad) ? :
|
||||||
|
sd->ops->pad->get_mbus_config(sd, pad, config);
|
||||||
|
}
|
||||||
|
|
||||||
static const struct v4l2_subdev_pad_ops v4l2_subdev_call_pad_wrappers = {
|
static const struct v4l2_subdev_pad_ops v4l2_subdev_call_pad_wrappers = {
|
||||||
.get_fmt = call_get_fmt,
|
.get_fmt = call_get_fmt,
|
||||||
.set_fmt = call_set_fmt,
|
.set_fmt = call_set_fmt,
|
||||||
@ -321,6 +335,8 @@ static const struct v4l2_subdev_pad_ops v4l2_subdev_call_pad_wrappers = {
|
|||||||
.set_edid = call_set_edid,
|
.set_edid = call_set_edid,
|
||||||
.dv_timings_cap = call_dv_timings_cap,
|
.dv_timings_cap = call_dv_timings_cap,
|
||||||
.enum_dv_timings = call_enum_dv_timings,
|
.enum_dv_timings = call_enum_dv_timings,
|
||||||
|
.get_mbus_config = call_get_mbus_config,
|
||||||
|
.set_mbus_config = call_set_mbus_config,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct v4l2_subdev_video_ops v4l2_subdev_call_video_wrappers = {
|
static const struct v4l2_subdev_video_ops v4l2_subdev_call_video_wrappers = {
|
||||||
|
@ -670,6 +670,30 @@ struct v4l2_subdev_pad_config {
|
|||||||
*
|
*
|
||||||
* @set_frame_desc: set the low level media bus frame parameters, @fd array
|
* @set_frame_desc: set the low level media bus frame parameters, @fd array
|
||||||
* may be adjusted by the subdev driver to device capabilities.
|
* 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 {
|
struct v4l2_subdev_pad_ops {
|
||||||
int (*init_cfg)(struct v4l2_subdev *sd,
|
int (*init_cfg)(struct v4l2_subdev *sd,
|
||||||
@ -710,6 +734,10 @@ struct v4l2_subdev_pad_ops {
|
|||||||
struct v4l2_mbus_frame_desc *fd);
|
struct v4l2_mbus_frame_desc *fd);
|
||||||
int (*set_frame_desc)(struct v4l2_subdev *sd, unsigned int pad,
|
int (*set_frame_desc)(struct v4l2_subdev *sd, unsigned int pad,
|
||||||
struct v4l2_mbus_frame_desc *fd);
|
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);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user