diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0838-staging-vc04_services-isp-Fixup-g-s_selection-implem.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0838-staging-vc04_services-isp-Fixup-g-s_selection-implem.patch | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0838-staging-vc04_services-isp-Fixup-g-s_selection-implem.patch b/target/linux/bcm27xx/patches-5.4/950-0838-staging-vc04_services-isp-Fixup-g-s_selection-implem.patch deleted file mode 100644 index fd24c87bc3..0000000000 --- a/target/linux/bcm27xx/patches-5.4/950-0838-staging-vc04_services-isp-Fixup-g-s_selection-implem.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 7ec008222fcb4682fa2cfdbb62e657bf98950ec5 Mon Sep 17 00:00:00 2001 -From: Naushir Patuck <naush@raspberrypi.com> -Date: Tue, 19 May 2020 15:56:47 +0100 -Subject: [PATCH] staging: vc04_services: isp: Fixup g/s_selection - implementation - -Add V4L2_SEL_TGT_CROP_DEFAULT and V4L2_SEL_TGT_CROP_BOUND targets. -Disable the appropriate ioctls for the meta capture nodes - this now -passes v4l2-compliance tests. - -Signed-off-by: Naushir Patuck <naush@raspberrypi.com> ---- - .../bcm2835-isp/bcm2835-v4l2-isp.c | 84 ++++++++++++------- - 1 file changed, 55 insertions(+), 29 deletions(-) - ---- a/drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c -+++ b/drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c -@@ -1006,15 +1006,32 @@ static int bcm2835_isp_node_s_selection( - if (!s->r.width || !s->r.height) - return -EINVAL; - -- /* Adjust the crop window if goes outside the frame dimensions. */ -- s->r.left = min((unsigned int)max(s->r.left, 0), -- node->q_data.width - MIN_DIM); -- s->r.top = min((unsigned int)max(s->r.top, 0), -- node->q_data.height - MIN_DIM); -- s->r.width = max(min(s->r.width, node->q_data.width - s->r.left), -- MIN_DIM); -- s->r.height = max(min(s->r.height, node->q_data.height - s->r.top), -- MIN_DIM); -+ /* We can only set crop on the input. */ -+ switch (s->target) { -+ case V4L2_SEL_TGT_CROP: -+ /* -+ * Adjust the crop window if it goes outside of the frame -+ * dimensions. -+ */ -+ s->r.left = min((unsigned int)max(s->r.left, 0), -+ node->q_data.width - MIN_DIM); -+ s->r.top = min((unsigned int)max(s->r.top, 0), -+ node->q_data.height - MIN_DIM); -+ s->r.width = max(min(s->r.width, -+ node->q_data.width - s->r.left), MIN_DIM); -+ s->r.height = max(min(s->r.height, -+ node->q_data.height - s->r.top), MIN_DIM); -+ break; -+ case V4L2_SEL_TGT_CROP_DEFAULT: -+ /* Default (i.e. no) crop window. */ -+ s->r.left = 0; -+ s->r.top = 0; -+ s->r.width = node->q_data.width; -+ s->r.height = node->q_data.height; -+ break; -+ default: -+ return -EINVAL; -+ } - - crop.rect.x = s->r.left; - crop.rect.y = s->r.top; -@@ -1029,33 +1046,40 @@ static int bcm2835_isp_node_s_selection( - static int bcm2835_isp_node_g_selection(struct file *file, void *fh, - struct v4l2_selection *s) - { -+ struct mmal_parameter_crop crop; - struct bcm2835_isp_node *node = video_drvdata(file); -- struct bcm2835_isp_dev *dev = node_get_dev(node); - struct vchiq_mmal_port *port = get_port_data(node); -- struct mmal_parameter_crop crop; -+ struct bcm2835_isp_dev *dev = node_get_dev(node); - u32 crop_size = sizeof(crop); - int ret; - -- /* This return value is required for V4L2 compliance. */ -- if (node_is_stats(node)) -- return -ENOTTY; -- - /* We can only return out an input crop. */ -- if (s->target != V4L2_SEL_TGT_CROP) -- return -EINVAL; -- -- ret = vchiq_mmal_port_parameter_get(dev->mmal_instance, port, -- MMAL_PARAMETER_CROP, -- &crop, &crop_size); -- if (!ret) -- return -EINVAL; -- -- s->r.left = crop.rect.x; -- s->r.top = crop.rect.y; -- s->r.width = crop.rect.width; -- s->r.height = crop.rect.height; -+ switch (s->target) { -+ case V4L2_SEL_TGT_CROP: -+ ret = vchiq_mmal_port_parameter_get(dev->mmal_instance, port, -+ MMAL_PARAMETER_CROP, -+ &crop, &crop_size); -+ if (!ret) { -+ s->r.left = crop.rect.x; -+ s->r.top = crop.rect.y; -+ s->r.width = crop.rect.width; -+ s->r.height = crop.rect.height; -+ } -+ break; -+ case V4L2_SEL_TGT_CROP_DEFAULT: -+ case V4L2_SEL_TGT_CROP_BOUNDS: -+ /* Default (i.e. no) crop window. */ -+ s->r.left = 0; -+ s->r.top = 0; -+ s->r.width = node->q_data.width; -+ s->r.height = node->q_data.height; -+ ret = 0; -+ break; -+ default: -+ ret = -EINVAL; -+ } - -- return 0; -+ return ret; - } - - static int bcm3285_isp_subscribe_event(struct v4l2_fh *fh, -@@ -1218,6 +1242,8 @@ static int register_node(struct bcm2835_ - node->vfl_dir = VFL_DIR_RX; - node->name = "stats"; - v4l2_disable_ioctl(&node->vfd, VIDIOC_S_CTRL); -+ v4l2_disable_ioctl(&node->vfd, VIDIOC_S_SELECTION); -+ v4l2_disable_ioctl(&node->vfd, VIDIOC_G_SELECTION); - break; - } - |