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;
|
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(
|
static int32_t msm_sensor_fill_ois_subdevid_by_name(
|
||||||
struct msm_sensor_ctrl_t *s_ctrl)
|
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->eeprom_name = slave_info->eeprom_name;
|
||||||
s_ctrl->sensordata->actuator_name = slave_info->actuator_name;
|
s_ctrl->sensordata->actuator_name = slave_info->actuator_name;
|
||||||
s_ctrl->sensordata->ois_name = slave_info->ois_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
|
* Update eeporm subdevice Id by input eeprom name
|
||||||
*/
|
*/
|
||||||
|
@ -895,6 +939,12 @@ CSID_TG:
|
||||||
goto free_camera_info;
|
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 */
|
/* Power up and probe sensor */
|
||||||
rc = s_ctrl->func_tbl->sensor_power_up(s_ctrl);
|
rc = s_ctrl->func_tbl->sensor_power_up(s_ctrl);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
|
@ -910,14 +960,6 @@ CSID_TG:
|
||||||
*/
|
*/
|
||||||
s_ctrl->is_probe_succeed = 1;
|
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
|
* Create /dev/videoX node, comment for now until dummy /dev/videoX
|
||||||
* node is created and used by HAL
|
* node is created and used by HAL
|
||||||
|
|
|
@ -147,6 +147,7 @@ struct msm_camera_sensor_board_info {
|
||||||
const char *eeprom_name;
|
const char *eeprom_name;
|
||||||
const char *actuator_name;
|
const char *actuator_name;
|
||||||
const char *ois_name;
|
const char *ois_name;
|
||||||
|
const char *flash_name;
|
||||||
struct msm_camera_slave_info *slave_info;
|
struct msm_camera_slave_info *slave_info;
|
||||||
struct msm_camera_csi_lane_params *csi_lane_params;
|
struct msm_camera_csi_lane_params *csi_lane_params;
|
||||||
struct msm_camera_sensor_strobe_flash_data *strobe_flash_data;
|
struct msm_camera_sensor_strobe_flash_data *strobe_flash_data;
|
||||||
|
|
Loading…
Add table
Reference in a new issue