mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-08 21:22:09 -04:00
Merge "disp: msm: sde: avoid resetting blend stage in every commit"
This commit is contained in:
commit
e12e4e1851
1 changed files with 19 additions and 4 deletions
|
|
@ -1546,14 +1546,11 @@ static void _sde_crtc_blend_setup(struct drm_crtc *crtc,
|
|||
}
|
||||
|
||||
for (i = 0; i < sde_crtc->num_mixers; i++) {
|
||||
if (!mixer[i].hw_lm || !mixer[i].hw_ctl) {
|
||||
if (!mixer[i].hw_lm) {
|
||||
SDE_ERROR("invalid lm or ctl assigned to mixer\n");
|
||||
return;
|
||||
}
|
||||
mixer[i].mixer_op_mode = 0;
|
||||
if (mixer[i].hw_ctl->ops.clear_all_blendstages)
|
||||
mixer[i].hw_ctl->ops.clear_all_blendstages(
|
||||
mixer[i].hw_ctl);
|
||||
|
||||
/* clear dim_layer settings */
|
||||
lm = mixer[i].hw_lm;
|
||||
|
|
@ -3078,6 +3075,22 @@ static void _sde_crtc_setup_lm_bounds(struct drm_crtc *crtc,
|
|||
drm_mode_debug_printmodeline(adj_mode);
|
||||
}
|
||||
|
||||
static void _sde_crtc_clear_all_blend_stages(struct sde_crtc *sde_crtc)
|
||||
{
|
||||
struct sde_crtc_mixer mixer;
|
||||
|
||||
/*
|
||||
* Use mixer[0] to get hw_ctl which will use ops to clear
|
||||
* all blendstages. Clear all blendstages will iterate through
|
||||
* all mixers.
|
||||
*/
|
||||
if (sde_crtc->num_mixers) {
|
||||
mixer = sde_crtc->mixers[0];
|
||||
if (mixer.hw_ctl && mixer.hw_ctl->ops.clear_all_blendstages)
|
||||
mixer.hw_ctl->ops.clear_all_blendstages(mixer.hw_ctl);
|
||||
}
|
||||
}
|
||||
|
||||
static void sde_crtc_atomic_begin(struct drm_crtc *crtc,
|
||||
struct drm_crtc_state *old_state)
|
||||
{
|
||||
|
|
@ -3119,6 +3132,7 @@ static void sde_crtc_atomic_begin(struct drm_crtc *crtc,
|
|||
_sde_crtc_setup_mixers(crtc);
|
||||
_sde_crtc_setup_is_ppsplit(crtc->state);
|
||||
_sde_crtc_setup_lm_bounds(crtc, crtc->state);
|
||||
_sde_crtc_clear_all_blend_stages(sde_crtc);
|
||||
}
|
||||
|
||||
list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
|
||||
|
|
@ -3999,6 +4013,7 @@ static void sde_crtc_disable(struct drm_crtc *crtc)
|
|||
ktime_get());
|
||||
}
|
||||
|
||||
_sde_crtc_clear_all_blend_stages(sde_crtc);
|
||||
memset(sde_crtc->mixers, 0, sizeof(sde_crtc->mixers));
|
||||
sde_crtc->num_mixers = 0;
|
||||
sde_crtc->mixers_swapped = false;
|
||||
|
|
|
|||
Loading…
Reference in a new issue