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:
Raju P.L.S.S.S.N
2012-04-05 14:33:36 +05:30
parent 55b0fe4f8a
commit bf3faffaa0
3 changed files with 70 additions and 3 deletions

View File

@@ -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 = {

View File

@@ -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;

View File

@@ -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;