summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorViswanadha Raju Thotakura <viswanad@codeaurora.org>2016-01-11 16:00:28 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-25 16:03:42 -0700
commitb03a78230bbd3429e56735c6fb11dddca040b434 (patch)
tree1156e5033cec5797597b69e473bf72efc77c13d0 /drivers
parent51541ccdcce08bd79673594734e6259a3fa6ca3d (diff)
msm : camera: Changes to support larger queue size for cci
Changes to support larger queues Q0, Q1 for camera CCI 1.6 onwards. CRs-Fixed: 974739 Change-Id: Iffdd78b6bf27f0f34d7e72a030264b428acf3f60 Signed-off-by: Viswanadha Raju Thotakura <viswanad@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.c39
1 files changed, 32 insertions, 7 deletions
diff --git a/drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.c b/drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.c
index 62d2b048a36f..d0b62c65122b 100644
--- a/drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.c
+++ b/drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.c
@@ -26,7 +26,9 @@
#define V4L2_IDENT_CCI 50005
#define CCI_I2C_QUEUE_0_SIZE 64
+#define CCI_I2C_Q0_SIZE_128W 128
#define CCI_I2C_QUEUE_1_SIZE 16
+#define CCI_I2C_Q1_SIZE_32W 32
#define CYCLES_PER_MICRO_SEC_DEFAULT 4915
#define CCI_MAX_DELAY 1000000
@@ -1247,7 +1249,7 @@ static int32_t msm_cci_i2c_set_sync_prms(struct v4l2_subdev *sd,
static int32_t msm_cci_init(struct v4l2_subdev *sd,
struct msm_camera_cci_ctrl *c_ctrl)
{
- uint8_t i = 0;
+ uint8_t i = 0, j = 0;
int32_t rc = 0, ret = 0;
struct cci_device *cci_dev;
enum cci_i2c_master_t master = MASTER_0;
@@ -1368,6 +1370,35 @@ static int32_t msm_cci_init(struct v4l2_subdev *sd,
MSM_CCI_WRITE_DATA_PAYLOAD_SIZE_11;
cci_dev->support_seq_write = 1;
}
+ for (i = 0; i < NUM_MASTERS; i++) {
+ for (j = 0; j < NUM_QUEUES; j++) {
+ if (j == QUEUE_0) {
+ if (cci_dev->hw_version >= 0x10060000)
+ cci_dev->cci_i2c_queue_info[i][j].
+ max_queue_size =
+ CCI_I2C_Q0_SIZE_128W;
+ else
+ cci_dev->cci_i2c_queue_info[i][j].
+ max_queue_size =
+ CCI_I2C_QUEUE_0_SIZE;
+ } else {
+ if (cci_dev->hw_version >= 0x10060000)
+ cci_dev->cci_i2c_queue_info[i][j].
+ max_queue_size =
+ CCI_I2C_Q1_SIZE_32W;
+ else
+ cci_dev->cci_i2c_queue_info[i][j].
+ max_queue_size =
+ CCI_I2C_QUEUE_1_SIZE;
+ }
+ CDBG("CCI Master[%d] :: Q0 size: %d Q1 size: %d\n", i,
+ cci_dev->cci_i2c_queue_info[i][j].
+ max_queue_size,
+ cci_dev->cci_i2c_queue_info[i][j].
+ max_queue_size);
+ }
+ }
+
cci_dev->cci_master_info[MASTER_0].reset_pending = TRUE;
msm_camera_io_w_mb(CCI_RESET_CMD_RMSK, cci_dev->base +
CCI_RESET_CMD_ADDR);
@@ -1736,12 +1767,6 @@ static void msm_cci_init_cci_params(struct cci_device *new_cci_dev)
mutex_init(&new_cci_dev->cci_master_info[i].mutex_q[j]);
init_completion(&new_cci_dev->
cci_master_info[i].report_q[j]);
- if (j == QUEUE_0)
- new_cci_dev->cci_i2c_queue_info[i][j].
- max_queue_size = CCI_I2C_QUEUE_0_SIZE;
- else
- new_cci_dev->cci_i2c_queue_info[i][j].
- max_queue_size = CCI_I2C_QUEUE_1_SIZE;
}
}
return;