From 142b21fee07e858a85bb1b8091d9803cf9fa13e3 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Fri, 18 Dec 2015 21:23:25 +0200 Subject: [PATCH] greybus: camera: Configure the bridge CSI transmitter Start or stop the CSI transmitter when configuring and unconfiguring the streams respectively. The CSI configuration parameters are currently hardcoded. Signed-off-by: Laurent Pinchart Signed-off-by: Greg Kroah-Hartman --- drivers/staging/greybus/camera.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/staging/greybus/camera.c b/drivers/staging/greybus/camera.c index f163689f50a5..556226a19ada 100644 --- a/drivers/staging/greybus/camera.c +++ b/drivers/staging/greybus/camera.c @@ -16,6 +16,7 @@ #include #include +#include "es2.h" #include "greybus.h" #include "greybus_protocols.h" @@ -79,6 +80,7 @@ static int gb_camera_configure_streams(struct gb_camera *gcam, { struct gb_camera_configure_streams_request *req; struct gb_camera_configure_streams_response *resp; + struct es2_ap_csi_config csi_cfg; unsigned int i; size_t req_size; size_t resp_size; @@ -146,6 +148,27 @@ static int gb_camera_configure_streams(struct gb_camera *gcam, } } + /* Configure the CSI transmitter. Hardcode the parameters for now. */ + if (nstreams && !(resp->flags & GB_CAMERA_CONFIGURE_STREAMS_ADJUSTED)) { + csi_cfg.csi_id = 1; + csi_cfg.clock_mode = 0; + csi_cfg.num_lanes = 2; + csi_cfg.bus_freq = 250000000; + + ret = es2_ap_csi_setup(gcam->connection->hd, true, &csi_cfg); + } else if (nstreams == 0) { + csi_cfg.csi_id = 1; + csi_cfg.clock_mode = 0; + csi_cfg.num_lanes = 0; + csi_cfg.bus_freq = 0; + + ret = es2_ap_csi_setup(gcam->connection->hd, false, &csi_cfg); + } + + if (ret < 0) + gcam_err(gcam, "failed to %s the CSI transmitter\n", + nstreams ? "start" : "stop"); + ret = resp->num_streams; done: -- 2.20.1