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

Commit c06b3972 authored by Depeng Shao's avatar Depeng Shao
Browse files

ARM: msm: camera: Add multi-type support for i2c data



Add BYTE and 3B type support for CCI i2c data.

Change-Id: I3e3e161997a5791efe133af100f18376e82f7d22
Signed-off-by: default avatarDepeng Shao <depengs@codeaurora.org>
parent 2312efe8
Loading
Loading
Loading
Loading
+19 −6
Original line number Diff line number Diff line
@@ -730,17 +730,30 @@ static int32_t cam_cci_data_queue(struct cci_device *cci_dev,
					reg_addr++;
			} else {
				if ((i + 1) <= cci_dev->payload_size) {
					if (i2c_msg->data_type ==
						CAMERA_SENSOR_I2C_TYPE_DWORD) {
					switch (i2c_msg->data_type) {
					case CAMERA_SENSOR_I2C_TYPE_DWORD:
						data[i++] = (i2c_cmd->reg_data &
							0xFF000000) >> 24;
						/* fallthrough */
					case CAMERA_SENSOR_I2C_TYPE_3B:
						data[i++] = (i2c_cmd->reg_data &
							0x00FF0000) >> 16;
					}
						/* fallthrough */
					case CAMERA_SENSOR_I2C_TYPE_WORD:
						data[i++] = (i2c_cmd->reg_data &
						0x0000FF00) >> 8; /* MSB */
							0x0000FF00) >> 8;
						/* fallthrough */
					case CAMERA_SENSOR_I2C_TYPE_BYTE:
						data[i++] = i2c_cmd->reg_data &
						0x000000FF; /* LSB */
							0x000000FF;
						break;
					default:
						CAM_ERR(CAM_CCI,
							"invalid data type: %d",
							i2c_msg->data_type);
						return -EINVAL;
					}

					if (c_ctrl->cmd ==
						MSM_CCI_I2C_WRITE_SEQ)
						reg_addr++;