Add a flag for VIO turn on and off if multi-camera operate
Includes required parts of squashed commit "The define declare and
common message modified".
(Change-Id: I0d995ee5d197e071a138ba82ba68a4ee54383a55)
Issue: FP3-A11#230
Change-Id: If9a0803a21e5ec7af40d6e23d7f47b2546120234
diff --git a/drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_dt_util.c b/drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_dt_util.c
index a33436e..26dc662 100644
--- a/drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_dt_util.c
+++ b/drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_dt_util.c
@@ -26,6 +26,13 @@
#undef CDBG
#define CDBG(fmt, args...) pr_debug(fmt, ##args)
+/* enable multi-camera on/off code */
+#define MULTI_CAMERA_POWER_ON
+
+#if defined (MULTI_CAMERA_POWER_ON)
+int iovdd_count = 0;
+#endif
+
int msm_camera_fill_vreg_params(struct camera_vreg_t *cam_vreg,
int num_vreg, struct msm_sensor_power_setting *power_setting,
uint16_t power_setting_size)
@@ -1512,10 +1519,26 @@
CDBG("%s:%d gpio set val %d\n", __func__, __LINE__,
ctrl->gpio_conf->gpio_num_info->gpio_num
[power_setting->seq_val]);
+ #if defined (MULTI_CAMERA_POWER_ON)
+ if (power_setting->seq_val == SENSOR_GPIO_VIO) {
+ CDBG("[%s][Arima] 1.Set common gpio. Loop %d\n", __func__, iovdd_count);
+ if (iovdd_count == 0) {
+ gpio_set_value_cansleep(
+ ctrl->gpio_conf->gpio_num_info->gpio_num[power_setting->seq_val],
+ (int) power_setting->config_val );
+ }
+ iovdd_count++;
+ } else {
+ gpio_set_value_cansleep(
+ ctrl->gpio_conf->gpio_num_info->gpio_num[power_setting->seq_val],
+ (int) power_setting->config_val);
+ }
+ #else
gpio_set_value_cansleep(
ctrl->gpio_conf->gpio_num_info->gpio_num
[power_setting->seq_val],
(int) power_setting->config_val);
+ #endif /* (MULTI_CAMERA_POWER_ON) */
break;
case SENSOR_VREG:
if (power_setting->seq_val == INVALID_VREG)
@@ -1588,9 +1611,25 @@
if (!ctrl->gpio_conf->gpio_num_info->valid
[power_setting->seq_val])
continue;
+ #if defined (MULTI_CAMERA_POWER_ON)
+ if (power_setting->seq_val == SENSOR_GPIO_VIO) {
+ iovdd_count --;
+ if (iovdd_count == 0) {
+ gpio_set_value_cansleep(
+ ctrl->gpio_conf->gpio_num_info->gpio_num[power_setting->seq_val],
+ GPIOF_OUT_INIT_LOW );
+ }
+ CDBG("[%s][Arima] 2.Set common gpio. Loop %d\n", __func__, iovdd_count);
+ } else {
+ gpio_set_value_cansleep(
+ ctrl->gpio_conf->gpio_num_info->gpio_num
+ [power_setting->seq_val], GPIOF_OUT_INIT_LOW);
+ }
+ #else
gpio_set_value_cansleep(
ctrl->gpio_conf->gpio_num_info->gpio_num
[power_setting->seq_val], GPIOF_OUT_INIT_LOW);
+ #endif /* (MULTI_CAMERA_POWER_ON) */
break;
case SENSOR_VREG:
if (power_setting->seq_val < ctrl->num_vreg)
@@ -1715,10 +1754,26 @@
if (!ctrl->gpio_conf->gpio_num_info->valid
[pd->seq_val])
continue;
+ #if defined (MULTI_CAMERA_POWER_ON)
+ if (pd->seq_val == SENSOR_GPIO_VIO) {
+ iovdd_count --;
+ if (iovdd_count == 0) {
+ gpio_set_value_cansleep(
+ ctrl->gpio_conf->gpio_num_info->gpio_num[pd->seq_val],
+ (int) pd->config_val );
+ }
+ CDBG("[%s][Arima] 3.Set common gpio. Loop %d\n", __func__, iovdd_count);
+ } else {
+ gpio_set_value_cansleep(
+ ctrl->gpio_conf->gpio_num_info->gpio_num[pd->seq_val],
+ (int) pd->config_val );
+ }
+ #else
gpio_set_value_cansleep(
ctrl->gpio_conf->gpio_num_info->gpio_num
[pd->seq_val],
(int) pd->config_val);
+ #endif /* (MULTI_CAMERA_POWER_ON) */
break;
case SENSOR_VREG:
if (pd->seq_val == INVALID_VREG)