/* * Refer to MSM_CAM_IOCTL_FLASH_LED_CFG used by mm-camera in user space * flash_led_enable is set in apps's menu item selected by user * 0: disable Flash LED * 1: enable Flash LED */ int32_t msm_camera_flash_set_led_state(struct msm_camera_sensor_flash_data *fdata, unsigned led_state) { int32_t rc = 0; pr_err("%s: led_state: %d,fdata->flash_type=%d\n", __func__, led_state,fdata->flash_type); if (fdata->flash_type != MSM_CAMERA_FLASH_LED) { return -ENODEV; } switch(led_state) { case MSM_CAMERA_LED_OFF: if( __gpio_get_value(MSM_CAMERA_FLASH_LED_GPIO)) msm_camera_flash_set_led_gpio(0); break; case MSM_CAMERA_LED_LOW: if (flash_led_enable==1) {//MSM_LED_MODE_ON msm_camera_set_flash_torch_mode(5); } else if(flash_led_enable==2) { //MSM_LED_MODE_AUTO if(zte_get_flash_auto_flag_value()== 1) { msm_camera_set_flash_torch_mode(5); } } break; case MSM_CAMERA_LED_HIGH: msm_camera_flash_led_enable(); break; case MSM_CAMERA_LED_RELEASE: if( __gpio_get_value(MSM_CAMERA_FLASH_LED_GPIO)) msm_camera_flash_set_led_gpio(0); break; default: rc = -EFAULT; pr_err("%s: rc=%d\n", __func__, rc); return rc; } return rc; }
int msm_flash_mode_ctrl(struct msm_camera_sensor_info *sdata, uint32_t flash_mode) { int rc = 0; pr_err(" %s flash_mode=%d \n",__func__,flash_mode); /* 0 LED_MODE_OFF, 1 LED_MODE_AUTO, 2 LED_MODE_ON, 3 LED_MODE_TORCH, */ switch (flash_mode) { case 0: #if defined CONFIG_FLSH_ADP1650 rc = ADP1650_disable(); #elif defined FLASH_GPIO_CONTROL rc = msm_camera_flash_led_disable(); #endif current_flash_led_mode = 0; break; case 1: current_flash_led_mode = 1; break; case 2: current_flash_led_mode = 2; break; case 3: #if defined CONFIG_FLSH_ADP1650 rc = ADP1650_assistmode_enable(); #elif defined FLASH_GPIO_CONTROL msm_camera_set_flash_torch_mode(13); #endif break; default: pr_err("Invalid Flash MODE\n"); rc = -EINVAL; } return rc; }
int32_t msm_camera_flash_set_led_state( struct msm_camera_sensor_flash_data *fdata, unsigned led_state) { int32_t rc=0; pr_err("led_state=%d\n",led_state); switch (led_state) { case MSM_CAMERA_LED_RELEASE: case MSM_CAMERA_LED_OFF: #if defined CONFIG_FLSH_ADP1650 rc = ADP1650_disable(); #elif defined FLASH_GPIO_CONTROL rc = msm_camera_flash_led_disable(); #endif break; case MSM_CAMERA_LED_LOW: #if defined CONFIG_FLSH_ADP1650 rc = ADP1650_assistmode_enable(); #elif defined FLASH_GPIO_CONTROL msm_camera_set_flash_torch_mode(13); #endif break; case MSM_CAMERA_LED_HIGH: #if defined CONFIG_FLSH_ADP1650 rc = ADP1650_flashmode_enable(); #elif defined FLASH_GPIO_CONTROL if(current_flash_led_mode ==2){ rc = msm_camera_flash_led_enable(); }else if((current_flash_led_mode ==1)&&(ov5640_autoflashflag== 1)){ rc = msm_camera_flash_led_enable(); } #endif break; default: rc = 0; break; } return rc; }
int32_t msm_camera_flash_set_led_mode(struct msm_camera_sensor_flash_data *fdata, unsigned led_mode) { int32_t rc = 0; pr_err("%s: led_mode: %d\n", __func__, led_mode); if(fdata) { if (fdata->flash_type != MSM_CAMERA_FLASH_LED) { pr_err("%s: flash type not support\n", __func__); return -ENODEV; } } switch(led_mode) { case MSM_LED_MODE_OFF: msm_camera_flash_set_led_gpio(0); flash_led_enable = 0; break; case MSM_LED_MODE_ON: flash_led_enable = 1; break; case MSM_LED_MODE_AUTO: flash_led_enable = 2; break; case MSM_LED_MODE_TORCH: msm_camera_set_flash_torch_mode(13); break; default: //flash_led_enable = 0; rc = -EFAULT; CDBG("%s: rc=%d\n", __func__, rc); return rc; } return rc; }