diff options
Diffstat (limited to 'target/linux/brcm2708/patches-4.19/950-0321-staging-bcm2835-codec-NULL-component-handle-on-queue.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.19/950-0321-staging-bcm2835-codec-NULL-component-handle-on-queue.patch | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-4.19/950-0321-staging-bcm2835-codec-NULL-component-handle-on-queue.patch b/target/linux/brcm2708/patches-4.19/950-0321-staging-bcm2835-codec-NULL-component-handle-on-queue.patch new file mode 100644 index 0000000000..ee5d01d3aa --- /dev/null +++ b/target/linux/brcm2708/patches-4.19/950-0321-staging-bcm2835-codec-NULL-component-handle-on-queue.patch @@ -0,0 +1,59 @@ +From 140c118a9886b0386d748e6aa7cbd8ba9f9b0ede Mon Sep 17 00:00:00 2001 +From: Dave Stevenson <dave.stevenson@raspberrypi.org> +Date: Tue, 19 Mar 2019 17:55:09 +0000 +Subject: [PATCH] staging: bcm2835-codec: NULL component handle on + queue_setup failure + +queue_setup tries creating the relevant MMAL component and configures +the input and output ports as we're expecting to start streaming. +If the port configuration failed then it destroyed the component, +but failed to clear the component handle, therefore release tried +destroying the component again. +Adds some logging should the port config fail as well. + +Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org> +--- + .../bcm2835-codec/bcm2835-v4l2-codec.c | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +--- a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c ++++ b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c +@@ -1776,13 +1776,21 @@ static int bcm2835_codec_create_componen + + ret = vchiq_mmal_port_set_format(dev->instance, + &ctx->component->input[0]); +- if (ret < 0) ++ if (ret < 0) { ++ v4l2_dbg(1, debug, &dev->v4l2_dev, ++ "%s: vchiq_mmal_port_set_format ip port failed\n", ++ __func__); + goto destroy_component; ++ } + + ret = vchiq_mmal_port_set_format(dev->instance, + &ctx->component->output[0]); +- if (ret < 0) ++ if (ret < 0) { ++ v4l2_dbg(1, debug, &dev->v4l2_dev, ++ "%s: vchiq_mmal_port_set_format op port failed\n", ++ __func__); + goto destroy_component; ++ } + + if (dev->role == ENCODE) { + u32 param = 1; +@@ -1812,11 +1820,14 @@ static int bcm2835_codec_create_componen + ctx->q_data[V4L2_M2M_DST].sizeimage, + ctx->component->output[0].minimum_buffer.size); + } ++ v4l2_dbg(2, debug, &dev->v4l2_dev, "%s: component created as %s\n", ++ __func__, components[dev->role]); + + return 0; + + destroy_component: + vchiq_mmal_component_finalise(ctx->dev->instance, ctx->component); ++ ctx->component = NULL; + + return ret; + } |