Merge tag 'LA.UM.9.12.r1-17900.03-SMxx50.QSSI14.0' of https://git.codelinaro.org/clo/la/platform/vendor/opensource/camera-kernel into android13-4.19-kona
"LA.UM.9.12.r1-17900.03-SMxx50.QSSI14.0" * tag 'LA.UM.9.12.r1-17900.03-SMxx50.QSSI14.0' of https://git.codelinaro.org/clo/la/platform/vendor/opensource/camera-kernel: msm: camera: sensor: Unmap DMA buffers to end access from kernel Change-Id: I9ec2dbaa6c2a1ce2e5599cfeaeea9c1958c50ca2
This commit is contained in:
@@ -501,6 +501,7 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl,
|
|||||||
cmd_buf = (uint32_t *)generic_ptr;
|
cmd_buf = (uint32_t *)generic_ptr;
|
||||||
if (!cmd_buf) {
|
if (!cmd_buf) {
|
||||||
CAM_ERR(CAM_ACTUATOR, "invalid cmd buf");
|
CAM_ERR(CAM_ACTUATOR, "invalid cmd buf");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc[i].mem_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
@@ -509,6 +510,7 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl,
|
|||||||
sizeof(struct common_header)))) {
|
sizeof(struct common_header)))) {
|
||||||
CAM_ERR(CAM_ACTUATOR,
|
CAM_ERR(CAM_ACTUATOR,
|
||||||
"Invalid length for sensor cmd");
|
"Invalid length for sensor cmd");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc[i].mem_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
@@ -525,6 +527,8 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl,
|
|||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_ACTUATOR,
|
CAM_ERR(CAM_ACTUATOR,
|
||||||
"Failed to parse slave info: %d", rc);
|
"Failed to parse slave info: %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
cmd_desc[i].mem_handle);
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -540,6 +544,8 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl,
|
|||||||
CAM_ERR(CAM_ACTUATOR,
|
CAM_ERR(CAM_ACTUATOR,
|
||||||
"Failed:parse power settings: %d",
|
"Failed:parse power settings: %d",
|
||||||
rc);
|
rc);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
cmd_desc[i].mem_handle);
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -560,6 +566,8 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl,
|
|||||||
CAM_ERR(CAM_ACTUATOR,
|
CAM_ERR(CAM_ACTUATOR,
|
||||||
"Failed:parse init settings: %d",
|
"Failed:parse init settings: %d",
|
||||||
rc);
|
rc);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
cmd_desc[i].mem_handle);
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -248,6 +248,7 @@ int32_t cam_cmd_buf_parser(struct csiphy_device *csiphy_dev,
|
|||||||
"Inval cam_packet strut size: %zu, len_of_buff: %zu",
|
"Inval cam_packet strut size: %zu, len_of_buff: %zu",
|
||||||
sizeof(struct cam_packet), len);
|
sizeof(struct cam_packet), len);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
|
cam_mem_put_cpu_buf(cfg_dev->packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -259,6 +260,7 @@ int32_t cam_cmd_buf_parser(struct csiphy_device *csiphy_dev,
|
|||||||
remain_len)) {
|
remain_len)) {
|
||||||
CAM_ERR(CAM_CSIPHY, "Invalid packet params");
|
CAM_ERR(CAM_CSIPHY, "Invalid packet params");
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
|
cam_mem_put_cpu_buf(cfg_dev->packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,12 +272,14 @@ int32_t cam_cmd_buf_parser(struct csiphy_device *csiphy_dev,
|
|||||||
CAM_ERR(CAM_CSIPHY, "num_cmd_buffers = %d",
|
CAM_ERR(CAM_CSIPHY, "num_cmd_buffers = %d",
|
||||||
csl_packet->num_cmd_buf);
|
csl_packet->num_cmd_buf);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
|
cam_mem_put_cpu_buf(cfg_dev->packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = cam_packet_util_validate_cmd_desc(cmd_desc);
|
rc = cam_packet_util_validate_cmd_desc(cmd_desc);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_CSIPHY, "Invalid cmd desc ret: %d", rc);
|
CAM_ERR(CAM_CSIPHY, "Invalid cmd desc ret: %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(cfg_dev->packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -284,6 +288,7 @@ int32_t cam_cmd_buf_parser(struct csiphy_device *csiphy_dev,
|
|||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_CSIPHY,
|
CAM_ERR(CAM_CSIPHY,
|
||||||
"Failed to get cmd buf Mem address : %d", rc);
|
"Failed to get cmd buf Mem address : %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(cfg_dev->packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -292,6 +297,8 @@ int32_t cam_cmd_buf_parser(struct csiphy_device *csiphy_dev,
|
|||||||
CAM_ERR(CAM_CSIPHY,
|
CAM_ERR(CAM_CSIPHY,
|
||||||
"Not enough buffer provided for cam_cisphy_info");
|
"Not enough buffer provided for cam_cisphy_info");
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(cfg_dev->packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -302,6 +309,8 @@ int32_t cam_cmd_buf_parser(struct csiphy_device *csiphy_dev,
|
|||||||
index = cam_csiphy_get_instance_offset(csiphy_dev, cfg_dev->dev_handle);
|
index = cam_csiphy_get_instance_offset(csiphy_dev, cfg_dev->dev_handle);
|
||||||
if (index < 0 || index >= csiphy_dev->session_max_device_support) {
|
if (index < 0 || index >= csiphy_dev->session_max_device_support) {
|
||||||
CAM_ERR(CAM_CSIPHY, "index is invalid: %d", index);
|
CAM_ERR(CAM_CSIPHY, "index is invalid: %d", index);
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(cfg_dev->packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1100,6 +1100,7 @@ static int32_t cam_eeprom_get_cal_data(struct cam_eeprom_ctrl_t *e_ctrl,
|
|||||||
}
|
}
|
||||||
if (buf_size <= io_cfg->offsets[0]) {
|
if (buf_size <= io_cfg->offsets[0]) {
|
||||||
CAM_ERR(CAM_EEPROM, "Not enough buffer");
|
CAM_ERR(CAM_EEPROM, "Not enough buffer");
|
||||||
|
cam_mem_put_cpu_buf(io_cfg->mem_handle[0]);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1112,6 +1113,7 @@ static int32_t cam_eeprom_get_cal_data(struct cam_eeprom_ctrl_t *e_ctrl,
|
|||||||
if (!read_buffer) {
|
if (!read_buffer) {
|
||||||
CAM_ERR(CAM_EEPROM,
|
CAM_ERR(CAM_EEPROM,
|
||||||
"invalid buffer to copy data");
|
"invalid buffer to copy data");
|
||||||
|
cam_mem_put_cpu_buf(io_cfg->mem_handle[0]);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1120,6 +1122,7 @@ static int32_t cam_eeprom_get_cal_data(struct cam_eeprom_ctrl_t *e_ctrl,
|
|||||||
if (remain_len < e_ctrl->cal_data.num_data) {
|
if (remain_len < e_ctrl->cal_data.num_data) {
|
||||||
CAM_ERR(CAM_EEPROM,
|
CAM_ERR(CAM_EEPROM,
|
||||||
"failed to copy, Invalid size");
|
"failed to copy, Invalid size");
|
||||||
|
cam_mem_put_cpu_buf(io_cfg->mem_handle[0]);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1234,6 +1237,7 @@ static int32_t cam_eeprom_pkt_parse(struct cam_eeprom_ctrl_t *e_ctrl, void *arg)
|
|||||||
CAM_ERR(CAM_EEPROM,
|
CAM_ERR(CAM_EEPROM,
|
||||||
"Inval cam_packet strut size: %zu, len_of_buff: %zu",
|
"Inval cam_packet strut size: %zu, len_of_buff: %zu",
|
||||||
sizeof(struct cam_packet), pkt_len);
|
sizeof(struct cam_packet), pkt_len);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1245,6 +1249,7 @@ static int32_t cam_eeprom_pkt_parse(struct cam_eeprom_ctrl_t *e_ctrl, void *arg)
|
|||||||
if (cam_packet_util_validate_packet(csl_packet,
|
if (cam_packet_util_validate_packet(csl_packet,
|
||||||
remain_len)) {
|
remain_len)) {
|
||||||
CAM_ERR(CAM_EEPROM, "Invalid packet params");
|
CAM_ERR(CAM_EEPROM, "Invalid packet params");
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1256,6 +1261,7 @@ static int32_t cam_eeprom_pkt_parse(struct cam_eeprom_ctrl_t *e_ctrl, void *arg)
|
|||||||
e_ctrl->soc_info.dev->of_node, e_ctrl);
|
e_ctrl->soc_info.dev->of_node, e_ctrl);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_EEPROM, "Failed: rc : %d", rc);
|
CAM_ERR(CAM_EEPROM, "Failed: rc : %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
rc = cam_eeprom_get_cal_data(e_ctrl, csl_packet);
|
rc = cam_eeprom_get_cal_data(e_ctrl, csl_packet);
|
||||||
@@ -1271,6 +1277,7 @@ static int32_t cam_eeprom_pkt_parse(struct cam_eeprom_ctrl_t *e_ctrl, void *arg)
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_EEPROM,
|
CAM_ERR(CAM_EEPROM,
|
||||||
"Failed in parsing the pkt");
|
"Failed in parsing the pkt");
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1329,6 +1336,7 @@ static int32_t cam_eeprom_pkt_parse(struct cam_eeprom_ctrl_t *e_ctrl, void *arg)
|
|||||||
csl_packet, e_ctrl);
|
csl_packet, e_ctrl);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_EEPROM, "Failed: rc : %d", rc);
|
CAM_ERR(CAM_EEPROM, "Failed: rc : %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1350,6 +1358,7 @@ static int32_t cam_eeprom_pkt_parse(struct cam_eeprom_ctrl_t *e_ctrl, void *arg)
|
|||||||
e_ctrl->eebin_info.size);
|
e_ctrl->eebin_info.size);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_EEPROM, "Failed in erase : %d", rc);
|
CAM_ERR(CAM_EEPROM, "Failed in erase : %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1359,6 +1368,7 @@ static int32_t cam_eeprom_pkt_parse(struct cam_eeprom_ctrl_t *e_ctrl, void *arg)
|
|||||||
rc = cam_eeprom_write(e_ctrl);
|
rc = cam_eeprom_write(e_ctrl);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_EEPROM, "Failed: rc : %d", rc);
|
CAM_ERR(CAM_EEPROM, "Failed: rc : %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1384,6 +1394,7 @@ static int32_t cam_eeprom_pkt_parse(struct cam_eeprom_ctrl_t *e_ctrl, void *arg)
|
|||||||
memdata_free:
|
memdata_free:
|
||||||
vfree(e_ctrl->cal_data.mapdata);
|
vfree(e_ctrl->cal_data.mapdata);
|
||||||
error:
|
error:
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
kfree(power_info->power_setting);
|
kfree(power_info->power_setting);
|
||||||
kfree(power_info->power_down_setting);
|
kfree(power_info->power_down_setting);
|
||||||
power_info->power_setting = NULL;
|
power_info->power_setting = NULL;
|
||||||
|
|||||||
@@ -1068,6 +1068,7 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"Inval cam_packet strut size: %zu, len_of_buff: %zu",
|
"Inval cam_packet strut size: %zu, len_of_buff: %zu",
|
||||||
sizeof(struct cam_packet), len_of_buffer);
|
sizeof(struct cam_packet), len_of_buffer);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1078,6 +1079,7 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
if (cam_packet_util_validate_packet(csl_packet,
|
if (cam_packet_util_validate_packet(csl_packet,
|
||||||
remain_len)) {
|
remain_len)) {
|
||||||
CAM_ERR(CAM_FLASH, "Invalid packet params");
|
CAM_ERR(CAM_FLASH, "Invalid packet params");
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1088,6 +1090,7 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
CAM_DBG(CAM_FLASH,
|
CAM_DBG(CAM_FLASH,
|
||||||
"reject request %lld, last request to flush %lld",
|
"reject request %lld, last request to flush %lld",
|
||||||
csl_packet->header.request_id, fctrl->last_flush_req);
|
csl_packet->header.request_id, fctrl->last_flush_req);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1111,11 +1114,14 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
&generic_ptr, &len_of_buffer);
|
&generic_ptr, &len_of_buffer);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_FLASH, "Failed to get cpu buf");
|
CAM_ERR(CAM_FLASH, "Failed to get cpu buf");
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
cmd_buf = (uint32_t *)generic_ptr;
|
cmd_buf = (uint32_t *)generic_ptr;
|
||||||
if (!cmd_buf) {
|
if (!cmd_buf) {
|
||||||
CAM_ERR(CAM_FLASH, "invalid cmd buf");
|
CAM_ERR(CAM_FLASH, "invalid cmd buf");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc[i].mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1124,6 +1130,8 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
(len_of_buffer -
|
(len_of_buffer -
|
||||||
sizeof(struct common_header)))) {
|
sizeof(struct common_header)))) {
|
||||||
CAM_ERR(CAM_FLASH, "invalid cmd buf length");
|
CAM_ERR(CAM_FLASH, "invalid cmd buf length");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc[i].mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
remain_len = len_of_buffer - cmd_desc[i].offset;
|
remain_len = len_of_buffer - cmd_desc[i].offset;
|
||||||
@@ -1140,6 +1148,10 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
if (len_of_buffer <
|
if (len_of_buffer <
|
||||||
sizeof(struct cam_flash_init)) {
|
sizeof(struct cam_flash_init)) {
|
||||||
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
cmd_desc[i].mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1159,6 +1171,10 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"Failed parsing slave info: rc: %d",
|
"Failed parsing slave info: rc: %d",
|
||||||
rc);
|
rc);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
cmd_desc[i].mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
cmd_length_in_bytes =
|
cmd_length_in_bytes =
|
||||||
@@ -1185,6 +1201,10 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"Failed update power settings");
|
"Failed update power settings");
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
cmd_desc[i].mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1204,6 +1224,10 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"pkt parsing failed: %d", rc);
|
"pkt parsing failed: %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
cmd_desc[i].mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
cmd_length_in_bytes =
|
cmd_length_in_bytes =
|
||||||
@@ -1220,6 +1244,7 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
power_info = &fctrl->power_info;
|
power_info = &fctrl->power_info;
|
||||||
if (!power_info) {
|
if (!power_info) {
|
||||||
CAM_ERR(CAM_FLASH, "Power_info is NULL");
|
CAM_ERR(CAM_FLASH, "Power_info is NULL");
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1231,6 +1256,7 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"failed to fill vreg params for power up rc:%d",
|
"failed to fill vreg params for power up rc:%d",
|
||||||
rc);
|
rc);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1243,6 +1269,7 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"failed to fill vreg params power down rc:%d",
|
"failed to fill vreg params power down rc:%d",
|
||||||
rc);
|
rc);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1250,12 +1277,14 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"Enable Regulator Failed rc = %d", rc);
|
"Enable Regulator Failed rc = %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = fctrl->func_tbl.apply_setting(fctrl, 0);
|
rc = fctrl->func_tbl.apply_setting(fctrl, 0);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_FLASH, "cannot apply settings rc = %d", rc);
|
CAM_ERR(CAM_FLASH, "cannot apply settings rc = %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1285,6 +1314,7 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"Failed in parsing i2c packets");
|
"Failed in parsing i2c packets");
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1303,6 +1333,7 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"Failed in Deleting the err: %d", rc);
|
"Failed in Deleting the err: %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1316,12 +1347,14 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"Failed in parsing i2c NRT packets");
|
"Failed in parsing i2c NRT packets");
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
rc = fctrl->func_tbl.apply_setting(fctrl, 0);
|
rc = fctrl->func_tbl.apply_setting(fctrl, 0);
|
||||||
if (rc)
|
if (rc)
|
||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"Apply setting failed: %d", rc);
|
"Apply setting failed: %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
case CAM_PKT_NOP_OPCODE: {
|
case CAM_PKT_NOP_OPCODE: {
|
||||||
@@ -1333,6 +1366,7 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
MAX_PER_FRAME_ARRAY;
|
MAX_PER_FRAME_ARRAY;
|
||||||
fctrl->i2c_data.per_frame[frm_offset].is_settings_valid
|
fctrl->i2c_data.per_frame[frm_offset].is_settings_valid
|
||||||
= false;
|
= false;
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1343,6 +1377,7 @@ int cam_flash_i2c_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg)
|
|||||||
default:
|
default:
|
||||||
CAM_ERR(CAM_FLASH, "Wrong Opcode : %d",
|
CAM_ERR(CAM_FLASH, "Wrong Opcode : %d",
|
||||||
(csl_packet->header.op_code & 0xFFFFFF));
|
(csl_packet->header.op_code & 0xFFFFFF));
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
update_req_mgr:
|
update_req_mgr:
|
||||||
@@ -1425,6 +1460,7 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"Inval cam_packet strut size: %zu, len_of_buff: %zu",
|
"Inval cam_packet strut size: %zu, len_of_buff: %zu",
|
||||||
sizeof(struct cam_packet), len_of_buffer);
|
sizeof(struct cam_packet), len_of_buffer);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1436,6 +1472,7 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
if (cam_packet_util_validate_packet(csl_packet,
|
if (cam_packet_util_validate_packet(csl_packet,
|
||||||
remain_len)) {
|
remain_len)) {
|
||||||
CAM_ERR(CAM_FLASH, "Invalid packet params");
|
CAM_ERR(CAM_FLASH, "Invalid packet params");
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1447,6 +1484,7 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
CAM_WARN(CAM_FLASH,
|
CAM_WARN(CAM_FLASH,
|
||||||
"reject request %lld, last request to flush %d",
|
"reject request %lld, last request to flush %d",
|
||||||
csl_packet->header.request_id, fctrl->last_flush_req);
|
csl_packet->header.request_id, fctrl->last_flush_req);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1464,12 +1502,15 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
&cmd_buf_ptr, &len_of_buffer);
|
&cmd_buf_ptr, &len_of_buffer);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_FLASH, "Fail in get buffer: %d", rc);
|
CAM_ERR(CAM_FLASH, "Fail in get buffer: %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
if ((len_of_buffer < sizeof(struct cam_flash_init)) ||
|
if ((len_of_buffer < sizeof(struct cam_flash_init)) ||
|
||||||
(cmd_desc->offset >
|
(cmd_desc->offset >
|
||||||
(len_of_buffer - sizeof(struct cam_flash_init)))) {
|
(len_of_buffer - sizeof(struct cam_flash_init)))) {
|
||||||
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1493,6 +1534,8 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"Enable Regulator Failed rc = %d", rc);
|
"Enable Regulator Failed rc = %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1505,6 +1548,8 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
|
|
||||||
if (remain_len < sizeof(struct cam_flash_set_on_off)) {
|
if (remain_len < sizeof(struct cam_flash_set_on_off)) {
|
||||||
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1514,12 +1559,16 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
if (!flash_operation_info) {
|
if (!flash_operation_info) {
|
||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"flash_operation_info Null");
|
"flash_operation_info Null");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
if (flash_operation_info->count >
|
if (flash_operation_info->count >
|
||||||
CAM_FLASH_MAX_LED_TRIGGERS) {
|
CAM_FLASH_MAX_LED_TRIGGERS) {
|
||||||
CAM_ERR(CAM_FLASH, "led count out of limit");
|
CAM_ERR(CAM_FLASH, "led count out of limit");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1547,6 +1596,8 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
default:
|
default:
|
||||||
CAM_ERR(CAM_FLASH, "Wrong cmd_type = %d",
|
CAM_ERR(CAM_FLASH, "Wrong cmd_type = %d",
|
||||||
cam_flash_info->cmd_type);
|
cam_flash_info->cmd_type);
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1576,6 +1627,7 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_FLASH, "Fail in get buffer: 0x%x",
|
CAM_ERR(CAM_FLASH, "Fail in get buffer: 0x%x",
|
||||||
cmd_desc->mem_handle);
|
cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1583,6 +1635,8 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
(cmd_desc->offset >
|
(cmd_desc->offset >
|
||||||
(len_of_buffer - sizeof(struct common_header)))) {
|
(len_of_buffer - sizeof(struct common_header)))) {
|
||||||
CAM_ERR(CAM_FLASH, "not enough buffer");
|
CAM_ERR(CAM_FLASH, "not enough buffer");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1591,6 +1645,8 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
cmd_buf = (uint32_t *)((uint8_t *)cmd_buf_ptr +
|
cmd_buf = (uint32_t *)((uint8_t *)cmd_buf_ptr +
|
||||||
cmd_desc->offset);
|
cmd_desc->offset);
|
||||||
if (!cmd_buf) {
|
if (!cmd_buf) {
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1606,10 +1662,16 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
CAM_WARN(CAM_FLASH,
|
CAM_WARN(CAM_FLASH,
|
||||||
"Rxed Flash fire ops without linking");
|
"Rxed Flash fire ops without linking");
|
||||||
flash_data->cmn_attr.is_settings_valid = false;
|
flash_data->cmn_attr.is_settings_valid = false;
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
if (remain_len < sizeof(struct cam_flash_set_on_off)) {
|
if (remain_len < sizeof(struct cam_flash_set_on_off)) {
|
||||||
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1619,12 +1681,16 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
if (!flash_operation_info) {
|
if (!flash_operation_info) {
|
||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"flash_operation_info Null");
|
"flash_operation_info Null");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
if (flash_operation_info->count >
|
if (flash_operation_info->count >
|
||||||
CAM_FLASH_MAX_LED_TRIGGERS) {
|
CAM_FLASH_MAX_LED_TRIGGERS) {
|
||||||
CAM_ERR(CAM_FLASH, "led count out of limit");
|
CAM_ERR(CAM_FLASH, "led count out of limit");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1645,6 +1711,8 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
default:
|
default:
|
||||||
CAM_ERR(CAM_FLASH, "Wrong cmd_type = %d",
|
CAM_ERR(CAM_FLASH, "Wrong cmd_type = %d",
|
||||||
cmn_hdr->cmd_type);
|
cmn_hdr->cmd_type);
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1661,6 +1729,7 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
&cmd_buf_ptr, &len_of_buffer);
|
&cmd_buf_ptr, &len_of_buffer);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_FLASH, "Fail in get buffer: %d", rc);
|
CAM_ERR(CAM_FLASH, "Fail in get buffer: %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1668,6 +1737,8 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
(cmd_desc->offset >
|
(cmd_desc->offset >
|
||||||
(len_of_buffer - sizeof(struct common_header)))) {
|
(len_of_buffer - sizeof(struct common_header)))) {
|
||||||
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1681,6 +1752,8 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
CAM_DBG(CAM_FLASH, "Widget Flash Operation");
|
CAM_DBG(CAM_FLASH, "Widget Flash Operation");
|
||||||
if (remain_len < sizeof(struct cam_flash_set_on_off)) {
|
if (remain_len < sizeof(struct cam_flash_set_on_off)) {
|
||||||
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1689,12 +1762,16 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
if (!flash_operation_info) {
|
if (!flash_operation_info) {
|
||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"flash_operation_info Null");
|
"flash_operation_info Null");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
if (flash_operation_info->count >
|
if (flash_operation_info->count >
|
||||||
CAM_FLASH_MAX_LED_TRIGGERS) {
|
CAM_FLASH_MAX_LED_TRIGGERS) {
|
||||||
CAM_ERR(CAM_FLASH, "led count out of limit");
|
CAM_ERR(CAM_FLASH, "led count out of limit");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1715,6 +1792,8 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
if (rc)
|
if (rc)
|
||||||
CAM_ERR(CAM_FLASH, "Apply setting failed: %d",
|
CAM_ERR(CAM_FLASH, "Apply setting failed: %d",
|
||||||
rc);
|
rc);
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
case CAMERA_SENSOR_FLASH_CMD_TYPE_QUERYCURR: {
|
case CAMERA_SENSOR_FLASH_CMD_TYPE_QUERYCURR: {
|
||||||
@@ -1722,6 +1801,8 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
|
|
||||||
if (remain_len < sizeof(struct cam_flash_query_curr)) {
|
if (remain_len < sizeof(struct cam_flash_query_curr)) {
|
||||||
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1744,6 +1825,8 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"Query current failed with rc=%d", rc);
|
"Query current failed with rc=%d", rc);
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
flash_query_info->query_current_ma = query_curr_ma;
|
flash_query_info->query_current_ma = query_curr_ma;
|
||||||
@@ -1753,6 +1836,8 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
rc = 0;
|
rc = 0;
|
||||||
if (remain_len < sizeof(struct cam_flash_set_rer)) {
|
if (remain_len < sizeof(struct cam_flash_set_rer)) {
|
||||||
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
CAM_ERR(CAM_FLASH, "Not enough buffer");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1760,12 +1845,16 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
if (!flash_rer_info) {
|
if (!flash_rer_info) {
|
||||||
CAM_ERR(CAM_FLASH,
|
CAM_ERR(CAM_FLASH,
|
||||||
"flash_rer_info Null");
|
"flash_rer_info Null");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
if (flash_rer_info->count >
|
if (flash_rer_info->count >
|
||||||
CAM_FLASH_MAX_LED_TRIGGERS) {
|
CAM_FLASH_MAX_LED_TRIGGERS) {
|
||||||
CAM_ERR(CAM_FLASH, "led count out of limit");
|
CAM_ERR(CAM_FLASH, "led count out of limit");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1790,11 +1879,15 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
if (rc)
|
if (rc)
|
||||||
CAM_ERR(CAM_FLASH, "apply_setting failed: %d",
|
CAM_ERR(CAM_FLASH, "apply_setting failed: %d",
|
||||||
rc);
|
rc);
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
CAM_ERR(CAM_FLASH, "Wrong cmd_type : %d",
|
CAM_ERR(CAM_FLASH, "Wrong cmd_type : %d",
|
||||||
cmn_hdr->cmd_type);
|
cmn_hdr->cmd_type);
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc->mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@@ -1811,6 +1904,7 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
"Rxed NOP packets without linking");
|
"Rxed NOP packets without linking");
|
||||||
fctrl->per_frame[frm_offset].cmn_attr.is_settings_valid
|
fctrl->per_frame[frm_offset].cmn_attr.is_settings_valid
|
||||||
= false;
|
= false;
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1824,6 +1918,7 @@ int cam_flash_pmic_gpio_pkt_parser(
|
|||||||
default:
|
default:
|
||||||
CAM_ERR(CAM_FLASH, "Wrong Opcode : %d",
|
CAM_ERR(CAM_FLASH, "Wrong Opcode : %d",
|
||||||
(csl_packet->header.op_code & 0xFFFFFF));
|
(csl_packet->header.op_code & 0xFFFFFF));
|
||||||
|
cam_mem_put_cpu_buf(config.packet_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -460,6 +460,7 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
CAM_ERR(CAM_OIS,
|
CAM_ERR(CAM_OIS,
|
||||||
"Inval cam_packet strut size: %zu, len_of_buff: %zu",
|
"Inval cam_packet strut size: %zu, len_of_buff: %zu",
|
||||||
sizeof(struct cam_packet), pkt_len);
|
sizeof(struct cam_packet), pkt_len);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -470,6 +471,7 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
if (cam_packet_util_validate_packet(csl_packet,
|
if (cam_packet_util_validate_packet(csl_packet,
|
||||||
remain_len)) {
|
remain_len)) {
|
||||||
CAM_ERR(CAM_OIS, "Invalid packet params");
|
CAM_ERR(CAM_OIS, "Invalid packet params");
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -491,11 +493,14 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_OIS, "Failed to get cpu buf : 0x%x",
|
CAM_ERR(CAM_OIS, "Failed to get cpu buf : 0x%x",
|
||||||
cmd_desc[i].mem_handle);
|
cmd_desc[i].mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
cmd_buf = (uint32_t *)generic_ptr;
|
cmd_buf = (uint32_t *)generic_ptr;
|
||||||
if (!cmd_buf) {
|
if (!cmd_buf) {
|
||||||
CAM_ERR(CAM_OIS, "invalid cmd buf");
|
CAM_ERR(CAM_OIS, "invalid cmd buf");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc[i].mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -504,6 +509,8 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
sizeof(struct common_header)))) {
|
sizeof(struct common_header)))) {
|
||||||
CAM_ERR(CAM_OIS,
|
CAM_ERR(CAM_OIS,
|
||||||
"Invalid length for sensor cmd");
|
"Invalid length for sensor cmd");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc[i].mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
remain_len = len_of_buff - cmd_desc[i].offset;
|
remain_len = len_of_buff - cmd_desc[i].offset;
|
||||||
@@ -517,6 +524,10 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_OIS,
|
CAM_ERR(CAM_OIS,
|
||||||
"Failed in parsing slave info");
|
"Failed in parsing slave info");
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
cmd_desc[i].mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -531,6 +542,10 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_OIS,
|
CAM_ERR(CAM_OIS,
|
||||||
"Failed: parse power settings");
|
"Failed: parse power settings");
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
cmd_desc[i].mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -549,6 +564,10 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_OIS,
|
CAM_ERR(CAM_OIS,
|
||||||
"init parsing failed: %d", rc);
|
"init parsing failed: %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
cmd_desc[i].mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
} else if ((o_ctrl->is_ois_calib != 0) &&
|
} else if ((o_ctrl->is_ois_calib != 0) &&
|
||||||
@@ -566,6 +585,10 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_OIS,
|
CAM_ERR(CAM_OIS,
|
||||||
"Calib parsing failed: %d", rc);
|
"Calib parsing failed: %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
cmd_desc[i].mem_handle);
|
||||||
|
cam_mem_put_cpu_buf(
|
||||||
|
dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -578,6 +601,7 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
rc = cam_ois_power_up(o_ctrl);
|
rc = cam_ois_power_up(o_ctrl);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
CAM_ERR(CAM_OIS, " OIS Power up failed");
|
CAM_ERR(CAM_OIS, " OIS Power up failed");
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
o_ctrl->cam_ois_state = CAM_OIS_CONFIG;
|
o_ctrl->cam_ois_state = CAM_OIS_CONFIG;
|
||||||
@@ -635,6 +659,7 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
CAM_WARN(CAM_OIS,
|
CAM_WARN(CAM_OIS,
|
||||||
"Not in right state to control OIS: %d",
|
"Not in right state to control OIS: %d",
|
||||||
o_ctrl->cam_ois_state);
|
o_ctrl->cam_ois_state);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
offset = (uint32_t *)&csl_packet->payload;
|
offset = (uint32_t *)&csl_packet->payload;
|
||||||
@@ -648,12 +673,14 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
cmd_desc, 1, NULL);
|
cmd_desc, 1, NULL);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_OIS, "OIS pkt parsing failed: %d", rc);
|
CAM_ERR(CAM_OIS, "OIS pkt parsing failed: %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = cam_ois_apply_settings(o_ctrl, i2c_reg_settings);
|
rc = cam_ois_apply_settings(o_ctrl, i2c_reg_settings);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_OIS, "Cannot apply mode settings");
|
CAM_ERR(CAM_OIS, "Cannot apply mode settings");
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -661,6 +688,7 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_OIS,
|
CAM_ERR(CAM_OIS,
|
||||||
"Fail deleting Mode data: rc: %d", rc);
|
"Fail deleting Mode data: rc: %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -673,6 +701,7 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
CAM_WARN(CAM_OIS,
|
CAM_WARN(CAM_OIS,
|
||||||
"Not in right state to read OIS: %d",
|
"Not in right state to read OIS: %d",
|
||||||
o_ctrl->cam_ois_state);
|
o_ctrl->cam_ois_state);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
CAM_DBG(CAM_OIS, "number of I/O configs: %d:",
|
CAM_DBG(CAM_OIS, "number of I/O configs: %d:",
|
||||||
@@ -680,6 +709,7 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
if (csl_packet->num_io_configs == 0) {
|
if (csl_packet->num_io_configs == 0) {
|
||||||
CAM_ERR(CAM_OIS, "No I/O configs to process");
|
CAM_ERR(CAM_OIS, "No I/O configs to process");
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -692,6 +722,7 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
if (io_cfg == NULL) {
|
if (io_cfg == NULL) {
|
||||||
CAM_ERR(CAM_OIS, "I/O config is invalid(NULL)");
|
CAM_ERR(CAM_OIS, "I/O config is invalid(NULL)");
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -705,6 +736,7 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
cmd_desc, 1, io_cfg);
|
cmd_desc, 1, io_cfg);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_OIS, "OIS read pkt parsing failed: %d", rc);
|
CAM_ERR(CAM_OIS, "OIS read pkt parsing failed: %d", rc);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -714,6 +746,7 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_OIS, "cannot read data rc: %d", rc);
|
CAM_ERR(CAM_OIS, "cannot read data rc: %d", rc);
|
||||||
delete_request(&i2c_read_settings);
|
delete_request(&i2c_read_settings);
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -721,6 +754,7 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_OIS,
|
CAM_ERR(CAM_OIS,
|
||||||
"Failed in deleting the read settings");
|
"Failed in deleting the read settings");
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -728,13 +762,16 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||||||
default:
|
default:
|
||||||
CAM_ERR(CAM_OIS, "Invalid Opcode: %d",
|
CAM_ERR(CAM_OIS, "Invalid Opcode: %d",
|
||||||
(csl_packet->header.op_code & 0xFFFFFF));
|
(csl_packet->header.op_code & 0xFFFFFF));
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
|
||||||
|
|
||||||
if (!rc)
|
if (!rc) {
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
return rc;
|
return rc;
|
||||||
|
}
|
||||||
pwr_dwn:
|
pwr_dwn:
|
||||||
|
cam_mem_put_cpu_buf(dev_config.packet_handle);
|
||||||
cam_ois_power_down(o_ctrl);
|
cam_ois_power_down(o_ctrl);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -637,6 +637,7 @@ int32_t cam_handle_mem_ptr(uint64_t handle, struct cam_sensor_ctrl_t *s_ctrl)
|
|||||||
if (cmd_desc[i].offset >= len) {
|
if (cmd_desc[i].offset >= len) {
|
||||||
CAM_ERR(CAM_SENSOR,
|
CAM_ERR(CAM_SENSOR,
|
||||||
"offset past length of buffer");
|
"offset past length of buffer");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc[i].mem_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
@@ -644,6 +645,7 @@ int32_t cam_handle_mem_ptr(uint64_t handle, struct cam_sensor_ctrl_t *s_ctrl)
|
|||||||
if (cmd_desc[i].length > remain_len) {
|
if (cmd_desc[i].length > remain_len) {
|
||||||
CAM_ERR(CAM_SENSOR,
|
CAM_ERR(CAM_SENSOR,
|
||||||
"Not enough buffer provided for cmd");
|
"Not enough buffer provided for cmd");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc[i].mem_handle);
|
||||||
rc = -EINVAL;
|
rc = -EINVAL;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
@@ -656,6 +658,7 @@ int32_t cam_handle_mem_ptr(uint64_t handle, struct cam_sensor_ctrl_t *s_ctrl)
|
|||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
CAM_ERR(CAM_SENSOR,
|
CAM_ERR(CAM_SENSOR,
|
||||||
"Failed to parse the command Buffer Header");
|
"Failed to parse the command Buffer Header");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc[i].mem_handle);
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
cam_mem_put_cpu_buf(cmd_desc[i].mem_handle);
|
cam_mem_put_cpu_buf(cmd_desc[i].mem_handle);
|
||||||
|
|||||||
@@ -264,6 +264,7 @@ static int32_t cam_sensor_get_io_buffer(
|
|||||||
CAM_ERR(CAM_SENSOR,
|
CAM_ERR(CAM_SENSOR,
|
||||||
"invalid size:io_cfg->offsets[0]: %d, buf_size: %d",
|
"invalid size:io_cfg->offsets[0]: %d, buf_size: %d",
|
||||||
io_cfg->offsets[0], buf_size);
|
io_cfg->offsets[0], buf_size);
|
||||||
|
cam_mem_put_cpu_buf(io_cfg->mem_handle[0]);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
i2c_settings->read_buff =
|
i2c_settings->read_buff =
|
||||||
@@ -459,6 +460,7 @@ int cam_sensor_i2c_command_parser(
|
|||||||
remain_len -= cmd_desc[i].offset;
|
remain_len -= cmd_desc[i].offset;
|
||||||
if (remain_len < cmd_desc[i].length) {
|
if (remain_len < cmd_desc[i].length) {
|
||||||
CAM_ERR(CAM_SENSOR, "buffer provided too small");
|
CAM_ERR(CAM_SENSOR, "buffer provided too small");
|
||||||
|
cam_mem_put_cpu_buf(cmd_desc[i].mem_handle);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user