Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7252d6fe authored by Rajesh Bondugula's avatar Rajesh Bondugula
Browse files

msm: camera: sensor: Avoid writing 0 to GLOBAL_CLEAR_CMD_ADDR



Avoid writing 0 to CCI_IRQ_GLOBAL_CLEAR_CMD_ADDR.
Writing 1 to CCI_IRQ_GLOBAL_CLEAR_CMD_ADDR will clear the bits.
Writing 0 will not have any effect.
Update error log when validating cmd_size,
addr_type and data_type.

Change-Id: Id50b8c9ce20ae6114d5982d27124b7c1ee1bc7c5
Signed-off-by: default avatarRajesh Bondugula <rajeshb@codeaurora.org>
parent 4a0b6988
Loading
Loading
Loading
Loading
+6 −4
Original line number Original line Diff line number Diff line
@@ -579,7 +579,8 @@ static int32_t msm_cci_data_queue(struct cci_device *cci_dev,
	}
	}


	if ((!cmd_size) || (cmd_size > CCI_I2C_MAX_WRITE)) {
	if ((!cmd_size) || (cmd_size > CCI_I2C_MAX_WRITE)) {
		pr_err("%s:%d Failed line\n", __func__, __LINE__);
		pr_err("%s:%d failed: invalid cmd_size %d\n",
			__func__, __LINE__, cmd_size);
		return -EINVAL;
		return -EINVAL;
	}
	}


@@ -587,11 +588,13 @@ static int32_t msm_cci_data_queue(struct cci_device *cci_dev,
		i2c_msg->addr_type, i2c_msg->data_type, cmd_size);
		i2c_msg->addr_type, i2c_msg->data_type, cmd_size);


	if (i2c_msg->addr_type >= MSM_CAMERA_I2C_ADDR_TYPE_MAX) {
	if (i2c_msg->addr_type >= MSM_CAMERA_I2C_ADDR_TYPE_MAX) {
		pr_err("%s failed line %d\n", __func__, __LINE__);
		pr_err("%s:%d failed: invalid addr_type 0x%X\n",
			__func__, __LINE__, i2c_msg->addr_type);
		return -EINVAL;
		return -EINVAL;
	}
	}
	if (i2c_msg->data_type >= MSM_CAMERA_I2C_DATA_TYPE_MAX) {
	if (i2c_msg->data_type >= MSM_CAMERA_I2C_DATA_TYPE_MAX) {
		pr_err("%s failed line %d\n", __func__, __LINE__);
		pr_err("%s:%d failed: invalid data_type 0x%X\n",
			__func__, __LINE__, i2c_msg->data_type);
		return -EINVAL;
		return -EINVAL;
	}
	}
	reg_offset = master * 0x200 + queue * 0x100;
	reg_offset = master * 0x200 + queue * 0x100;
@@ -1583,7 +1586,6 @@ static irqreturn_t msm_cci_irq(int irq_num, void *data)
	irq = msm_camera_io_r_mb(cci_dev->base + CCI_IRQ_STATUS_0_ADDR);
	irq = msm_camera_io_r_mb(cci_dev->base + CCI_IRQ_STATUS_0_ADDR);
	msm_camera_io_w_mb(irq, cci_dev->base + CCI_IRQ_CLEAR_0_ADDR);
	msm_camera_io_w_mb(irq, cci_dev->base + CCI_IRQ_CLEAR_0_ADDR);
	msm_camera_io_w_mb(0x1, cci_dev->base + CCI_IRQ_GLOBAL_CLEAR_CMD_ADDR);
	msm_camera_io_w_mb(0x1, cci_dev->base + CCI_IRQ_GLOBAL_CLEAR_CMD_ADDR);
	msm_camera_io_w_mb(0x0, cci_dev->base + CCI_IRQ_GLOBAL_CLEAR_CMD_ADDR);
	CDBG("%s CCI_I2C_M0_STATUS_ADDR = 0x%x\n", __func__, irq);
	CDBG("%s CCI_I2C_M0_STATUS_ADDR = 0x%x\n", __func__, irq);
	if (irq & CCI_IRQ_STATUS_0_RST_DONE_ACK_BMSK) {
	if (irq & CCI_IRQ_STATUS_0_RST_DONE_ACK_BMSK) {
		if (cci_dev->cci_master_info[MASTER_0].reset_pending == TRUE) {
		if (cci_dev->cci_master_info[MASTER_0].reset_pending == TRUE) {