Merge "msm: camera: Add support for multiple flash nodes"
This commit is contained in:
commit
aa738fdd92
2 changed files with 51 additions and 8 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue