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

Commit 16389e3a authored by Dhaval Patel's avatar Dhaval Patel
Browse files

msm: mdss: configure pixel extension block for all formats



Pixel extension block configuration is mandatory
for all pipes and all formats on 8996. It is leading
to underrun if not configured for solid fill format or
other formats. This change configures the software pixel
extension block for all formats - with/without scaling.

Change-Id: Ie724873340c6dfd5e6cb11d66aeb0ac3aae7f841
Signed-off-by: default avatarDhaval Patel <pdhaval@codeaurora.org>
parent d4bc64ea
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -1221,7 +1221,6 @@ int mdss_mdp_wb_set_format(struct msm_fb_data_type *mfd, u32 dst_format);
int mdss_mdp_wb_get_format(struct msm_fb_data_type *mfd,
					struct mdp_mixer_cfg *mixer_cfg);

int mdss_mdp_pipe_program_pixel_extn(struct mdss_mdp_pipe *pipe);
void mdss_mdp_pipe_calc_pixel_extn(struct mdss_mdp_pipe *pipe);
int mdss_mdp_wb_set_secure(struct msm_fb_data_type *mfd, int enable);
int mdss_mdp_wb_get_secure(struct msm_fb_data_type *mfd, uint8_t *enable);
+6 −1
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ static int mdss_mdp_calc_stride(struct mdss_mdp_pipe *pipe,
	struct mdss_mdp_plane_sizes *ps);
static u32 mdss_mdp_calc_per_plane_num_blks(u32 ystride,
	struct mdss_mdp_pipe *pipe);
static int mdss_mdp_pipe_program_pixel_extn(struct mdss_mdp_pipe *pipe);

static inline void mdss_mdp_pipe_write(struct mdss_mdp_pipe *pipe,
				       u32 reg, u32 val)
@@ -1998,6 +1999,10 @@ int mdss_mdp_pipe_queue_data(struct mdss_mdp_pipe *pipe,
		((pipe->type == MDSS_MDP_PIPE_TYPE_DMA) &&
		 (pipe->mixer_left->type == MDSS_MDP_MIXER_TYPE_WRITEBACK) &&
		 (ctl->mdata->mixer_switched)) || ctl->roi_changed;

	if (params_changed && pipe->scale.enable_pxl_ext)
		mdss_mdp_pipe_program_pixel_extn(pipe);

	if ((!(pipe->flags & MDP_VPU_PIPE) && (src_data == NULL)) ||
	    (pipe->flags & MDP_SOLID_FILL)) {
		pipe->params_changed = 0;
@@ -2148,7 +2153,7 @@ static inline void __mdss_mdp_pipe_program_pixel_extn_helper(
 * Function programs the pixel extn values calculated during
 * scale setup.
 */
int mdss_mdp_pipe_program_pixel_extn(struct mdss_mdp_pipe *pipe)
static int mdss_mdp_pipe_program_pixel_extn(struct mdss_mdp_pipe *pipe)
{
	/* Y plane pixel extn */
	__mdss_mdp_pipe_program_pixel_extn_helper(pipe, 0, 0);
+0 −3
Original line number Diff line number Diff line
@@ -980,9 +980,6 @@ static int mdss_mdp_scale_setup(struct mdss_mdp_pipe *pipe)
	else
		filter_mode = MDSS_MDP_SCALE_FILTER_BIL;

	if (pipe->scale.enable_pxl_ext)
		mdss_mdp_pipe_program_pixel_extn(pipe);

	if (pipe->type == MDSS_MDP_PIPE_TYPE_DMA ||
			pipe->type == MDSS_MDP_PIPE_TYPE_CURSOR) {
		if (pipe->dst.h != pipe->src.h || pipe->dst.w != pipe->src.w) {