aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm2708/patches-4.19/950-0235-staging-bcm2835-camera-Provide-more-specific-probe-e.patch
diff options
context:
space:
mode:
authorÁlvaro Fernández Rojas <noltari@gmail.com>2019-07-09 20:32:28 +0200
committerÁlvaro Fernández Rojas <noltari@gmail.com>2019-07-14 12:44:14 +0200
commit42954857190b9df16d9d873ecc7f6cc38e013e44 (patch)
tree98c588f629ff534d458eb0884782ea99672d7634 /target/linux/brcm2708/patches-4.19/950-0235-staging-bcm2835-camera-Provide-more-specific-probe-e.patch
parentf1875e902d0afb7d9b9e5285b4fd8da7f6c5e30a (diff)
downloadupstream-42954857190b9df16d9d873ecc7f6cc38e013e44.tar.gz
upstream-42954857190b9df16d9d873ecc7f6cc38e013e44.tar.bz2
upstream-42954857190b9df16d9d873ecc7f6cc38e013e44.zip
brcm2708: add linux 4.19 support
Boot tested on Raspberry Pi B+ (BCM2708) and Raspberry Pi 2 (BCM2709) Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/brcm2708/patches-4.19/950-0235-staging-bcm2835-camera-Provide-more-specific-probe-e.patch')
-rw-r--r--target/linux/brcm2708/patches-4.19/950-0235-staging-bcm2835-camera-Provide-more-specific-probe-e.patch166
1 files changed, 166 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-4.19/950-0235-staging-bcm2835-camera-Provide-more-specific-probe-e.patch b/target/linux/brcm2708/patches-4.19/950-0235-staging-bcm2835-camera-Provide-more-specific-probe-e.patch
new file mode 100644
index 0000000000..e8e3c311ef
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.19/950-0235-staging-bcm2835-camera-Provide-more-specific-probe-e.patch
@@ -0,0 +1,166 @@
+From a6646e496feed4fd7affe3fc5d4fc3e2591046d6 Mon Sep 17 00:00:00 2001
+From: Stefan Wahren <stefan.wahren@i2se.com>
+Date: Sun, 21 Oct 2018 18:40:07 +0200
+Subject: [PATCH 235/703] staging: bcm2835-camera: Provide more specific probe
+ error messages
+
+Currently there is only a catch-all info message which print the
+relevant error code without any context. So add more specific error
+messages in order to narrow down possible issues.
+
+Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
+---
+ .../bcm2835-camera/bcm2835-camera.c | 58 +++++++++++++------
+ 1 file changed, 39 insertions(+), 19 deletions(-)
+
+--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
++++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+@@ -1539,8 +1539,11 @@ static int mmal_init(struct bm2835_mmal_
+ struct vchiq_mmal_component *camera;
+
+ ret = vchiq_mmal_init(&dev->instance);
+- if (ret < 0)
++ if (ret < 0) {
++ v4l2_err(&dev->v4l2_dev, "%s: vchiq mmal init failed %d\n",
++ __func__, ret);
+ return ret;
++ }
+
+ /* get the camera component ready */
+ ret = vchiq_mmal_component_init(dev->instance, "ril.camera",
+@@ -1549,7 +1552,9 @@ static int mmal_init(struct bm2835_mmal_
+ goto unreg_mmal;
+
+ camera = dev->component[MMAL_COMPONENT_CAMERA];
+- if (camera->outputs < MMAL_CAMERA_PORT_COUNT) {
++ if (camera->outputs < MMAL_CAMERA_PORT_COUNT) {
++ v4l2_err(&dev->v4l2_dev, "%s: too few camera outputs %d needed %d\n",
++ __func__, camera->outputs, MMAL_CAMERA_PORT_COUNT);
+ ret = -EINVAL;
+ goto unreg_camera;
+ }
+@@ -1557,8 +1562,11 @@ static int mmal_init(struct bm2835_mmal_
+ ret = set_camera_parameters(dev->instance,
+ camera,
+ dev);
+- if (ret < 0)
++ if (ret < 0) {
++ v4l2_err(&dev->v4l2_dev, "%s: unable to set camera parameters: %d\n",
++ __func__, ret);
+ goto unreg_camera;
++ }
+
+ /* There was an error in the firmware that meant the camera component
+ * produced BGR instead of RGB.
+@@ -1647,8 +1655,8 @@ static int mmal_init(struct bm2835_mmal_
+
+ if (dev->component[MMAL_COMPONENT_PREVIEW]->inputs < 1) {
+ ret = -EINVAL;
+- pr_debug("too few input ports %d needed %d\n",
+- dev->component[MMAL_COMPONENT_PREVIEW]->inputs, 1);
++ v4l2_err(&dev->v4l2_dev, "%s: too few input ports %d needed %d\n",
++ __func__, dev->component[MMAL_COMPONENT_PREVIEW]->inputs, 1);
+ goto unreg_preview;
+ }
+
+@@ -1661,8 +1669,8 @@ static int mmal_init(struct bm2835_mmal_
+
+ if (dev->component[MMAL_COMPONENT_IMAGE_ENCODE]->inputs < 1) {
+ ret = -EINVAL;
+- v4l2_err(&dev->v4l2_dev, "too few input ports %d needed %d\n",
+- dev->component[MMAL_COMPONENT_IMAGE_ENCODE]->inputs,
++ v4l2_err(&dev->v4l2_dev, "%s: too few input ports %d needed %d\n",
++ __func__, dev->component[MMAL_COMPONENT_IMAGE_ENCODE]->inputs,
+ 1);
+ goto unreg_image_encoder;
+ }
+@@ -1676,8 +1684,8 @@ static int mmal_init(struct bm2835_mmal_
+
+ if (dev->component[MMAL_COMPONENT_VIDEO_ENCODE]->inputs < 1) {
+ ret = -EINVAL;
+- v4l2_err(&dev->v4l2_dev, "too few input ports %d needed %d\n",
+- dev->component[MMAL_COMPONENT_VIDEO_ENCODE]->inputs,
++ v4l2_err(&dev->v4l2_dev, "%s: too few input ports %d needed %d\n",
++ __func__, dev->component[MMAL_COMPONENT_VIDEO_ENCODE]->inputs,
+ 1);
+ goto unreg_vid_encoder;
+ }
+@@ -1706,8 +1714,11 @@ static int mmal_init(struct bm2835_mmal_
+ sizeof(enable));
+ }
+ ret = bm2835_mmal_set_all_camera_controls(dev);
+- if (ret < 0)
++ if (ret < 0) {
++ v4l2_err(&dev->v4l2_dev, "%s: failed to set all camera controls: %d\n",
++ __func__, ret);
+ goto unreg_vid_encoder;
++ }
+
+ return 0;
+
+@@ -1867,21 +1878,29 @@ static int bcm2835_mmal_probe(struct pla
+ snprintf(dev->v4l2_dev.name, sizeof(dev->v4l2_dev.name),
+ "%s", BM2835_MMAL_MODULE_NAME);
+ ret = v4l2_device_register(NULL, &dev->v4l2_dev);
+- if (ret)
++ if (ret) {
++ dev_err(&pdev->dev, "%s: could not register V4L2 device: %d\n",
++ __func__, ret);
+ goto free_dev;
++ }
+
+ /* setup v4l controls */
+ ret = bm2835_mmal_init_controls(dev, &dev->ctrl_handler);
+- if (ret < 0)
++ if (ret < 0) {
++ v4l2_err(&dev->v4l2_dev, "%s: could not init controls: %d\n",
++ __func__, ret);
+ goto unreg_dev;
++ }
+ dev->v4l2_dev.ctrl_handler = &dev->ctrl_handler;
+
+ /* mmal init */
+ dev->instance = instance;
+ ret = mmal_init(dev);
+- if (ret < 0)
++ if (ret < 0) {
++ v4l2_err(&dev->v4l2_dev, "%s: mmal init failed: %d\n",
++ __func__, ret);
+ goto unreg_dev;
+-
++ }
+ /* initialize queue */
+ q = &dev->capture.vb_vidq;
+ memset(q, 0, sizeof(*q));
+@@ -1899,16 +1918,19 @@ static int bcm2835_mmal_probe(struct pla
+
+ /* initialise video devices */
+ ret = bm2835_mmal_init_device(dev, &dev->vdev);
+- if (ret < 0)
++ if (ret < 0) {
++ v4l2_err(&dev->v4l2_dev, "%s: could not init device: %d\n",
++ __func__, ret);
+ goto unreg_dev;
++ }
+
+ /* Really want to call vidioc_s_fmt_vid_cap with the default
+ * format, but currently the APIs don't join up.
+ */
+ ret = mmal_setup_components(dev, &default_v4l2_format);
+ if (ret < 0) {
+- v4l2_err(&dev->v4l2_dev,
+- "%s: could not setup components\n", __func__);
++ v4l2_err(&dev->v4l2_dev, "%s: could not setup components: %d\n",
++ __func__, ret);
+ goto unreg_dev;
+ }
+
+@@ -1932,8 +1954,6 @@ cleanup_gdev:
+ bcm2835_cleanup_instance(gdev[i]);
+ gdev[i] = NULL;
+ }
+- pr_info("%s: error %d while loading driver\n",
+- BM2835_MMAL_MODULE_NAME, ret);
+
+ return ret;
+ }