msm: camera: Add flash source support for ov5647
The flash support for ov5647 (back sensor) on 8x25 target Change-Id: I2f431174dea37f83c5a555d394f15419fdccd3f3 Signed-off-by: Raju P.L.S.S.S.N <rplsssn@codeaurora.org>
This commit is contained in:
@@ -206,9 +206,9 @@ static struct msm_camera_sensor_platform_info sensor_board_info_ov5647 = {
|
||||
};
|
||||
|
||||
static struct msm_camera_sensor_flash_src msm_flash_src_ov5647 = {
|
||||
.flash_sr_type = MSM_CAMERA_FLASH_SRC_LED,
|
||||
._fsrc.led_src.led_name = "flashlight",
|
||||
._fsrc.led_src.led_name_len = 10,
|
||||
.flash_sr_type = MSM_CAMERA_FLASH_SRC_LED1,
|
||||
._fsrc.ext_driver_src.led_en = 13,
|
||||
._fsrc.ext_driver_src.led_flash_en = 32,
|
||||
};
|
||||
|
||||
static struct msm_camera_sensor_flash_data flash_ov5647 = {
|
||||
|
||||
@@ -99,6 +99,7 @@ struct msm_camera_legacy_device_platform_data {
|
||||
#define MSM_CAMERA_FLASH_SRC_CURRENT_DRIVER (0x00000001<<2)
|
||||
#define MSM_CAMERA_FLASH_SRC_EXT (0x00000001<<3)
|
||||
#define MSM_CAMERA_FLASH_SRC_LED (0x00000001<<3)
|
||||
#define MSM_CAMERA_FLASH_SRC_LED1 (0x00000001<<4)
|
||||
|
||||
struct msm_camera_sensor_flash_pmic {
|
||||
uint8_t num_of_src;
|
||||
|
||||
@@ -212,6 +212,66 @@ int msm_camera_flash_current_driver(
|
||||
#endif /* CONFIG_LEDS_PMIC8058 */
|
||||
return rc;
|
||||
}
|
||||
|
||||
int msm_camera_flash_led(
|
||||
struct msm_camera_sensor_flash_external *external,
|
||||
unsigned led_state)
|
||||
{
|
||||
int rc = 0;
|
||||
|
||||
CDBG("msm_camera_flash_led: %d\n", led_state);
|
||||
switch (led_state) {
|
||||
case MSM_CAMERA_LED_INIT:
|
||||
rc = gpio_request(external->led_en, "sgm3141");
|
||||
CDBG("MSM_CAMERA_LED_INIT: gpio_req: %d %d\n",
|
||||
external->led_en, rc);
|
||||
if (!rc)
|
||||
gpio_direction_output(external->led_en, 0);
|
||||
else
|
||||
return 0;
|
||||
|
||||
rc = gpio_request(external->led_flash_en, "sgm3141");
|
||||
CDBG("MSM_CAMERA_LED_INIT: gpio_req: %d %d\n",
|
||||
external->led_flash_en, rc);
|
||||
if (!rc)
|
||||
gpio_direction_output(external->led_flash_en, 0);
|
||||
|
||||
break;
|
||||
|
||||
case MSM_CAMERA_LED_RELEASE:
|
||||
CDBG("MSM_CAMERA_LED_RELEASE\n");
|
||||
gpio_set_value_cansleep(external->led_en, 0);
|
||||
gpio_free(external->led_en);
|
||||
gpio_set_value_cansleep(external->led_flash_en, 0);
|
||||
gpio_free(external->led_flash_en);
|
||||
break;
|
||||
|
||||
case MSM_CAMERA_LED_OFF:
|
||||
CDBG("MSM_CAMERA_LED_OFF\n");
|
||||
gpio_set_value_cansleep(external->led_en, 0);
|
||||
gpio_set_value_cansleep(external->led_flash_en, 0);
|
||||
break;
|
||||
|
||||
case MSM_CAMERA_LED_LOW:
|
||||
CDBG("MSM_CAMERA_LED_LOW\n");
|
||||
gpio_set_value_cansleep(external->led_en, 1);
|
||||
gpio_set_value_cansleep(external->led_flash_en, 1);
|
||||
break;
|
||||
|
||||
case MSM_CAMERA_LED_HIGH:
|
||||
CDBG("MSM_CAMERA_LED_HIGH\n");
|
||||
gpio_set_value_cansleep(external->led_en, 1);
|
||||
gpio_set_value_cansleep(external->led_flash_en, 1);
|
||||
break;
|
||||
|
||||
default:
|
||||
rc = -EFAULT;
|
||||
break;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
int msm_camera_flash_external(
|
||||
struct msm_camera_sensor_flash_external *external,
|
||||
unsigned led_state)
|
||||
@@ -439,6 +499,12 @@ int32_t msm_camera_flash_set_led_state(
|
||||
led_state);
|
||||
break;
|
||||
|
||||
case MSM_CAMERA_FLASH_SRC_LED1:
|
||||
rc = msm_camera_flash_led(
|
||||
&fdata->flash_src->_fsrc.ext_driver_src,
|
||||
led_state);
|
||||
break;
|
||||
|
||||
default:
|
||||
rc = -ENODEV;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user