Merge "msm: camera: sensor: Add state validation for flash"

This commit is contained in:
Linux Build Service Account 2016-09-08 14:32:07 -07:00 committed by Gerrit - the friendly Code Review server
commit 30f2efabe2
2 changed files with 32 additions and 9 deletions

View file

@ -631,11 +631,6 @@ static int32_t msm_flash_release(
struct msm_flash_ctrl_t *flash_ctrl) struct msm_flash_ctrl_t *flash_ctrl)
{ {
int32_t rc = 0; int32_t rc = 0;
if (flash_ctrl->flash_state == MSM_CAMERA_FLASH_RELEASE) {
pr_err("%s:%d Invalid flash state = %d",
__func__, __LINE__, flash_ctrl->flash_state);
return 0;
}
rc = flash_ctrl->func_tbl->camera_flash_off(flash_ctrl, NULL); rc = flash_ctrl->func_tbl->camera_flash_off(flash_ctrl, NULL);
if (rc < 0) { if (rc < 0) {
@ -663,24 +658,49 @@ static int32_t msm_flash_config(struct msm_flash_ctrl_t *flash_ctrl,
rc = msm_flash_init(flash_ctrl, flash_data); rc = msm_flash_init(flash_ctrl, flash_data);
break; break;
case CFG_FLASH_RELEASE: case CFG_FLASH_RELEASE:
if (flash_ctrl->flash_state == MSM_CAMERA_FLASH_INIT) if (flash_ctrl->flash_state != MSM_CAMERA_FLASH_RELEASE) {
rc = flash_ctrl->func_tbl->camera_flash_release( rc = flash_ctrl->func_tbl->camera_flash_release(
flash_ctrl); flash_ctrl);
} else {
CDBG(pr_fmt("Invalid state : %d\n"),
flash_ctrl->flash_state);
}
break; break;
case CFG_FLASH_OFF: case CFG_FLASH_OFF:
if (flash_ctrl->flash_state == MSM_CAMERA_FLASH_INIT) if ((flash_ctrl->flash_state != MSM_CAMERA_FLASH_RELEASE) &&
(flash_ctrl->flash_state != MSM_CAMERA_FLASH_OFF)) {
rc = flash_ctrl->func_tbl->camera_flash_off( rc = flash_ctrl->func_tbl->camera_flash_off(
flash_ctrl, flash_data); flash_ctrl, flash_data);
if (!rc)
flash_ctrl->flash_state = MSM_CAMERA_FLASH_OFF;
} else {
CDBG(pr_fmt("Invalid state : %d\n"),
flash_ctrl->flash_state);
}
break; break;
case CFG_FLASH_LOW: case CFG_FLASH_LOW:
if (flash_ctrl->flash_state == MSM_CAMERA_FLASH_INIT) if ((flash_ctrl->flash_state == MSM_CAMERA_FLASH_OFF) ||
(flash_ctrl->flash_state == MSM_CAMERA_FLASH_INIT)) {
rc = flash_ctrl->func_tbl->camera_flash_low( rc = flash_ctrl->func_tbl->camera_flash_low(
flash_ctrl, flash_data); flash_ctrl, flash_data);
if (!rc)
flash_ctrl->flash_state = MSM_CAMERA_FLASH_LOW;
} else {
CDBG(pr_fmt("Invalid state : %d\n"),
flash_ctrl->flash_state);
}
break; break;
case CFG_FLASH_HIGH: case CFG_FLASH_HIGH:
if (flash_ctrl->flash_state == MSM_CAMERA_FLASH_INIT) if ((flash_ctrl->flash_state == MSM_CAMERA_FLASH_OFF) ||
(flash_ctrl->flash_state == MSM_CAMERA_FLASH_INIT)) {
rc = flash_ctrl->func_tbl->camera_flash_high( rc = flash_ctrl->func_tbl->camera_flash_high(
flash_ctrl, flash_data); flash_ctrl, flash_data);
if (!rc)
flash_ctrl->flash_state = MSM_CAMERA_FLASH_HIGH;
} else {
CDBG(pr_fmt("Invalid state : %d\n"),
flash_ctrl->flash_state);
}
break; break;
default: default:
rc = -EFAULT; rc = -EFAULT;

View file

@ -27,6 +27,9 @@
enum msm_camera_flash_state_t { enum msm_camera_flash_state_t {
MSM_CAMERA_FLASH_INIT, MSM_CAMERA_FLASH_INIT,
MSM_CAMERA_FLASH_OFF,
MSM_CAMERA_FLASH_LOW,
MSM_CAMERA_FLASH_HIGH,
MSM_CAMERA_FLASH_RELEASE, MSM_CAMERA_FLASH_RELEASE,
}; };