diff options
Diffstat (limited to 'target/linux/brcm2708/patches-4.19/950-0242-staging-bcm2835-camera-Return-early-on-errors.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.19/950-0242-staging-bcm2835-camera-Return-early-on-errors.patch | 196 |
1 files changed, 0 insertions, 196 deletions
diff --git a/target/linux/brcm2708/patches-4.19/950-0242-staging-bcm2835-camera-Return-early-on-errors.patch b/target/linux/brcm2708/patches-4.19/950-0242-staging-bcm2835-camera-Return-early-on-errors.patch deleted file mode 100644 index 2fd821b2cc..0000000000 --- a/target/linux/brcm2708/patches-4.19/950-0242-staging-bcm2835-camera-Return-early-on-errors.patch +++ /dev/null @@ -1,196 +0,0 @@ -From 3cb19cb6b4d6dc86582abef6200c0fc663ae3f2a Mon Sep 17 00:00:00 2001 -From: Dave Stevenson <dave.stevenson@raspberrypi.org> -Date: Fri, 10 Mar 2017 17:27:56 +0000 -Subject: [PATCH 242/806] staging: bcm2835-camera: Return early on errors - -Fix several instances where it is easier to return -early on error conditions than handle it as an else -clause. -As requested by Mauro. - -Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org> ---- - .../bcm2835-camera/bcm2835-camera.c | 137 +++++++++--------- - 1 file changed, 71 insertions(+), 66 deletions(-) - ---- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c -+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c -@@ -335,7 +335,9 @@ static void buffer_cb(struct vchiq_mmal_ - vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR); - } - return; -- } else if (length == 0) { -+ } -+ -+ if (length == 0) { - /* stream ended */ - if (dev->capture.frame_count) { - /* empty buffer whilst capturing - expected to be an -@@ -361,71 +363,72 @@ static void buffer_cb(struct vchiq_mmal_ - vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR); - complete(&dev->capture.frame_cmplt); - } -- } else { -- if (dev->capture.frame_count) { -- if (dev->capture.vc_start_timestamp == -1) { -- buf->vb.vb2_buf.timestamp = ktime_get_ns(); -- v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, -- "Buffer time set as current time - %lld", -- buf->vb.vb2_buf.timestamp); -- -- } else if (pts != 0) { -- ktime_t timestamp; -- s64 runtime_us = pts - -- dev->capture.vc_start_timestamp; -- timestamp = ktime_add_us(dev->capture.kernel_start_ts, -- runtime_us); -- v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, -- "Convert start time %llu and %llu with offset %llu to %llu\n", -- ktime_to_ns(dev->capture.kernel_start_ts), -- dev->capture.vc_start_timestamp, pts, -- ktime_to_ns(timestamp)); -- buf->vb.vb2_buf.timestamp = ktime_to_ns(timestamp); -- } else { -- if (dev->capture.last_timestamp) { -- buf->vb.vb2_buf.timestamp = -- dev->capture.last_timestamp; -- v4l2_dbg(1, bcm2835_v4l2_debug, -- &dev->v4l2_dev, -- "Buffer time set as last timestamp - %lld", -- buf->vb.vb2_buf.timestamp); -- } else { -- buf->vb.vb2_buf.timestamp = -- ktime_to_ns(dev->capture.kernel_start_ts); -- v4l2_dbg(1, bcm2835_v4l2_debug, -- &dev->v4l2_dev, -- "Buffer time set as start timestamp - %lld", -- buf->vb.vb2_buf.timestamp); -- } -- } -- dev->capture.last_timestamp = buf->vb.vb2_buf.timestamp; -+ return; -+ } - -- vb2_set_plane_payload(&buf->vb.vb2_buf, 0, length); -- if (mmal_flags & MMAL_BUFFER_HEADER_FLAG_KEYFRAME) -- buf->vb.flags |= V4L2_BUF_FLAG_KEYFRAME; -+ if (!dev->capture.frame_count) { -+ /* signal frame completion */ -+ vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR); -+ complete(&dev->capture.frame_cmplt); -+ return; -+ } - -+ if (dev->capture.vc_start_timestamp == -1) { -+ /* -+ * VPU doesn't support MMAL_PARAMETER_SYSTEM_TIME, rely on -+ * kernel time, and have no latency compensation. -+ */ -+ buf->vb.vb2_buf.timestamp = ktime_get_ns(); -+ v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, -+ "Buffer time set as current time - %lld", -+ buf->vb.vb2_buf.timestamp); -+ } else if (pts != 0) { -+ ktime_t timestamp; -+ s64 runtime_us = pts - -+ dev->capture.vc_start_timestamp; -+ timestamp = ktime_add_us(dev->capture.kernel_start_ts, -+ runtime_us); -+ v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, -+ "Convert start time %llu and %llu with offset %llu to %llu\n", -+ ktime_to_ns(dev->capture.kernel_start_ts), -+ dev->capture.vc_start_timestamp, pts, -+ ktime_to_ns(timestamp)); -+ buf->vb.vb2_buf.timestamp = ktime_to_ns(timestamp); -+ } else { -+ if (dev->capture.last_timestamp) { -+ buf->vb.vb2_buf.timestamp = dev->capture.last_timestamp; - v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, -- "Buffer has ts %llu", -- dev->capture.last_timestamp); -- vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_DONE); -- -- if (mmal_flags & MMAL_BUFFER_HEADER_FLAG_EOS && -- is_capturing(dev)) { -- v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, -- "Grab another frame as buffer has EOS"); -- vchiq_mmal_port_parameter_set( -- instance, -- dev->capture.camera_port, -- MMAL_PARAMETER_CAPTURE, -- &dev->capture.frame_count, -- sizeof(dev->capture.frame_count)); -- } -+ "Buffer time set as last timestamp - %lld", -+ buf->vb.vb2_buf.timestamp); - } else { -- /* signal frame completion */ -- vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR); -- complete(&dev->capture.frame_cmplt); -+ buf->vb.vb2_buf.timestamp = -+ ktime_to_ns(dev->capture.kernel_start_ts); -+ v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, -+ "Buffer time set as start timestamp - %lld", -+ buf->vb.vb2_buf.timestamp); - } - } -+ dev->capture.last_timestamp = buf->vb.vb2_buf.timestamp; -+ -+ vb2_set_plane_payload(&buf->vb.vb2_buf, 0, length); -+ if (mmal_flags & MMAL_BUFFER_HEADER_FLAG_KEYFRAME) -+ buf->vb.flags |= V4L2_BUF_FLAG_KEYFRAME; -+ -+ v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, -+ "Buffer has ts %llu", -+ dev->capture.last_timestamp); -+ vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_DONE); -+ -+ if (mmal_flags & MMAL_BUFFER_HEADER_FLAG_EOS && -+ is_capturing(dev)) { -+ v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, -+ "Grab another frame as buffer has EOS"); -+ vchiq_mmal_port_parameter_set(instance, -+ dev->capture.camera_port, -+ MMAL_PARAMETER_CAPTURE, -+ &dev->capture.frame_count, -+ sizeof(dev->capture.frame_count)); -+ } - } - - static int enable_camera(struct bm2835_mmal_dev *dev) -@@ -815,27 +818,29 @@ static int vidioc_overlay(struct file *f - - ret = vchiq_mmal_port_set_format(dev->instance, src); - if (ret < 0) -- goto error; -+ return ret; - - ret = set_overlay_params(dev, dst); - if (ret < 0) -- goto error; -+ return ret; - -- if (enable_camera(dev) < 0) -- goto error; -+ if (enable_camera(dev) < 0) { -+ ret = -EINVAL; -+ return ret; -+ } - - ret = vchiq_mmal_component_enable( - dev->instance, - dev->component[MMAL_COMPONENT_PREVIEW]); - if (ret < 0) -- goto error; -+ return ret; - - v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, "connecting %p to %p\n", - src, dst); - ret = vchiq_mmal_port_connect_tunnel(dev->instance, src, dst); - if (!ret) - ret = vchiq_mmal_port_enable(dev->instance, src, NULL); --error: -+ - return ret; - } - |