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

Commit 8b8e9a90 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: mdss: Enable solid fill on pipe"

parents 7a6f2b13 88d8a884
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -363,6 +363,8 @@ struct mdss_mdp_pipe {
	u8 blend_op;
	u8 overfetch_disable;
	u32 transp;
	u32 bg_color;
	u8 has_buf;

	struct msm_fb_data_type *mfd;
	struct mdss_mdp_mixer *mixer;
+8 −2
Original line number Diff line number Diff line
@@ -511,6 +511,7 @@ static int mdss_mdp_overlay_pipe_setup(struct msm_fb_data_type *mfd,
	} else {
		pipe->overfetch_disable = 0;
	}
	pipe->bg_color = req->bg_color;

	req->id = pipe->ndx;
	pipe->req_data = *req;
@@ -604,6 +605,7 @@ static int mdss_mdp_overlay_pipe_setup(struct msm_fb_data_type *mfd,
	}

	pipe->params_changed++;
	pipe->has_buf = 0;

	req->vert_deci = pipe->vert_deci;

@@ -1030,8 +1032,9 @@ int mdss_mdp_overlay_kickoff(struct msm_fb_data_type *mfd,
		} else if (pipe->front_buf.num_planes) {
			buf = &pipe->front_buf;
		} else {
			pr_warn("pipe queue w/o buffer\n");
			continue;
			pr_debug("no buf detected pnum=%d use solid fill\n",
					pipe->num);
			buf = NULL;
		}

		ret = mdss_mdp_pipe_queue_data(pipe, buf);
@@ -1253,6 +1256,7 @@ static int mdss_mdp_overlay_queue(struct msm_fb_data_type *mfd,
	if (IS_ERR_VALUE(ret)) {
		pr_err("src_data pmem error\n");
	}
	pipe->has_buf = 1;
	mdss_mdp_pipe_unmap(pipe);

	return ret;
@@ -1495,6 +1499,7 @@ static void mdss_mdp_overlay_pan_display(struct msm_fb_data_type *mfd)
	buf->p[0].addr += offset;
	buf->p[0].len = fbi->fix.smem_len - offset;
	buf->num_planes = 1;
	pipe->has_buf = 1;
	mdss_mdp_pipe_unmap(pipe);

	if (fbi->var.xres > MAX_MIXER_WIDTH || mfd->split_display) {
@@ -1509,6 +1514,7 @@ static void mdss_mdp_overlay_pan_display(struct msm_fb_data_type *mfd)
			goto pan_display_error;
		}
		pipe->back_buf = *buf;
		pipe->has_buf = 1;
		mdss_mdp_pipe_unmap(pipe);
	}
	mutex_unlock(&mdp5_data->ov_lock);
+4 −1
Original line number Diff line number Diff line
@@ -968,6 +968,8 @@ static int mdss_mdp_pipe_solidfill_setup(struct mdss_mdp_pipe *pipe)
	secure = (pipe->flags & MDP_SECURE_OVERLAY_SESSION ? 0xF : 0x0);

	mdss_mdp_pipe_write(pipe, MDSS_MDP_REG_SSPP_SRC_FORMAT, format);
	mdss_mdp_pipe_write(pipe, MDSS_MDP_REG_SSPP_SRC_CONSTANT_COLOR,
		pipe->bg_color);
	mdss_mdp_pipe_write(pipe, MDSS_MDP_REG_SSPP_SRC_ADDR_SW_STATUS, secure);

	return 0;
@@ -1006,7 +1008,8 @@ int mdss_mdp_pipe_queue_data(struct mdss_mdp_pipe *pipe,
			 (pipe->mixer->type == MDSS_MDP_MIXER_TYPE_WRITEBACK)
			 && (ctl->mdata->mixer_switched)) ||
			 ctl->roi_changed;
	if (src_data == NULL) {
	if (src_data == NULL || !pipe->has_buf) {
		pipe->params_changed = 0;
		mdss_mdp_pipe_solidfill_setup(pipe);
		goto update_nobuf;
	}
+4 −1
Original line number Diff line number Diff line
@@ -536,6 +536,8 @@ struct mdp_scale_data {
 * @flags:	This is used to customize operation of overlay. See MDP flags
 *		for more information.
 * @user_data:	DEPRECATED* Used to store user application specific information.
 * @bg_color:	Solid color used to fill the overlay surface when no source
 *		buffer is provided.
 * @horz_deci:	Horizontal decimation value, this indicates the amount of pixels
 *		dropped for each pixel that is fetched from a line. The value
 *		given should be power of two of decimation amount.
@@ -566,7 +568,8 @@ struct mdp_overlay {
	uint32_t transp_mask;
	uint32_t flags;
	uint32_t id;
	uint32_t user_data[7];
	uint32_t user_data[6];
	uint32_t bg_color;
	uint8_t horz_deci;
	uint8_t vert_deci;
	struct mdp_overlay_pp_params overlay_pp_cfg;