Merge "msm: camera: Add support for multiple flash nodes"

This commit is contained in:
Linux Build Service Account 2016-08-01 21:56:43 -07:00 committed by Gerrit - the friendly Code Review server
commit aa738fdd92
2 changed files with 51 additions and 8 deletions

View file

@ -283,6 +283,49 @@ static int32_t msm_sensor_fill_actuator_subdevid_by_name(
return rc;
}
static int32_t msm_sensor_fill_flash_subdevid_by_name(
struct msm_sensor_ctrl_t *s_ctrl)
{
int32_t rc = 0;
struct device_node *src_node = NULL;
uint32_t val = 0, flash_name_len;
int32_t *flash_subdev_id;
struct msm_sensor_info_t *sensor_info;
struct device_node *of_node = s_ctrl->of_node;
if (!of_node || !s_ctrl->sensordata->flash_name)
return -EINVAL;
sensor_info = s_ctrl->sensordata->sensor_info;
flash_subdev_id = &sensor_info->subdev_id[SUB_MODULE_LED_FLASH];
*flash_subdev_id = -1;
flash_name_len = strlen(s_ctrl->sensordata->flash_name);
if (flash_name_len >= MAX_SENSOR_NAME)
return -EINVAL;
if (flash_name_len == 0)
return 0;
src_node = of_parse_phandle(of_node, "qcom,led-flash-src", 0);
if (!src_node) {
CDBG("%s:%d src_node NULL\n", __func__, __LINE__);
} else {
rc = of_property_read_u32(src_node, "cell-index", &val);
CDBG("%s qcom,flash cell index %d, rc %d\n", __func__,
val, rc);
if (rc < 0) {
pr_err("%s failed %d\n", __func__, __LINE__);
return -EINVAL;
}
*flash_subdev_id = val;
of_node_put(src_node);
src_node = NULL;
}
return rc;
}
static int32_t msm_sensor_fill_ois_subdevid_by_name(
struct msm_sensor_ctrl_t *s_ctrl)
{
@ -872,6 +915,7 @@ CSID_TG:
s_ctrl->sensordata->eeprom_name = slave_info->eeprom_name;
s_ctrl->sensordata->actuator_name = slave_info->actuator_name;
s_ctrl->sensordata->ois_name = slave_info->ois_name;
s_ctrl->sensordata->flash_name = slave_info->flash_name;
/*
* Update eeporm subdevice Id by input eeprom name
*/
@ -895,6 +939,12 @@ CSID_TG:
goto free_camera_info;
}
rc = msm_sensor_fill_flash_subdevid_by_name(s_ctrl);
if (rc < 0) {
pr_err("%s failed %d\n", __func__, __LINE__);
goto free_camera_info;
}
/* Power up and probe sensor */
rc = s_ctrl->func_tbl->sensor_power_up(s_ctrl);
if (rc < 0) {
@ -910,14 +960,6 @@ CSID_TG:
*/
s_ctrl->is_probe_succeed = 1;
/*
* Update the subdevice id of flash-src based on availability in kernel.
*/
if (strlen(slave_info->flash_name) == 0) {
s_ctrl->sensordata->sensor_info->
subdev_id[SUB_MODULE_LED_FLASH] = -1;
}
/*
* Create /dev/videoX node, comment for now until dummy /dev/videoX
* node is created and used by HAL

View file

@ -147,6 +147,7 @@ struct msm_camera_sensor_board_info {
const char *eeprom_name;
const char *actuator_name;
const char *ois_name;
const char *flash_name;
struct msm_camera_slave_info *slave_info;
struct msm_camera_csi_lane_params *csi_lane_params;
struct msm_camera_sensor_strobe_flash_data *strobe_flash_data;