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)