summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRobby Cai <robby.cai@nxp.com>2017-04-20 17:17:42 +0800
committerRobby Cai <robby.cai@nxp.com>2017-08-17 11:34:50 +0800
commitec6fac8e63a449e92c362df407e3e8357b32fedd (patch)
treeb0e6e46d61da339ca09a42126247fa039c2949c2 /drivers
parentb0a32b757958a4d898b61bda02514613f48f8d2d (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.c14
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;