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: Dhaval Patel <pdhaval@codeaurora.org>
This commit is contained in:
Dhaval Patel 2015-07-08 23:49:59 -07:00 committed by David Keitel
parent ffe277c9c2
commit 19443f6d86
3 changed files with 6 additions and 5 deletions

View file

@ -1245,7 +1245,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);

View file

@ -53,6 +53,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)
@ -2071,6 +2072,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;
@ -2222,7 +2227,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);

View file

@ -1029,9 +1029,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) {