|
|
@@ -1884,6 +1884,26 @@ static int adv76xx_get_format(struct v4l2_subdev *sd,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int adv76xx_get_selection(struct v4l2_subdev *sd,
|
|
|
+ struct v4l2_subdev_pad_config *cfg,
|
|
|
+ struct v4l2_subdev_selection *sel)
|
|
|
+{
|
|
|
+ struct adv76xx_state *state = to_state(sd);
|
|
|
+
|
|
|
+ if (sel->which != V4L2_SUBDEV_FORMAT_ACTIVE)
|
|
|
+ return -EINVAL;
|
|
|
+ /* Only CROP, CROP_DEFAULT and CROP_BOUNDS are supported */
|
|
|
+ if (sel->target > V4L2_SEL_TGT_CROP_BOUNDS)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ sel->r.left = 0;
|
|
|
+ sel->r.top = 0;
|
|
|
+ sel->r.width = state->timings.bt.width;
|
|
|
+ sel->r.height = state->timings.bt.height;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static int adv76xx_set_format(struct v4l2_subdev *sd,
|
|
|
struct v4l2_subdev_pad_config *cfg,
|
|
|
struct v4l2_subdev_format *format)
|
|
|
@@ -2404,6 +2424,7 @@ static const struct v4l2_subdev_video_ops adv76xx_video_ops = {
|
|
|
|
|
|
static const struct v4l2_subdev_pad_ops adv76xx_pad_ops = {
|
|
|
.enum_mbus_code = adv76xx_enum_mbus_code,
|
|
|
+ .get_selection = adv76xx_get_selection,
|
|
|
.get_fmt = adv76xx_get_format,
|
|
|
.set_fmt = adv76xx_set_format,
|
|
|
.get_edid = adv76xx_get_edid,
|