static int32_t msm_led_trigger_config(struct msm_led_flash_ctrl_t *fctrl, void *data) { int rc = 0; struct msm_camera_led_cfg_t *cfg = (struct msm_camera_led_cfg_t *)data; CDBG("called led_state %d\n", cfg->cfgtype); #if defined(CONFIG_MACH_VIENNA_LTE) || defined(CONFIG_MACH_PICASSO)\ || defined(CONFIG_MACH_MONDRIAN) || defined(CONFIG_MACH_V2_LTE) if (is_torch_enabled == true) { return rc; } #endif if (!fctrl->led_trigger[0]) { pr_err("failed\n"); return -EINVAL; } switch (cfg->cfgtype) { #ifdef CONFIG_LEDS_MAX77803 #ifdef CONFIG_MSM_TORCH_CONTROL case MSM_CAMERA_LED_OFF: case MSM_CAMERA_LED_RELEASE: torch_level_set(0, 0); break; case MSM_CAMERA_LED_LOW: torch_level_set(0, 1); break; case MSM_CAMERA_LED_HIGH: torch_level_set(0, 2); break; #else case MSM_CAMERA_LED_OFF: pr_err("CAM Flash OFF"); max77803_led_en(0, 0); max77803_led_en(0, 1); break; case MSM_CAMERA_LED_LOW: pr_err("CAM Pre Flash ON"); max77803_led_en(1, 0); break; case MSM_CAMERA_LED_HIGH: pr_err("CAM Flash ON"); max77803_led_en(1, 1); break; case MSM_CAMERA_LED_RELEASE: pr_err("CAM Flash OFF & release"); if (gpio_request(led_flash_en, "max77803_flash_en")) pr_err("can't get max77803_flash_en"); else { gpio_direction_output(led_flash_en, 0); gpio_free(led_flash_en); } if (gpio_request(led_torch_en, "max77803_torch_en")) pr_err("can't get max77803_torch_en"); else { gpio_direction_output(led_torch_en, 0); gpio_free(led_torch_en); } break; #endif case MSM_CAMERA_LED_INIT: break; // Implementation KTD2692 flashIC #elif defined(CONFIG_MACH_VIENNA_LTE) || defined(CONFIG_MACH_PICASSO)\ || defined(CONFIG_MACH_MONDRIAN) || defined(CONFIG_MACH_V2_LTE) #if defined(CONFIG_MACH_LT03EUR) || defined(CONFIG_MACH_LT03SKT)\ || defined(CONFIG_MACH_LT03KTT) || defined(CONFIG_MACH_LT03LGT)\ || defined(CONFIG_MACH_PICASSO)|| defined(CONFIG_MACH_MONDRIAN)\ || defined(CONFIG_MACH_V2_LTE) case MSM_CAMERA_LED_OFF: KTD2692_set_flash(MODE_CONTROL | 0x00); break; case MSM_CAMERA_LED_LOW: gpio_set_value(led_torch_en, 0); udelay(T_RESET); gpio_set_value(led_torch_en, 1); udelay(T_RESET2); KTD2692_set_flash(LVP_SETTING | 0x00); KTD2692_set_flash(MOVIE_CURRENT | 0x04); KTD2692_set_flash(MODE_CONTROL | 0x01); break; case MSM_CAMERA_LED_HIGH: gpio_set_value(led_torch_en, 0); udelay(T_RESET); gpio_set_value(led_torch_en, 1); udelay(T_RESET2); KTD2692_set_flash(LVP_SETTING | 0x00); KTD2692_set_flash(FLASH_CURRENT | 0x0F); KTD2692_set_flash(MODE_CONTROL | 0x02); break; case MSM_CAMERA_LED_INIT: break; case MSM_CAMERA_LED_RELEASE: gpio_set_value(led_torch_en, 0); break; #else case MSM_CAMERA_LED_OFF: if (system_rev < 0x02) { // For KTD267 flashIC gpio_set_value(led_flash_en, 0); gpio_set_value(led_torch_en, 0); } else { // For KTD2692 flashIC KTD2692_set_flash(MODE_CONTROL | 0x00); } break; case MSM_CAMERA_LED_LOW: if (system_rev < 0x02) { // For KTD267 flashIC gpio_set_value(led_flash_en, 1); gpio_set_value(led_torch_en, 1); } else { // For KTD2692 flashIC KTD2692_set_flash(LVP_SETTING | 0x00); KTD2692_set_flash(MOVIE_CURRENT | 0x04); KTD2692_set_flash(MODE_CONTROL | 0x01); } break; case MSM_CAMERA_LED_HIGH: if (system_rev < 0x02) { // For KTD267 flashIC gpio_set_value(led_flash_en, 1); gpio_set_value(led_torch_en, 1); } else { // For KTD2692 flashIC KTD2692_set_flash(LVP_SETTING | 0x00); KTD2692_set_flash(FLASH_CURRENT | 0x0F); KTD2692_set_flash(MODE_CONTROL | 0x02); } break; case MSM_CAMERA_LED_INIT: break; case MSM_CAMERA_LED_RELEASE: if (system_rev < 0x02) { // For KTD267 flashIC } else { // For KTD2692 flashIC gpio_set_value(led_torch_en, 0); } break; #endif #else case MSM_CAMERA_LED_OFF: led_trigger_event(fctrl->led_trigger[0], 0); break; case MSM_CAMERA_LED_LOW: led_trigger_event(fctrl->led_trigger[0], fctrl->max_current[0] / 2); break; case MSM_CAMERA_LED_HIGH: led_trigger_event(fctrl->led_trigger[0], fctrl->max_current[0]); break; case MSM_CAMERA_LED_INIT: case MSM_CAMERA_LED_RELEASE: led_trigger_event(fctrl->led_trigger[0], 0); break; #endif default: rc = -EFAULT; break; } CDBG("flash_set_led_state: return %d\n", rc); return rc; }
static int32_t msm_led_trigger_config(struct msm_led_flash_ctrl_t *fctrl, void *data) { int rc = 0; struct msm_camera_led_cfg_t *cfg = (struct msm_camera_led_cfg_t *)data; CDBG("called led_state %d\n", cfg->cfgtype); #if defined(CONFIG_MACH_VIENNAEUR) || defined(CONFIG_MACH_LT03EUR)\ || defined(CONFIG_MACH_LT03SKT) || defined(CONFIG_MACH_LT03KTT)\ || defined(CONFIG_MACH_LT03LGT) if (is_torch_enabled == true) { return rc; } #endif if (!fctrl->led_trigger[0]) { pr_err("failed\n"); return -EINVAL; } #if defined(CONFIG_LEDS_MAX77803) switch (cfg->cfgtype) { case MSM_CAMERA_LED_OFF: pr_err("CAM Flash OFF"); max77803_led_en(0, 0); max77803_led_en(0, 1); break; case MSM_CAMERA_LED_LOW: pr_err("CAM Pre Flash ON"); max77803_led_en(1, 0); break; case MSM_CAMERA_LED_HIGH: pr_err("CAM Flash ON"); max77803_led_en(1, 1); break; case MSM_CAMERA_LED_INIT: case MSM_CAMERA_LED_RELEASE: break; default: rc = -EFAULT; break; } // Implementation KTD2692 flashIC #elif defined(CONFIG_MACH_VIENNAEUR) || defined(CONFIG_MACH_LT03EUR)\ || defined(CONFIG_MACH_LT03SKT) || defined(CONFIG_MACH_LT03KTT)\ || defined(CONFIG_MACH_LT03LGT) switch (cfg->cfgtype) { #if defined(CONFIG_MACH_LT03EUR) || defined(CONFIG_MACH_LT03SKT)\ || defined(CONFIG_MACH_LT03KTT) || defined(CONFIG_MACH_LT03LGT) case MSM_CAMERA_LED_OFF: KTD2692_set_flash(MODE_CONTROL | 0x00); break; case MSM_CAMERA_LED_LOW: KTD2692_set_flash(LVP_SETTING | 0x00); KTD2692_set_flash(MOVIE_CURRENT | 0x04); KTD2692_set_flash(MODE_CONTROL | 0x01); break; case MSM_CAMERA_LED_HIGH: KTD2692_set_flash(LVP_SETTING | 0x00); KTD2692_set_flash(FLASH_CURRENT | 0x0F); KTD2692_set_flash(MODE_CONTROL | 0x02); break; case MSM_CAMERA_LED_INIT: break; case MSM_CAMERA_LED_RELEASE: gpio_set_value(led_torch_en, 0); break; default: rc = -EFAULT; break; #else case MSM_CAMERA_LED_OFF: if (system_rev < 0x02) { // For KTD267 flashIC gpio_set_value(led_flash_en, 0); gpio_set_value(led_torch_en, 0); } else { // For KTD2692 flashIC KTD2692_set_flash(MODE_CONTROL | 0x00); } break; case MSM_CAMERA_LED_LOW: if (system_rev < 0x02) { // For KTD267 flashIC gpio_set_value(led_flash_en, 1); gpio_set_value(led_torch_en, 1); } else { // For KTD2692 flashIC KTD2692_set_flash(LVP_SETTING | 0x00); KTD2692_set_flash(MOVIE_CURRENT | 0x04); KTD2692_set_flash(MODE_CONTROL | 0x01); } break; case MSM_CAMERA_LED_HIGH: if (system_rev < 0x02) { // For KTD267 flashIC gpio_set_value(led_flash_en, 1); gpio_set_value(led_torch_en, 1); } else { // For KTD2692 flashIC KTD2692_set_flash(LVP_SETTING | 0x00); KTD2692_set_flash(FLASH_CURRENT | 0x0F); KTD2692_set_flash(MODE_CONTROL | 0x02); } break; case MSM_CAMERA_LED_INIT: break; case MSM_CAMERA_LED_RELEASE: if (system_rev < 0x02) { // For KTD267 flashIC } else { // For KTD2692 flashIC gpio_set_value(led_torch_en, 0); } break; default: rc = -EFAULT; break; #endif } #else switch (cfg->cfgtype) { case MSM_CAMERA_LED_OFF: led_trigger_event(fctrl->led_trigger[0], 0); break; case MSM_CAMERA_LED_LOW: led_trigger_event(fctrl->led_trigger[0], fctrl->max_current[0] / 2); break; case MSM_CAMERA_LED_HIGH: led_trigger_event(fctrl->led_trigger[0], fctrl->max_current[0]); break; case MSM_CAMERA_LED_INIT: case MSM_CAMERA_LED_RELEASE: led_trigger_event(fctrl->led_trigger[0], 0); break; default: rc = -EFAULT; break; } #endif CDBG("flash_set_led_state: return %d\n", rc); return rc; }