Merge "msm: camera: sensor: Add support fo multiple regulator sources" into camera-kernel.lnx.4.0

This commit is contained in:
Camera Software Integration
2020-01-13 20:37:42 -08:00
committed by Gerrit - the friendly Code Review server
4 changed files with 49 additions and 4 deletions

View File

@@ -40,7 +40,6 @@
#define MAX_DATA_RATES 3
#define MAX_DATA_RATE_REGS 30
#define MAX_REGULATOR 5
#define CAMX_CSIPHY_DEV_NAME "cam-csiphy-driver"
#define CSIPHY_POWER_UP 0

View File

@@ -16,8 +16,7 @@
#include <media/cam_sensor.h>
#include <media/cam_req_mgr.h>
#define MAX_REGULATOR 5
#define MAX_POWER_CONFIG 12
#define MAX_POWER_CONFIG 12
#define MAX_PER_FRAME_ARRAY 32
#define BATCH_SIZE_MAX 16
@@ -142,6 +141,7 @@ enum msm_camera_power_seq_type {
SENSOR_STANDBY,
SENSOR_CUSTOM_GPIO1,
SENSOR_CUSTOM_GPIO2,
SENSOR_VANA1,
SENSOR_SEQ_TYPE_MAX,
};

View File

@@ -980,6 +980,29 @@ int32_t msm_camera_fill_vreg_params(
power_setting[i].seq_val = INVALID_VREG;
break;
case SENSOR_VANA1:
for (j = 0; j < num_vreg; j++) {
if (!strcmp(soc_info->rgltr_name[j],
"cam_vana1")) {
CAM_DBG(CAM_SENSOR,
"i: %d j: %d cam_vana1", i, j);
power_setting[i].seq_val = j;
if (VALIDATE_VOLTAGE(
soc_info->rgltr_min_volt[j],
soc_info->rgltr_max_volt[j],
power_setting[i].config_val)) {
soc_info->rgltr_min_volt[j] =
soc_info->rgltr_max_volt[j] =
power_setting[i].config_val;
}
break;
}
}
if (j == num_vreg)
power_setting[i].seq_val = INVALID_VREG;
break;
case SENSOR_VAF:
for (j = 0; j < num_vreg; j++) {
@@ -1406,6 +1429,8 @@ int cam_get_dt_power_setting_data(struct device_node *of_node,
ps[i].seq_type = SENSOR_VIO;
} else if (!strcmp(seq_name, "cam_vana")) {
ps[i].seq_type = SENSOR_VANA;
} else if (!strcmp(seq_name, "cam_vana1")) {
ps[i].seq_type = SENSOR_VANA1;
} else if (!strcmp(seq_name, "cam_clk")) {
ps[i].seq_type = SENSOR_MCLK;
} else {
@@ -1533,6 +1558,24 @@ int cam_sensor_util_init_gpio_pin_tbl(
gpio_num_info->gpio_num[SENSOR_VANA]);
}
rc = of_property_read_u32(of_node, "gpio-vana1", &val);
if (rc != -EINVAL) {
if (rc < 0) {
CAM_ERR(CAM_SENSOR, "read gpio-vana1 failed rc %d", rc);
goto free_gpio_info;
} else if (val >= gpio_array_size) {
CAM_ERR(CAM_SENSOR, "gpio-vana1 invalid %d", val);
rc = -EINVAL;
goto free_gpio_info;
}
gpio_num_info->gpio_num[SENSOR_VANA1] =
gconf->cam_gpio_common_tbl[val].gpio;
gpio_num_info->valid[SENSOR_VANA1] = 1;
CAM_DBG(CAM_SENSOR, "gpio-vana1 %d",
gpio_num_info->gpio_num[SENSOR_VANA1]);
}
rc = of_property_read_u32(of_node, "gpio-vio", &val);
if (rc != -EINVAL) {
if (rc < 0) {
@@ -1977,6 +2020,7 @@ int cam_sensor_core_power_up(struct cam_sensor_power_ctrl_t *ctrl,
}
break;
case SENSOR_VANA:
case SENSOR_VANA1:
case SENSOR_VDIG:
case SENSOR_VIO:
case SENSOR_VAF:
@@ -2093,6 +2137,7 @@ power_up_failed:
[power_setting->seq_type], GPIOF_OUT_INIT_LOW);
break;
case SENSOR_VANA:
case SENSOR_VANA1:
case SENSOR_VDIG:
case SENSOR_VIO:
case SENSOR_VAF:
@@ -2261,6 +2306,7 @@ int cam_sensor_util_power_down(struct cam_sensor_power_ctrl_t *ctrl,
break;
case SENSOR_VANA:
case SENSOR_VANA1:
case SENSOR_VDIG:
case SENSOR_VIO:
case SENSOR_VAF: