Merge "msm: camera: sensor: Add state validation for flash"
This commit is contained in:
commit
30f2efabe2
2 changed files with 32 additions and 9 deletions
|
@ -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;
|
||||||
|
|
|
@ -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,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue