Loading drivers/video/msm/mdss/mdss_mdp_pp.c +7 −11 Original line number Diff line number Diff line Loading @@ -3522,12 +3522,13 @@ static int pp_hist_collect(struct mdp_histogram_data *hist, return -EPERM; mutex_lock(&hist_info->hist_mutex); spin_lock_irqsave(&hist_info->hist_lock, flag); if ((hist_info->col_en == 0) || (hist_info->col_state == HIST_UNKNOWN)) { ret = -EINVAL; spin_unlock_irqrestore(&hist_info->hist_lock, flag); goto hist_collect_exit; } spin_lock_irqsave(&hist_info->hist_lock, flag); /* wait for hist done if cache has no data */ if (hist_info->col_state != HIST_READY) { spin_unlock_irqrestore(&hist_info->hist_lock, flag); Loading @@ -3543,9 +3544,9 @@ static int pp_hist_collect(struct mdp_histogram_data *hist, &(hist_info->comp), timeout); mutex_lock(&hist_info->hist_mutex); spin_lock_irqsave(&hist_info->hist_lock, flag); if (wait_ret == 0) { ret = -ETIMEDOUT; spin_lock_irqsave(&hist_info->hist_lock, flag); pr_debug("bin collection timedout, state %d", hist_info->col_state); /* Loading @@ -3560,26 +3561,22 @@ static int pp_hist_collect(struct mdp_histogram_data *hist, */ hist_info->hist_cnt_time++; hist_info->col_state = HIST_READY; spin_unlock_irqrestore(&hist_info->hist_lock, flag); } else if (wait_ret < 0) { ret = -EINTR; pr_debug("%s: bin collection interrupted", __func__); spin_unlock_irqrestore(&hist_info->hist_lock, flag); goto hist_collect_exit; } if (hist_info->col_state != HIST_READY) { ret = -ENODATA; spin_lock_irqsave(&hist_info->hist_lock, flag); hist_info->col_state = HIST_READY; spin_unlock_irqrestore(&hist_info->hist_lock, flag); pr_debug("%s: state is not ready: %d", __func__, hist_info->col_state); } } else { spin_unlock_irqrestore(&hist_info->hist_lock, flag); } spin_lock_irqsave(&hist_info->hist_lock, flag); if (hist_info->col_state == HIST_READY) { hist_info->col_state = HIST_IDLE; spin_unlock_irqrestore(&hist_info->hist_lock, flag); v_base = ctl_base + 0x1C; mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_ON, false); Loading @@ -3588,12 +3585,11 @@ static int pp_hist_collect(struct mdp_histogram_data *hist, if (is_hist_v2) writel_relaxed(0, ctl_base); mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_OFF, false); spin_lock_irqsave(&hist_info->hist_lock, flag); if (expect_sum && sum != expect_sum) ret = -ENODATA; hist_info->col_state = HIST_IDLE; } } else { spin_unlock_irqrestore(&hist_info->hist_lock, flag); } hist_collect_exit: mutex_unlock(&hist_info->hist_mutex); return ret; Loading Loading
drivers/video/msm/mdss/mdss_mdp_pp.c +7 −11 Original line number Diff line number Diff line Loading @@ -3522,12 +3522,13 @@ static int pp_hist_collect(struct mdp_histogram_data *hist, return -EPERM; mutex_lock(&hist_info->hist_mutex); spin_lock_irqsave(&hist_info->hist_lock, flag); if ((hist_info->col_en == 0) || (hist_info->col_state == HIST_UNKNOWN)) { ret = -EINVAL; spin_unlock_irqrestore(&hist_info->hist_lock, flag); goto hist_collect_exit; } spin_lock_irqsave(&hist_info->hist_lock, flag); /* wait for hist done if cache has no data */ if (hist_info->col_state != HIST_READY) { spin_unlock_irqrestore(&hist_info->hist_lock, flag); Loading @@ -3543,9 +3544,9 @@ static int pp_hist_collect(struct mdp_histogram_data *hist, &(hist_info->comp), timeout); mutex_lock(&hist_info->hist_mutex); spin_lock_irqsave(&hist_info->hist_lock, flag); if (wait_ret == 0) { ret = -ETIMEDOUT; spin_lock_irqsave(&hist_info->hist_lock, flag); pr_debug("bin collection timedout, state %d", hist_info->col_state); /* Loading @@ -3560,26 +3561,22 @@ static int pp_hist_collect(struct mdp_histogram_data *hist, */ hist_info->hist_cnt_time++; hist_info->col_state = HIST_READY; spin_unlock_irqrestore(&hist_info->hist_lock, flag); } else if (wait_ret < 0) { ret = -EINTR; pr_debug("%s: bin collection interrupted", __func__); spin_unlock_irqrestore(&hist_info->hist_lock, flag); goto hist_collect_exit; } if (hist_info->col_state != HIST_READY) { ret = -ENODATA; spin_lock_irqsave(&hist_info->hist_lock, flag); hist_info->col_state = HIST_READY; spin_unlock_irqrestore(&hist_info->hist_lock, flag); pr_debug("%s: state is not ready: %d", __func__, hist_info->col_state); } } else { spin_unlock_irqrestore(&hist_info->hist_lock, flag); } spin_lock_irqsave(&hist_info->hist_lock, flag); if (hist_info->col_state == HIST_READY) { hist_info->col_state = HIST_IDLE; spin_unlock_irqrestore(&hist_info->hist_lock, flag); v_base = ctl_base + 0x1C; mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_ON, false); Loading @@ -3588,12 +3585,11 @@ static int pp_hist_collect(struct mdp_histogram_data *hist, if (is_hist_v2) writel_relaxed(0, ctl_base); mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_OFF, false); spin_lock_irqsave(&hist_info->hist_lock, flag); if (expect_sum && sum != expect_sum) ret = -ENODATA; hist_info->col_state = HIST_IDLE; } } else { spin_unlock_irqrestore(&hist_info->hist_lock, flag); } hist_collect_exit: mutex_unlock(&hist_info->hist_mutex); return ret; Loading