diff options
author | Robby Cai <robby.cai@nxp.com> | 2017-04-20 17:17:42 +0800 |
---|---|---|
committer | Robby Cai <robby.cai@nxp.com> | 2017-08-17 11:34:50 +0800 |
commit | ec6fac8e63a449e92c362df407e3e8357b32fedd (patch) | |
tree | b0e6e46d61da339ca09a42126247fa039c2949c2 /drivers | |
parent | b0a32b757958a4d898b61bda02514613f48f8d2d (diff) |
MLK-14720 epdc: correct WFE setting when bypass legacy process
set WFE (WFE_A on imx7d, and WFE_B on imx6ull/imx6sll) input address to
framebuffer start address, and set left/top coordinate since the framebuffer is
the original source of WFE (i.e., not from PXP output) when bypass legacy mode.
The patch also limits the condition to bypass legacy mode when not use
EPDC_FLAG_USE_ALT_BUFFER.
Signed-off-by: Robby Cai <robby.cai@nxp.com>
(cherry picked from commit 7f19940705902623166777c675f5e10c9e7fc477)
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c b/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c index 14bcb76ea1f4..b908ad79689e 100644 --- a/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c +++ b/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c @@ -2,6 +2,8 @@ * Copyright (C) 2014-2016 Freescale Semiconductor, Inc. * Copyright 2017 NXP * + * Copyright 2017 NXP + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -6408,9 +6410,19 @@ static int pxp_wfe_a_process(struct mxc_epdc_fb_data *fb_data, if ((fb_data->epdc_fb_var.rotate == FB_ROTATE_UR) && (fb_data->epdc_fb_var.grayscale == GRAYSCALE_8BIT) && !is_transform && (proc_data->dither_mode == 0) && + !(upd_data_list->update_desc->upd_data.flags & + EPDC_FLAG_USE_ALT_BUFFER) && !fb_data->restrict_width) { - pxp_conf->wfe_a_fetch_param[0].paddr = + sg_dma_address(&sg[0]) = fb_data->info.fix.smem_start; + sg_set_page(&sg[0], + virt_to_page(fb_data->info.screen_base), + fb_data->info.fix.smem_len, + offset_in_page(fb_data->info.screen_base)); + pxp_conf->wfe_a_fetch_param[0].paddr = sg_dma_address(&sg[0]); + + pxp_conf->wfe_a_fetch_param[0].left = update_region->left; + pxp_conf->wfe_a_fetch_param[0].top = update_region->top; } else pxp_conf->wfe_a_fetch_param[0].paddr = upd_data_list->phys_addr + upd_data_list->update_desc->epdc_offs; |