msm: camera: Enable camera sub devices

- Enabled driver to support flash eeprom actuator.
 - Added necessary changes to request irq and free irq.
 - Added necessary to fix the compilation for flash driver.

Change-Id: I0b97e234d9fc1809d745713724816bc55816cdc2
Signed-off-by: Gurram Pravalika <gpravali@codeaurora.org>
This commit is contained in:
Gurram Pravalika
2020-07-24 17:13:58 +05:30
committed by Gerrit - the friendly Code Review server
parent 5edc4e08f3
commit a89210c1a4
4 changed files with 36 additions and 35 deletions

View File

@@ -732,8 +732,9 @@ int msm_camera_register_irq(struct platform_device *pdev,
return -EINVAL;
}
rc = devm_request_irq(&pdev->dev, irq->start, handler,
rc = request_threaded_irq(irq->start, handler, NULL,
irqflags, irq_name, dev_id);
if (rc < 0) {
pr_err("irq request fail\n");
rc = -EINVAL;
@@ -797,6 +798,7 @@ int msm_camera_unregister_irq(struct platform_device *pdev,
}
CDBG("Un Registering irq for [resource - %pK]\n", irq);
free_irq(irq->start, dev_id);
return 0;
}

View File

@@ -5,7 +5,6 @@ ccflags-y += -Idrivers/media/platform/msm/camera_v2/msm_vb2
ccflags-y += -Idrivers/media/platform/msm/camera_v2/camera
ccflags-y += -Idrivers/media/platform/msm/camera_v2/sensor/io
ccflags-y += -Idrivers/media/platform/msm/camera_v2/sensor/cci
#obj-$(CONFIG_MSMB_CAMERA) += cci/ io/ csiphy/ csid/ actuator/ eeprom/ ois/ flash/ ir_led/ ir_cut/
obj-$(CONFIG_MSMB_CAMERA) += cci/ io/ csiphy/ csid/
#bj-$(CONFIG_MSMB_CAMERA) += laser_led/
obj-$(CONFIG_MSMB_CAMERA) += cci/ io/ csiphy/ csid/ actuator/ eeprom/ ois/ flash/ ir_led/ ir_cut/
obj-$(CONFIG_MSMB_CAMERA) += laser_led/
obj-$(CONFIG_MSM_CAMERA_SENSOR) += msm_sensor_init.o msm_sensor_driver.o msm_sensor.o

View File

@@ -328,7 +328,7 @@ static int32_t msm_flash_i2c_init(
flash_init_info->settings, sizeof(
struct msm_camera_i2c_reg_setting_array));
if (IS_ERR(settings)) {
ret = PTR_ERR(settings);
return PTR_ERR(settings);
rc = msm_flash_i2c_write_table(flash_ctrl, settings);
kfree(settings);
@@ -337,12 +337,12 @@ static int32_t msm_flash_i2c_init(
__func__, __LINE__, rc);
}
}
}
return 0;
msm_flash_i2c_init_fail:
return rc;
}
static int32_t msm_flash_gpio_init(
struct msm_flash_ctrl_t *flash_ctrl,
struct msm_flash_cfg_data_t *flash_data)
@@ -426,8 +426,8 @@ static int32_t msm_flash_i2c_write_setting_array(
settings = memdup_user((void __user *)
flash_data->cfg.settings, sizeof(
struct msm_camera_i2c_reg_setting_array));
if (IS_ERR(settings)) {
ret = PTR_ERR(settings);
if (IS_ERR(settings))
return PTR_ERR(settings);
rc = msm_flash_i2c_write_table(flash_ctrl, settings);
kfree(settings);

View File

@@ -875,19 +875,19 @@ static long msm_ois_subdev_do_ioctl(
case CFG_OIS_CONTROL:
ois_data.cfg.set_info.ois_params.setting_size =
u32->cfg.set_info.ois_params.setting_size;
ois_data.cfg.set_info.ois_params.i2c_addr =
u32->cfg.set_info.ois_params.i2c_addr;
ois_data.cfg.set_info.ois_params.i2c_freq_mode =
ois_data.cfg.set_info.ois_params.i2c_addr =
u32->cfg.set_info.ois_params.i2c_addr;
ois_data.cfg.set_info.ois_params.i2c_freq_mode =
u32->cfg.set_info.ois_params.i2c_freq_mode;
ois_data.cfg.set_info.ois_params.i2c_addr_type =
ois_data.cfg.set_info.ois_params.i2c_addr_type =
u32->cfg.set_info.ois_params.i2c_addr_type;
ois_data.cfg.set_info.ois_params.i2c_data_type =
ois_data.cfg.set_info.ois_params.i2c_data_type =
u32->cfg.set_info.ois_params.i2c_data_type;
ois_data.cfg.set_info.ois_params.settings =
compat_ptr(u32->cfg.set_info.ois_params
.settings);
parg = &ois_data;
break;
ois_data.cfg.set_info.ois_params.settings =
compat_ptr(u32->cfg.set_info.ois_params
.settings);
parg = &ois_data;
break;
case CFG_OIS_I2C_WRITE_SEQ_TABLE:
if (copy_from_user(&settings32,
(void __user *)compat_ptr(u32->cfg.settings),
@@ -903,25 +903,25 @@ static long msm_ois_subdev_do_ioctl(
settings.reg_setting = memdup_user((void __user *)
compat_ptr(settings32.reg_setting),
sizeof(struct msm_camera_i2c_seq_reg_array));
if (IS_ERR(settings.reg_setting)) {
return PTR_ERR(settings.reg_setting);
ois_data.cfg.settings = &settings;
parg = &ois_data;
break;
default:
parg = &ois_data;
break;
}
break;
case VIDIOC_MSM_OIS_CFG:
pr_err("%s: invalid cmd 0x%x received\n", __func__,
cmd);
return -EINVAL;
if (IS_ERR(settings.reg_setting))
return PTR_ERR(settings.reg_setting);
ois_data.cfg.settings = &settings;
parg = &ois_data;
break;
default:
parg = &ois_data;
break;
}
rc = msm_ois_subdev_ioctl(sd, cmd, parg);
return rc;
break;
case VIDIOC_MSM_OIS_CFG:
pr_err("%s: invalid cmd 0x%x received\n", __func__,
cmd);
return -EINVAL;
}
rc = msm_ois_subdev_ioctl(sd, cmd, parg);
return rc;
}
static long msm_ois_subdev_fops_ioctl(struct file *file, unsigned int cmd,
unsigned long arg)