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

Commit e504cbed authored by Xiaoming Zhou's avatar Xiaoming Zhou
Browse files

msm: mdss: add overlay configuration error handling logic



This is to add the error handling logic to catch the wrong
overlay configuration from user space.

Change-Id: I59523de392dcd21309bfa9eb9a944047505df2a3
Signed-off-by: default avatarXiaoming Zhou <zhoux@codeaurora.org>
parent e2305a16
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -962,6 +962,7 @@ static int mdp3_overlay_queue_buffer(struct msm_fb_data_type *mfd,
	struct mdp3_session_data *mdp3_session = mfd->mdp.private1;
	struct msmfb_data *img = &req->data;
	struct mdp3_img_data data;
	struct mdp3_dma *dma = mdp3_session->dma;

	rc = mdp3_get_img(img, &data, MDP3_CLIENT_DMA_P);
	if (rc) {
@@ -969,6 +970,12 @@ static int mdp3_overlay_queue_buffer(struct msm_fb_data_type *mfd,
		return rc;
	}

	if (data.len < dma->source_config.stride * dma->source_config.height) {
		pr_err("buf length is smaller than required by dma configuration\n");
		mdp3_put_img(&data, MDP3_CLIENT_DMA_P);
		return -EINVAL;
	}

	rc = mdp3_bufq_push(&mdp3_session->bufq_in, &data);
	if (rc) {
		pr_err("fail to queue the overlay buffer, buffer drop\n");
@@ -989,6 +996,12 @@ static int mdp3_overlay_play(struct msm_fb_data_type *mfd,

	mutex_lock(&mdp3_session->lock);

	if (mdp3_session->overlay.id == MSMFB_NEW_REQUEST) {
		pr_err("overlay play without overlay set first\n");
		mutex_unlock(&mdp3_session->lock);
		return -EINVAL;
	}

	if (mfd->panel_power_on)
		rc = mdp3_overlay_queue_buffer(mfd, req);
	else