From b3ddb5fbbc29d8d8e72b6a20f20393be5f06f921 Mon Sep 17 00:00:00 2001 From: "dalon.zhang" Date: Mon, 21 Jul 2014 09:56:45 +0800 Subject: [PATCH] camsys: v0.0x10.0 --- drivers/media/video/rk_camsys/camsys_drv.c | 2 +- .../media/video/rk_camsys/camsys_internal.h | 4 ++- drivers/media/video/rk_camsys/camsys_marvin.c | 27 ++++++++++++++++--- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/drivers/media/video/rk_camsys/camsys_drv.c b/drivers/media/video/rk_camsys/camsys_drv.c index c5262861d581..d8ffa4688bba 100755 --- a/drivers/media/video/rk_camsys/camsys_drv.c +++ b/drivers/media/video/rk_camsys/camsys_drv.c @@ -181,7 +181,7 @@ static int camsys_extdev_register(camsys_devio_name_t *devio, camsys_dev_t *cams } extdev->dev_cfg = devio->dev_cfg; - + extdev->fl.fl.active = devio->fl.fl.active; regulator_info = &devio->avdd; regulator = &extdev->avdd; for (i=(CamSys_Vdd_Start_Tag+1); ipdev->dev.of_node, "rockchip,gpios", 0, &flags); + if(gpio_is_valid(flash_trigger_io)){ + flash_trigger_io = of_get_named_gpio_flags(camsys_dev->pdev->dev.of_node, "rockchip,gpios", 0, &flags); + gpio_request(flash_trigger_io,"camsys_gpio"); + gpio_direction_output(flash_trigger_io, (~(extdev->fl.fl.active) & 0x1)); + } + } } else { strcpy(state_str,"default"); } @@ -122,7 +134,8 @@ static int camsys_mrv_flash_trigger_cb(void *ptr,unsigned int on) char state_str[20] = {0}; int retval = 0; enum of_gpio_flags flags; - + camsys_extdev_t *extdev = NULL; + if(!on){ strcpy(state_str,"isp_flash_as_gpio"); pinctrl = devm_pinctrl_get(dev); @@ -148,9 +161,15 @@ static int camsys_mrv_flash_trigger_cb(void *ptr,unsigned int on) if(gpio_is_valid(flash_trigger_io)){ flash_trigger_io = of_get_named_gpio_flags(camsys_dev->pdev->dev.of_node, "rockchip,gpios", 0, &flags); gpio_request(flash_trigger_io,"camsys_gpio"); - gpio_direction_output(flash_trigger_io, 1); - } - + //get flash io active pol + if (!list_empty(&camsys_dev->extdevs.list)) { + list_for_each_entry(extdev, &camsys_dev->extdevs.list, list) { + if (extdev->dev_cfg & CAMSYS_DEVCFG_FLASHLIGHT) { + gpio_direction_output(flash_trigger_io, (~(extdev->fl.fl.active) & 0x1)); + } + } + } + } }else{ strcpy(state_str,"isp_flash_as_trigger_out"); pinctrl = devm_pinctrl_get(dev); -- 2.34.1