From 42954857190b9df16d9d873ecc7f6cc38e013e44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Tue, 9 Jul 2019 20:32:28 +0200 Subject: brcm2708: add linux 4.19 support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Boot tested on Raspberry Pi B+ (BCM2708) and Raspberry Pi 2 (BCM2709) Signed-off-by: Álvaro Fernández Rojas --- ...2835-camera-Provide-more-specific-probe-e.patch | 166 +++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 target/linux/brcm2708/patches-4.19/950-0235-staging-bcm2835-camera-Provide-more-specific-probe-e.patch (limited to 'target/linux/brcm2708/patches-4.19/950-0235-staging-bcm2835-camera-Provide-more-specific-probe-e.patch') 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 +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 +--- + .../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; + } -- cgit v1.2.3