static long hw_camera_led_ioctl(struct file *filep ,unsigned int cmd, unsigned long arg) { int ret = 0; unsigned int camera_led_state; extern int tps61310_set_flash(unsigned led_state); CDBG("function %s enterence\n",__func__); switch(cmd) { case CAMERA_LED_GET : camera_led_state = atomic_read(&camera_led_flag); if(copy_to_user((void __user *)arg,&camera_led_state,sizeof(camera_led_state))) { pr_err("function copy_to_user fail"); ret = -EFAULT; } break; case CAMERA_LED_SET : if(copy_from_user(&camera_led_state,(void __user *)arg,sizeof(camera_led_state))) { pr_err("function copy_from_user fail"); ret = -EFAULT; } else { /*these handset use tps61310 as flash*/ if(/* machine_is_msm8x25_U8825() || machine_is_msm8x25_U8825D() || machine_is_msm8x25_U8833D() || machine_is_msm8x25_U8833() || machine_is_msm8x25_C8825D() || machine_is_msm8x25_C8950D() || machine_is_msm8x25_U8950D() || machine_is_msm8x25_U8951() || machine_is_msm8x25_C8951() || machine_is_msm8x25_H881C() ||machine_is_msm8x25_U8950()*/ 1) { call_led_set_state(camera_led_state); } else { ret = msm_camera_flash_set_led_state(&hw_camera_led_data, camera_led_state); } if(!ret) { atomic_set(&camera_led_flag,camera_led_state); } } break; default: pr_err("hw_camera_led_ioctl:error ioctl cmd"); ret = -EINVAL; } return ret; }
int msm_flash_ctrl(struct msm_camera_sensor_info *sdata, struct flash_ctrl_data *flash_info) { int rc = 0; sensor_data = sdata; switch (flash_info->flashtype) { case LED_FLASH: /* LGE_CHANGE_S L9II Camera bringup 2013-03-11 [email protected] */ #if defined (CONFIG_MSM_CAMERA_FLASH_LM3559) rc = lm3559_flash_set_led_state(flash_info->ctrl_data.led_state); CDBG("%s: lm3559_flash_set_led_state rc = %d\n", __func__, rc); #elif defined (CONFIG_MSM_CAMERA_FLASH_LM3639) rc = lm3639_flash_set_led_state(flash_info->ctrl_data.led_state); CDBG("%s: lm3639_flash_set_led_state rc = %d\n", __func__, rc); #else rc = msm_camera_flash_set_led_state(sdata->flash_data, flash_info->ctrl_data.led_state); #endif /* LGE_CHANGE_E L9II Camera bringup 2013-03-11 [email protected] */ break; case STROBE_FLASH: rc = msm_strobe_flash_ctrl(sdata->strobe_flash_data, &(flash_info->ctrl_data.strobe_ctrl)); break; default: pr_err("Invalid Flash MODE\n"); rc = -EINVAL; } return rc; }
int msm_flash_ctrl(struct msm_camera_sensor_info *sdata, struct flash_ctrl_data *flash_info) { int rc = 0; sensor_data = sdata; switch (flash_info->flashtype) { case LED_FLASH: #ifdef CONFIG_MSM_CAMERA_FLASH_LM3559 rc = lm3559_flash_set_led_state(flash_info->ctrl_data.led_state); #else rc = msm_camera_flash_set_led_state(sdata->flash_data, flash_info->ctrl_data.led_state); #endif break; case STROBE_FLASH: rc = msm_strobe_flash_ctrl(sdata->strobe_flash_data, &(flash_info->ctrl_data.strobe_ctrl)); break; default: pr_err("Invalid Flash MODE\n"); rc = -EINVAL; } return rc; }
static long hw_camera_led_ioctl(struct file *filep ,unsigned int cmd, unsigned long arg) { int ret = 0; unsigned int camera_led_state; CDBG("function %s enterence\n", __func__); switch (cmd) { case CAMERA_LED_GET: camera_led_state = atomic_read(&camera_led_flag); if (copy_to_user((void __user *)arg, &camera_led_state, sizeof(camera_led_state))) { pr_err("function copy_to_user fail"); ret = -EFAULT; } break; case CAMERA_LED_SET: if (copy_from_user(&camera_led_state, (void __user *)arg, sizeof(camera_led_state))) { pr_err("function copy_from_user fail"); ret = -EFAULT; } else { /* U8680 and U8730 use tps61310 flash driver IC, so set led with tps61310 function */ #ifdef CONFIG_ARCH_MSM7X27A ret = tps61310_set_flash(camera_led_state); #else if (machine_is_msm8255_u8680() || machine_is_msm8255_u8730() //|| machine_is_msm8255_u8867z() ) { tps61310_set_flash(camera_led_state); } else { ret = msm_camera_flash_set_led_state(&hw_camera_led_data, camera_led_state); } #endif if (!ret) { atomic_set(&camera_led_flag, camera_led_state); } } break; default: pr_err("hw_camera_led_ioctl:error ioctl cmd"); ret = -EINVAL; } return ret; }
static long hw_camera_led_ioctl(struct file *filep ,unsigned int cmd, unsigned long arg) { int ret = 0; unsigned int camera_led_state; hw_product_sub_type product_sub_type = get_hw_sub_board_id(); CDBG("function %s enterence\n",__func__); switch(cmd) { case CAMERA_LED_GET : camera_led_state = atomic_read(&camera_led_flag); if(copy_to_user((void __user *)arg,&camera_led_state,sizeof(camera_led_state))) { pr_err("function copy_to_user fail"); ret = -EFAULT; } break; case CAMERA_LED_SET : if(copy_from_user(&camera_led_state,(void __user *)arg,sizeof(camera_led_state))) { pr_err("function copy_from_user fail"); ret = -EFAULT; } else { /*C8813Q support torch */ if( machine_is_msm8x25_C8950D() || machine_is_msm8x25_C8813() || machine_is_msm8x25_C8813Q() || machine_is_msm8x25_G610C() || ( ( machine_is_msm8x25_U8951() || machine_is_msm8x25_G520U()) && ( !IS_UMTS_DOUBLE_SIM(product_sub_type) ) ) ) { ret = call_led_set_state(camera_led_state); } else { ret = msm_camera_flash_set_led_state(&hw_camera_led_data, camera_led_state); } if(!ret) { atomic_set(&camera_led_flag,camera_led_state); } } break; default: pr_err("hw_camera_led_ioctl:error ioctl cmd"); ret = -EINVAL; } return ret; }
int msm_flash_ctrl(struct msm_camera_sensor_info *sdata, struct flash_ctrl_data *flash_info) { int rc = 0; switch (flash_info->flashtype) { case LED_FLASH: rc = msm_camera_flash_set_led_state(sdata->flash_data, flash_info->ctrl_data.led_state); break; case STROBE_FLASH: rc = msm_strobe_flash_ctrl(sdata->strobe_flash_data, &(flash_info->ctrl_data.strobe_ctrl)); break; default: pr_err("Invalid Flash MODE\n"); rc = -EINVAL; } return rc; }