Loading drivers/media/platform/msm/camera_v2/sensor/flash/msm_flash.c +38 −7 Original line number Diff line number Diff line Loading @@ -155,6 +155,22 @@ static int32_t msm_flash_i2c_write_table( &flash_ctrl->flash_i2c_client, &conf_array); } #ifdef CONFIG_COMPAT static void msm_flash_copy_power_settings_compat( struct msm_sensor_power_setting *ps, struct msm_sensor_power_setting32 *ps32, uint32_t size) { uint16_t i = 0; for (i = 0; i < size; i++) { ps[i].config_val = ps32[i].config_val; ps[i].delay = ps32[i].delay; ps[i].seq_type = ps32[i].seq_type; ps[i].seq_val = ps32[i].seq_val; } } #endif static int32_t msm_flash_i2c_init( struct msm_flash_ctrl_t *flash_ctrl, struct msm_flash_cfg_data_t *flash_data) Loading @@ -163,6 +179,7 @@ static int32_t msm_flash_i2c_init( struct msm_flash_init_info_t *flash_init_info = flash_data->cfg.flash_init_info; struct msm_camera_i2c_reg_setting_array *settings = NULL; struct msm_camera_cci_client *cci_client = NULL; #ifdef CONFIG_COMPAT struct msm_sensor_power_setting_array32 *power_setting_array32 = NULL; #endif Loading Loading @@ -199,13 +216,18 @@ static int32_t msm_flash_i2c_init( compat_ptr(power_setting_array32->power_down_setting); flash_ctrl->power_setting_array.power_setting = compat_ptr(power_setting_array32->power_setting); memcpy(&flash_ctrl->power_setting_array.power_down_setting_a, &power_setting_array32->power_down_setting_a, sizeof(power_setting_array32->power_down_setting_a)); memcpy(&flash_ctrl->power_setting_array.power_setting_a, &power_setting_array32->power_setting_a, sizeof(power_setting_array32->power_setting_a)); } /* Copy the settings from compat struct to regular struct */ msm_flash_copy_power_settings_compat( flash_ctrl->power_setting_array.power_setting_a, power_setting_array32->power_setting_a, flash_ctrl->power_setting_array.size); msm_flash_copy_power_settings_compat( flash_ctrl->power_setting_array.power_down_setting_a, power_setting_array32->power_down_setting_a, flash_ctrl->power_setting_array.size_down); } else #endif if (copy_from_user(&flash_ctrl->power_setting_array, (void *)flash_init_info->power_setting_array, Loading @@ -214,6 +236,13 @@ static int32_t msm_flash_i2c_init( return -EFAULT; } if (flash_ctrl->flash_device_type == MSM_CAMERA_PLATFORM_DEVICE) { cci_client = flash_ctrl->flash_i2c_client.cci_client; cci_client->sid = flash_init_info->slave_addr >> 1; cci_client->retries = 3; cci_client->id_map = 0; } flash_ctrl->power_info.power_setting = flash_ctrl->power_setting_array.power_setting_a; flash_ctrl->power_info.power_down_setting = Loading Loading @@ -934,6 +963,8 @@ static long msm_flash_subdev_do_ioctl( } flash_init_info.flash_driver_type = flash_init_info32.flash_driver_type; flash_init_info.slave_addr = flash_init_info32.slave_addr; flash_init_info.settings = compat_ptr(flash_init_info32.settings); flash_init_info.power_setting_array = Loading include/media/msm_cam_sensor.h +2 −0 Original line number Diff line number Diff line Loading @@ -569,6 +569,7 @@ struct msm_camera_led_cfg_t { struct msm_flash_init_info_t { enum msm_flash_driver_type flash_driver_type; uint32_t slave_addr; struct msm_sensor_power_setting_array *power_setting_array; struct msm_camera_i2c_reg_setting_array *settings; }; Loading Loading @@ -740,6 +741,7 @@ struct msm_ois_cfg_data32 { struct msm_flash_init_info_t32 { enum msm_flash_driver_type flash_driver_type; uint32_t slave_addr; compat_uptr_t power_setting_array; compat_uptr_t settings; }; Loading Loading
drivers/media/platform/msm/camera_v2/sensor/flash/msm_flash.c +38 −7 Original line number Diff line number Diff line Loading @@ -155,6 +155,22 @@ static int32_t msm_flash_i2c_write_table( &flash_ctrl->flash_i2c_client, &conf_array); } #ifdef CONFIG_COMPAT static void msm_flash_copy_power_settings_compat( struct msm_sensor_power_setting *ps, struct msm_sensor_power_setting32 *ps32, uint32_t size) { uint16_t i = 0; for (i = 0; i < size; i++) { ps[i].config_val = ps32[i].config_val; ps[i].delay = ps32[i].delay; ps[i].seq_type = ps32[i].seq_type; ps[i].seq_val = ps32[i].seq_val; } } #endif static int32_t msm_flash_i2c_init( struct msm_flash_ctrl_t *flash_ctrl, struct msm_flash_cfg_data_t *flash_data) Loading @@ -163,6 +179,7 @@ static int32_t msm_flash_i2c_init( struct msm_flash_init_info_t *flash_init_info = flash_data->cfg.flash_init_info; struct msm_camera_i2c_reg_setting_array *settings = NULL; struct msm_camera_cci_client *cci_client = NULL; #ifdef CONFIG_COMPAT struct msm_sensor_power_setting_array32 *power_setting_array32 = NULL; #endif Loading Loading @@ -199,13 +216,18 @@ static int32_t msm_flash_i2c_init( compat_ptr(power_setting_array32->power_down_setting); flash_ctrl->power_setting_array.power_setting = compat_ptr(power_setting_array32->power_setting); memcpy(&flash_ctrl->power_setting_array.power_down_setting_a, &power_setting_array32->power_down_setting_a, sizeof(power_setting_array32->power_down_setting_a)); memcpy(&flash_ctrl->power_setting_array.power_setting_a, &power_setting_array32->power_setting_a, sizeof(power_setting_array32->power_setting_a)); } /* Copy the settings from compat struct to regular struct */ msm_flash_copy_power_settings_compat( flash_ctrl->power_setting_array.power_setting_a, power_setting_array32->power_setting_a, flash_ctrl->power_setting_array.size); msm_flash_copy_power_settings_compat( flash_ctrl->power_setting_array.power_down_setting_a, power_setting_array32->power_down_setting_a, flash_ctrl->power_setting_array.size_down); } else #endif if (copy_from_user(&flash_ctrl->power_setting_array, (void *)flash_init_info->power_setting_array, Loading @@ -214,6 +236,13 @@ static int32_t msm_flash_i2c_init( return -EFAULT; } if (flash_ctrl->flash_device_type == MSM_CAMERA_PLATFORM_DEVICE) { cci_client = flash_ctrl->flash_i2c_client.cci_client; cci_client->sid = flash_init_info->slave_addr >> 1; cci_client->retries = 3; cci_client->id_map = 0; } flash_ctrl->power_info.power_setting = flash_ctrl->power_setting_array.power_setting_a; flash_ctrl->power_info.power_down_setting = Loading Loading @@ -934,6 +963,8 @@ static long msm_flash_subdev_do_ioctl( } flash_init_info.flash_driver_type = flash_init_info32.flash_driver_type; flash_init_info.slave_addr = flash_init_info32.slave_addr; flash_init_info.settings = compat_ptr(flash_init_info32.settings); flash_init_info.power_setting_array = Loading
include/media/msm_cam_sensor.h +2 −0 Original line number Diff line number Diff line Loading @@ -569,6 +569,7 @@ struct msm_camera_led_cfg_t { struct msm_flash_init_info_t { enum msm_flash_driver_type flash_driver_type; uint32_t slave_addr; struct msm_sensor_power_setting_array *power_setting_array; struct msm_camera_i2c_reg_setting_array *settings; }; Loading Loading @@ -740,6 +741,7 @@ struct msm_ois_cfg_data32 { struct msm_flash_init_info_t32 { enum msm_flash_driver_type flash_driver_type; uint32_t slave_addr; compat_uptr_t power_setting_array; compat_uptr_t settings; }; Loading