diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2018-07-24 20:55:33 -0700 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2018-07-24 20:55:33 -0700 |
commit | 13662fdfed94bfbc0102453cf7483b33ca2c2f53 (patch) | |
tree | afe1162a5ce0267a1e386f6b43e446bad7b28ed2 | |
parent | f1ca150d87f097da08b1d7cb64ef1796ee8e1512 (diff) | |
parent | df099d4b9b99d5af9038c6b06047fc310905bc27 (diff) |
Merge df099d4b9b99d5af9038c6b06047fc310905bc27 on remote branchLA.UM.6.3.r6-02300-sdm845.0
Change-Id: If6b307ce1edc5e70f7da82edaef25dbaf0012342
4 files changed, 26 insertions, 27 deletions
diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c index 233529c5e09f..9e466310f7b4 100644 --- a/drivers/irqchip/irq-gic-v3.c +++ b/drivers/irqchip/irq-gic-v3.c @@ -340,7 +340,7 @@ static void _gic_v3_dist_restore_set_reg(u32 offset) } #define _gic_v3_dist_restore_isenabler() \ - _gic_v3_dist_restore_set_reg(GICD_ISENABLER) + _gic_v3_dist_restore_reg(SAVED_IS_ENABLER) #define _gic_v3_dist_restore_ispending() \ _gic_v3_dist_restore_set_reg(GICD_ISPENDR) @@ -418,7 +418,7 @@ static void _gic_v3_dist_clear_reg(u32 offset) * * 5. Set pending for the interrupt. * - * 6. Enable interrupt and wait for its completion. + * 6. Restore Enable bit of interrupt and wait for its completion. * */ void gic_v3_dist_restore(void) diff --git a/drivers/media/platform/msm/camera/cam_sensor_module/cam_sensor/cam_sensor_core.c b/drivers/media/platform/msm/camera/cam_sensor_module/cam_sensor/cam_sensor_core.c index d5bee96bfb63..6f06c912574f 100644 --- a/drivers/media/platform/msm/camera/cam_sensor_module/cam_sensor/cam_sensor_core.c +++ b/drivers/media/platform/msm/camera/cam_sensor_module/cam_sensor/cam_sensor_core.c @@ -518,6 +518,8 @@ void cam_sensor_shutdown(struct cam_sensor_ctrl_t *s_ctrl) kfree(power_info->power_setting); kfree(power_info->power_down_setting); + power_info->power_setting = NULL; + power_info->power_down_setting = NULL; s_ctrl->streamon_count = 0; s_ctrl->streamoff_count = 0; @@ -584,24 +586,6 @@ int32_t cam_sensor_driver_cmd(struct cam_sensor_ctrl_t *s_ctrl, "Already Sensor Probed in the slot"); break; } - /* Allocate memory for power up setting */ - pu = kzalloc(sizeof(struct cam_sensor_power_setting) * - MAX_POWER_CONFIG, GFP_KERNEL); - if (!pu) { - rc = -ENOMEM; - goto release_mutex; - } - - pd = kzalloc(sizeof(struct cam_sensor_power_setting) * - MAX_POWER_CONFIG, GFP_KERNEL); - if (!pd) { - kfree(pu); - rc = -ENOMEM; - goto release_mutex; - } - - power_info->power_setting = pu; - power_info->power_down_setting = pd; if (cmd->handle_type == CAM_HANDLE_MEM_HANDLE) { @@ -618,6 +602,9 @@ int32_t cam_sensor_driver_cmd(struct cam_sensor_ctrl_t *s_ctrl, return -EINVAL; } + pu = power_info->power_setting; + pd = power_info->power_down_setting; + /* Parse and fill vreg params for powerup settings */ rc = msm_camera_fill_vreg_params( &s_ctrl->soc_info, diff --git a/drivers/media/platform/msm/camera/cam_sensor_module/cam_sensor_utils/cam_sensor_util.c b/drivers/media/platform/msm/camera/cam_sensor_module/cam_sensor_utils/cam_sensor_util.c index 10d29c91f03e..c05db9123936 100644 --- a/drivers/media/platform/msm/camera/cam_sensor_module/cam_sensor_utils/cam_sensor_util.c +++ b/drivers/media/platform/msm/camera/cam_sensor_module/cam_sensor_utils/cam_sensor_util.c @@ -860,8 +860,10 @@ int32_t cam_sensor_update_power_settings(void *cmd_buf, return rc; free_power_down_settings: kfree(power_info->power_down_setting); + power_info->power_down_setting = NULL; free_power_settings: kfree(power_info->power_setting); + power_info->power_setting = NULL; return rc; } @@ -1304,7 +1306,9 @@ int cam_sensor_core_power_up(struct cam_sensor_power_ctrl_t *ctrl, CAM_DBG(CAM_SENSOR, "index: %d", index); power_setting = &ctrl->power_setting[index]; if (!power_setting) { - CAM_ERR(CAM_SENSOR, "Invalid power up settings"); + CAM_ERR(CAM_SENSOR, + "Invalid power up settings for index %d", + index); return -EINVAL; } @@ -1594,11 +1598,6 @@ static int cam_config_mclk_reg(struct cam_sensor_power_ctrl_t *ctrl, pd = &ctrl->power_down_setting[index]; - if (!pd) { - CAM_ERR(CAM_SENSOR, "Invalid power down setting"); - return -EINVAL; - } - for (j = 0; j < num_vreg; j++) { if (!strcmp(soc_info->rgltr_name[j], "cam_clk")) { @@ -1641,7 +1640,7 @@ int msm_camera_power_down(struct cam_sensor_power_ctrl_t *ctrl, { int index = 0, ret = 0, num_vreg = 0, i; struct cam_sensor_power_setting *pd = NULL; - struct cam_sensor_power_setting *ps; + struct cam_sensor_power_setting *ps = NULL; struct msm_camera_gpio_num_info *gpio_num_info = NULL; CAM_DBG(CAM_SENSOR, "Enter"); @@ -1661,6 +1660,13 @@ int msm_camera_power_down(struct cam_sensor_power_ctrl_t *ctrl, for (index = 0; index < ctrl->power_down_setting_size; index++) { CAM_DBG(CAM_SENSOR, "index %d", index); pd = &ctrl->power_down_setting[index]; + if (!pd) { + CAM_ERR(CAM_SENSOR, + "Invalid power down settings for index %d", + index); + return -EINVAL; + } + ps = NULL; CAM_DBG(CAM_SENSOR, "type %d", pd->seq_type); switch (pd->seq_type) { diff --git a/kernel/time/timer.c b/kernel/time/timer.c index 4c0b001a689e..4d264677e464 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -1889,6 +1889,12 @@ static void __migrate_timers(unsigned int cpu, bool remove_pinned) spin_lock_irqsave(&new_base->lock, flags); spin_lock_nested(&old_base->lock, SINGLE_DEPTH_NESTING); + /* + * The current CPUs base clock might be stale. Update it + * before moving the timers over. + */ + forward_timer_base(new_base); + if (!cpu_online(cpu)) BUG_ON(old_base->running_timer); |