Loading msm/dsi/dsi_display.c +1 −1 Original line number Diff line number Diff line Loading @@ -1562,7 +1562,7 @@ static ssize_t debugfs_esd_trigger_check(struct file *file, display->trusted_vm_env); if (rc) { DSI_ERR("Failed to trigger ESD attack\n"); goto error; goto unlock; } } Loading msm/dsi/dsi_parser.h +2 −2 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. */ #ifndef _DSI_PARSER_H_ Loading Loading @@ -204,7 +204,7 @@ static inline struct dsi_parser_utils *dsi_parser_get_of_utils(void) .get_child_count = of_get_child_count, .get_available_child_count = of_get_available_child_count, .find_property = of_find_property, .get_next_child = of_get_next_child, .get_next_child = of_get_next_available_child, .count_u32_elems = of_property_count_u32_elems, .get_named_gpio = of_get_named_gpio, }; Loading msm/sde/sde_color_processing.c +5 −1 Original line number Diff line number Diff line Loading @@ -1993,6 +1993,7 @@ static void _sde_clear_ltm_merge_mode(struct sde_crtc *sde_crtc) } sde_crtc->ltm_merge_clear_pending = false; SDE_EVT32(DRMID(&sde_crtc->base), num_mixers, sde_crtc->ltm_merge_clear_pending); spin_unlock_irqrestore(&sde_crtc->ltm_lock, irq_flags); } Loading Loading @@ -2346,6 +2347,7 @@ void sde_cp_crtc_destroy_properties(struct drm_crtc *crtc) sde_crtc->ltm_buffer_cnt = 0; sde_crtc->ltm_hist_en = false; sde_crtc->ltm_merge_clear_pending = false; SDE_EVT32(DRMID(crtc), sde_crtc->ltm_merge_clear_pending); sde_crtc->hist_irq_idx = -1; mutex_destroy(&sde_crtc->crtc_cp_lock); Loading Loading @@ -2391,7 +2393,6 @@ void sde_cp_crtc_suspend(struct drm_crtc *crtc) spin_lock_irqsave(&sde_crtc->ltm_lock, irq_flags); sde_crtc->ltm_hist_en = false; sde_crtc->ltm_merge_clear_pending = false; spin_unlock_irqrestore(&sde_crtc->ltm_lock, irq_flags); if (ad_suspend) Loading Loading @@ -2424,6 +2425,7 @@ void sde_cp_crtc_clear(struct drm_crtc *crtc) list_del_init(&sde_crtc->dirty_list); list_del_init(&sde_crtc->ad_active); list_del_init(&sde_crtc->ad_dirty); sde_crtc->cp_pu_feature_mask = 0; mutex_unlock(&sde_crtc->crtc_cp_lock); spin_lock_irqsave(&sde_crtc->spin_lock, flags); Loading Loading @@ -3833,6 +3835,7 @@ static void _sde_cp_crtc_disable_ltm_hist(struct sde_crtc *sde_crtc, spin_lock_irqsave(&sde_crtc->ltm_lock, irq_flags); sde_crtc->ltm_hist_en = false; sde_crtc->ltm_merge_clear_pending = true; SDE_EVT32(DRMID(&sde_crtc->base), sde_crtc->ltm_merge_clear_pending); INIT_LIST_HEAD(&sde_crtc->ltm_buf_free); INIT_LIST_HEAD(&sde_crtc->ltm_buf_busy); for (i = 0; i < sde_crtc->ltm_buffer_cnt; i++) Loading Loading @@ -3905,6 +3908,7 @@ static void sde_cp_ltm_hist_interrupt_cb(void *arg, int irq_idx) 0); } sde_crtc->ltm_merge_clear_pending = true; SDE_EVT32(DRMID(&sde_crtc->base), sde_crtc->ltm_merge_clear_pending); spin_unlock_irqrestore(&sde_crtc->ltm_lock, irq_flags); DRM_DEBUG_DRIVER("LTM histogram is disabled\n"); return; Loading msm/sde/sde_crtc.c +1 −0 Original line number Diff line number Diff line Loading @@ -3303,6 +3303,7 @@ static void sde_crtc_atomic_begin(struct drm_crtc *crtc, if (encoder->crtc != crtc) continue; sde_encoder_trigger_rsc_state_change(encoder); /* encoder will trigger pending mask now */ sde_encoder_trigger_kickoff_pending(encoder); } Loading msm/sde/sde_encoder.c +40 −0 Original line number Diff line number Diff line Loading @@ -3806,6 +3806,46 @@ bool sde_encoder_check_curr_mode(struct drm_encoder *drm_enc, u32 mode) return (disp_info->curr_panel_mode == mode); } void sde_encoder_trigger_rsc_state_change(struct drm_encoder *drm_enc) { struct sde_encoder_virt *sde_enc = NULL; int ret = 0; sde_enc = to_sde_encoder_virt(drm_enc); if (!sde_enc) return; mutex_lock(&sde_enc->rc_lock); /* * In dual display case when secondary comes out of * idle make sure RSC solver mode is disabled before * setting CTL_PREPARE. */ if (!sde_enc->cur_master || !sde_encoder_check_curr_mode(drm_enc, MSM_DISPLAY_CMD_MODE) || sde_enc->disp_info.display_type == SDE_CONNECTOR_PRIMARY || sde_enc->rc_state != SDE_ENC_RC_STATE_IDLE) goto end; /* enable all the clks and resources */ ret = _sde_encoder_resource_control_helper(drm_enc, true); if (ret) { SDE_ERROR_ENC(sde_enc, "rc in state %d\n", sde_enc->rc_state); SDE_EVT32(DRMID(drm_enc), sde_enc->rc_state, SDE_EVTLOG_ERROR); goto end; } _sde_encoder_update_rsc_client(drm_enc, true); SDE_EVT32(DRMID(drm_enc), sde_enc->rc_state, SDE_ENC_RC_STATE_ON); sde_enc->rc_state = SDE_ENC_RC_STATE_ON; end: mutex_unlock(&sde_enc->rc_lock); } void sde_encoder_trigger_kickoff_pending(struct drm_encoder *drm_enc) { struct sde_encoder_virt *sde_enc; Loading Loading
msm/dsi/dsi_display.c +1 −1 Original line number Diff line number Diff line Loading @@ -1562,7 +1562,7 @@ static ssize_t debugfs_esd_trigger_check(struct file *file, display->trusted_vm_env); if (rc) { DSI_ERR("Failed to trigger ESD attack\n"); goto error; goto unlock; } } Loading
msm/dsi/dsi_parser.h +2 −2 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. */ #ifndef _DSI_PARSER_H_ Loading Loading @@ -204,7 +204,7 @@ static inline struct dsi_parser_utils *dsi_parser_get_of_utils(void) .get_child_count = of_get_child_count, .get_available_child_count = of_get_available_child_count, .find_property = of_find_property, .get_next_child = of_get_next_child, .get_next_child = of_get_next_available_child, .count_u32_elems = of_property_count_u32_elems, .get_named_gpio = of_get_named_gpio, }; Loading
msm/sde/sde_color_processing.c +5 −1 Original line number Diff line number Diff line Loading @@ -1993,6 +1993,7 @@ static void _sde_clear_ltm_merge_mode(struct sde_crtc *sde_crtc) } sde_crtc->ltm_merge_clear_pending = false; SDE_EVT32(DRMID(&sde_crtc->base), num_mixers, sde_crtc->ltm_merge_clear_pending); spin_unlock_irqrestore(&sde_crtc->ltm_lock, irq_flags); } Loading Loading @@ -2346,6 +2347,7 @@ void sde_cp_crtc_destroy_properties(struct drm_crtc *crtc) sde_crtc->ltm_buffer_cnt = 0; sde_crtc->ltm_hist_en = false; sde_crtc->ltm_merge_clear_pending = false; SDE_EVT32(DRMID(crtc), sde_crtc->ltm_merge_clear_pending); sde_crtc->hist_irq_idx = -1; mutex_destroy(&sde_crtc->crtc_cp_lock); Loading Loading @@ -2391,7 +2393,6 @@ void sde_cp_crtc_suspend(struct drm_crtc *crtc) spin_lock_irqsave(&sde_crtc->ltm_lock, irq_flags); sde_crtc->ltm_hist_en = false; sde_crtc->ltm_merge_clear_pending = false; spin_unlock_irqrestore(&sde_crtc->ltm_lock, irq_flags); if (ad_suspend) Loading Loading @@ -2424,6 +2425,7 @@ void sde_cp_crtc_clear(struct drm_crtc *crtc) list_del_init(&sde_crtc->dirty_list); list_del_init(&sde_crtc->ad_active); list_del_init(&sde_crtc->ad_dirty); sde_crtc->cp_pu_feature_mask = 0; mutex_unlock(&sde_crtc->crtc_cp_lock); spin_lock_irqsave(&sde_crtc->spin_lock, flags); Loading Loading @@ -3833,6 +3835,7 @@ static void _sde_cp_crtc_disable_ltm_hist(struct sde_crtc *sde_crtc, spin_lock_irqsave(&sde_crtc->ltm_lock, irq_flags); sde_crtc->ltm_hist_en = false; sde_crtc->ltm_merge_clear_pending = true; SDE_EVT32(DRMID(&sde_crtc->base), sde_crtc->ltm_merge_clear_pending); INIT_LIST_HEAD(&sde_crtc->ltm_buf_free); INIT_LIST_HEAD(&sde_crtc->ltm_buf_busy); for (i = 0; i < sde_crtc->ltm_buffer_cnt; i++) Loading Loading @@ -3905,6 +3908,7 @@ static void sde_cp_ltm_hist_interrupt_cb(void *arg, int irq_idx) 0); } sde_crtc->ltm_merge_clear_pending = true; SDE_EVT32(DRMID(&sde_crtc->base), sde_crtc->ltm_merge_clear_pending); spin_unlock_irqrestore(&sde_crtc->ltm_lock, irq_flags); DRM_DEBUG_DRIVER("LTM histogram is disabled\n"); return; Loading
msm/sde/sde_crtc.c +1 −0 Original line number Diff line number Diff line Loading @@ -3303,6 +3303,7 @@ static void sde_crtc_atomic_begin(struct drm_crtc *crtc, if (encoder->crtc != crtc) continue; sde_encoder_trigger_rsc_state_change(encoder); /* encoder will trigger pending mask now */ sde_encoder_trigger_kickoff_pending(encoder); } Loading
msm/sde/sde_encoder.c +40 −0 Original line number Diff line number Diff line Loading @@ -3806,6 +3806,46 @@ bool sde_encoder_check_curr_mode(struct drm_encoder *drm_enc, u32 mode) return (disp_info->curr_panel_mode == mode); } void sde_encoder_trigger_rsc_state_change(struct drm_encoder *drm_enc) { struct sde_encoder_virt *sde_enc = NULL; int ret = 0; sde_enc = to_sde_encoder_virt(drm_enc); if (!sde_enc) return; mutex_lock(&sde_enc->rc_lock); /* * In dual display case when secondary comes out of * idle make sure RSC solver mode is disabled before * setting CTL_PREPARE. */ if (!sde_enc->cur_master || !sde_encoder_check_curr_mode(drm_enc, MSM_DISPLAY_CMD_MODE) || sde_enc->disp_info.display_type == SDE_CONNECTOR_PRIMARY || sde_enc->rc_state != SDE_ENC_RC_STATE_IDLE) goto end; /* enable all the clks and resources */ ret = _sde_encoder_resource_control_helper(drm_enc, true); if (ret) { SDE_ERROR_ENC(sde_enc, "rc in state %d\n", sde_enc->rc_state); SDE_EVT32(DRMID(drm_enc), sde_enc->rc_state, SDE_EVTLOG_ERROR); goto end; } _sde_encoder_update_rsc_client(drm_enc, true); SDE_EVT32(DRMID(drm_enc), sde_enc->rc_state, SDE_ENC_RC_STATE_ON); sde_enc->rc_state = SDE_ENC_RC_STATE_ON; end: mutex_unlock(&sde_enc->rc_lock); } void sde_encoder_trigger_kickoff_pending(struct drm_encoder *drm_enc) { struct sde_encoder_virt *sde_enc; Loading