Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8dc2f252 authored by Jayant Shekhar's avatar Jayant Shekhar
Browse files

drm/msm/sde: Add new API to check clone mode



CWB needs clone mode API check to ensure resource
allocations are correct. But currently during first
CWB commit, clone mode API is returning false as
sde encoder master is NULL at the point where
LM/PP reservation is done. Hence, use a API for CWB
clone mode check which doesn't check sde encoder
master structure instead gets information from phys
encoder structure.

Change-Id: I7bf3f3cb8b3cc23f6d92bb6a9d98a3f35bcb840e
Signed-off-by: default avatarJayant Shekhar <jshekhar@codeaurora.org>
Signed-off-by: default avatarRaviteja Tamatam <travitej@codeaurora.org>
parent 38454009
Loading
Loading
Loading
Loading
+22 −8
Original line number Diff line number Diff line
@@ -437,14 +437,6 @@ bool sde_encoder_is_dsc_merge(struct drm_encoder *drm_enc)
	return false;
}

int sde_encoder_in_clone_mode(struct drm_encoder *drm_enc)
{
	struct sde_encoder_virt *sde_enc = to_sde_encoder_virt(drm_enc);

	return sde_enc && sde_enc->cur_master &&
		sde_enc->cur_master->in_clone_mode;
}

bool sde_encoder_is_primary_display(struct drm_encoder *drm_enc)
{
	struct sde_encoder_virt *sde_enc = to_sde_encoder_virt(drm_enc);
@@ -904,6 +896,28 @@ void sde_encoder_helper_split_config(
	}
}

bool sde_encoder_in_clone_mode(struct drm_encoder *drm_enc)
{
	struct sde_encoder_virt *sde_enc;
	int i = 0;

	if (!drm_enc)
		return false;

	sde_enc = to_sde_encoder_virt(drm_enc);
	if (!sde_enc)
		return false;

	for (i = 0; i < sde_enc->num_phys_encs; i++) {
		struct sde_encoder_phys *phys = sde_enc->phys_encs[i];

		if (phys && phys->in_clone_mode)
			return true;
	}

	return false;
}

static int sde_encoder_virt_atomic_check(
		struct drm_encoder *drm_enc,
		struct drm_crtc_state *crtc_state,
+1 −1
Original line number Diff line number Diff line
@@ -279,7 +279,7 @@ void sde_encoder_recovery_events_handler(struct drm_encoder *encoder,
 * @drm_enc:    Pointer to drm encoder structure
 * @Return:     true if successful in updating the encoder structure
 */
int sde_encoder_in_clone_mode(struct drm_encoder *enc);
bool sde_encoder_in_clone_mode(struct drm_encoder *enc);

/**
 * sde_encoder_is_primary_display - checks if underlying display is primary