media: atomisp: ov2680: Add init_cfg pad-op
Having an init_cfg to initialize the passed in subdev-state is important to make which == V4L2_SUBDEV_FORMAT_TRY ops work when userspace is talking to a /dev/v4l2-subdev# node. Copy the ov2680_init_cfg() from the standard drivers/media/i2c/ov2680.c driver. This is esp. relevant once support for cropping is added where the v4l2_subdev_state.pads[pad].try_crop rectangle needs to be set correctly for set_fmt which == V4L2_SUBDEV_FORMAT_TRY calls to work. Link: https://lore.kernel.org/r/20230529103741.11904-6-hdegoede@redhat.com Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
c1ee1db3c9
commit
b1b2d39926
@ -357,6 +357,21 @@ static int ov2680_get_fmt(struct v4l2_subdev *sd,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ov2680_init_cfg(struct v4l2_subdev *sd,
|
||||
struct v4l2_subdev_state *sd_state)
|
||||
{
|
||||
struct v4l2_subdev_format fmt = {
|
||||
.which = sd_state ? V4L2_SUBDEV_FORMAT_TRY
|
||||
: V4L2_SUBDEV_FORMAT_ACTIVE,
|
||||
.format = {
|
||||
.width = 800,
|
||||
.height = 600,
|
||||
},
|
||||
};
|
||||
|
||||
return ov2680_set_fmt(sd, sd_state, &fmt);
|
||||
}
|
||||
|
||||
static int ov2680_detect(struct i2c_client *client)
|
||||
{
|
||||
struct i2c_adapter *adapter = client->adapter;
|
||||
@ -537,6 +552,7 @@ static const struct v4l2_subdev_sensor_ops ov2680_sensor_ops = {
|
||||
};
|
||||
|
||||
static const struct v4l2_subdev_pad_ops ov2680_pad_ops = {
|
||||
.init_cfg = ov2680_init_cfg,
|
||||
.enum_mbus_code = ov2680_enum_mbus_code,
|
||||
.enum_frame_size = ov2680_enum_frame_size,
|
||||
.enum_frame_interval = ov2680_enum_frame_interval,
|
||||
|
Loading…
x
Reference in New Issue
Block a user