diff --git a/drivers/media/i2c/soc_camera/rockchip/ov9750_v4l2-i2c-subdev.c b/drivers/media/i2c/soc_camera/rockchip/ov9750_v4l2-i2c-subdev.c index e8b39cf5c349..a3605b63d519 100644 --- a/drivers/media/i2c/soc_camera/rockchip/ov9750_v4l2-i2c-subdev.c +++ b/drivers/media/i2c/soc_camera/rockchip/ov9750_v4l2-i2c-subdev.c @@ -953,6 +953,7 @@ static struct v4l2_subdev_pad_ops ov9750_camera_module_pad_ops = { .enum_frame_interval = ov_camera_module_enum_frameintervals, .get_fmt = ov_camera_module_g_fmt, .set_fmt = ov_camera_module_s_fmt, + .enum_frame_size = ov_camera_module_enum_frame_size, }; static struct v4l2_subdev_ops ov9750_camera_module_ops = { diff --git a/drivers/media/i2c/soc_camera/rockchip/ov_camera_module.c b/drivers/media/i2c/soc_camera/rockchip/ov_camera_module.c index 1fced7f4ec70..032984869999 100644 --- a/drivers/media/i2c/soc_camera/rockchip/ov_camera_module.c +++ b/drivers/media/i2c/soc_camera/rockchip/ov_camera_module.c @@ -339,6 +339,30 @@ int ov_camera_module_g_fmt(struct v4l2_subdev *sd, /* ======================================================================== */ +int ov_camera_module_enum_frame_size( + struct v4l2_subdev *sd, + struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_frame_size_enum *fse) +{ + struct ov_camera_module *cam_mod = to_ov_camera_module(sd); + + if (fse->index >= cam_mod->custom.num_configs) + return -EINVAL; + + fse->code = + cam_mod->custom.configs[fse->index].frm_fmt.code; + fse->max_width = + cam_mod->custom.configs[fse->index].frm_fmt.width; + fse->max_height = + cam_mod->custom.configs[fse->index].frm_fmt.height; + + pltfrm_camera_module_pr_debug(&cam_mod->sd, "%dx%d", + fse->max_width, fse->max_height); + return 0; +} + +/* ======================================================================== */ + int ov_camera_module_s_frame_interval( struct v4l2_subdev *sd, struct v4l2_subdev_frame_interval *interval) diff --git a/drivers/media/i2c/soc_camera/rockchip/ov_camera_module.h b/drivers/media/i2c/soc_camera/rockchip/ov_camera_module.h index 1ae6576a1b74..cd9db4df6dc4 100644 --- a/drivers/media/i2c/soc_camera/rockchip/ov_camera_module.h +++ b/drivers/media/i2c/soc_camera/rockchip/ov_camera_module.h @@ -276,6 +276,11 @@ int ov_camera_module_s_ext_ctrls( struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls); +int ov_camera_module_enum_frame_size( + struct v4l2_subdev *sd, + struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_frame_size_enum *fse); + int ov_camera_module_enum_frameintervals( struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg,