greybus: camera: Don't configure CSI TX in test only mode
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Sun, 14 Feb 2016 00:33:07 +0000 (02:33 +0200)
committerGreg Kroah-Hartman <gregkh@google.com>
Mon, 15 Feb 2016 22:55:17 +0000 (14:55 -0800)
When the GB_CAMERA_CONFIGURE_STREAMS_TEST_ONLY flag is set by the caller
the configure streams operation should only test the requested settings
without modifying the hardware state. This applies for both the module,
the UniPro links power modes and the AP bridge settings. Return early
when the flag is set to avoid modifying the AP bridge CSI TX settings.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Gjorgji Rosikopulos <grosikopulos@mm-sol.com>
Tested-by: Jacopo Mondi <jacopo.mondi@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/camera.c

index 7eef6eceec6c61cdfd8fd0d1344f682b424f7aef..bb8bc175dc0aa0916118f1be3a14251357e482aa 100644 (file)
@@ -242,26 +242,21 @@ static int gb_camera_configure_streams(struct gb_camera *gcam,
                }
        }
 
-       if (nstreams && resp->flags & GB_CAMERA_CONFIGURE_STREAMS_ADJUSTED) {
+       if ((resp->flags & GB_CAMERA_CONFIGURE_STREAMS_ADJUSTED) ||
+           (*flags & GB_CAMERA_CONFIGURE_STREAMS_TEST_ONLY)) {
                *flags = resp->flags;
                *num_streams = resp->num_streams;
                goto done;
        }
 
        /* Setup unipro link speed. */
-       if (nstreams && !(*flags & GB_CAMERA_CONFIGURE_STREAMS_TEST_ONLY)) {
-               ret = gb_camera_set_power_mode(gcam, true);
-               if (ret < 0)
-                       goto done;
-       } else if (nstreams == 0) {
-               ret = gb_camera_set_power_mode(gcam, false);
-               if (ret < 0)
-                       goto done;
-       }
+       ret = gb_camera_set_power_mode(gcam, nstreams != 0);
+       if (ret < 0)
+               goto done;
 
+       /* Configure the CSI transmitter. Hardcode the parameters for now. */
        memset(&csi_cfg, 0, sizeof(csi_cfg));
 
-       /* Configure the CSI transmitter. Hardcode the parameters for now. */
        if (nstreams) {
                csi_cfg.csi_id = 1;
                csi_cfg.clock_mode = 0;