diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/mxc/mxc_epdc_v2_fb.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/drivers/video/mxc/mxc_epdc_v2_fb.c b/drivers/video/mxc/mxc_epdc_v2_fb.c index d0a538c59c21..403a502ce269 100644 --- a/drivers/video/mxc/mxc_epdc_v2_fb.c +++ b/drivers/video/mxc/mxc_epdc_v2_fb.c @@ -6013,21 +6013,26 @@ static int pxp_legacy_process(struct mxc_epdc_fb_data *fb_data, */ proc_data->drect.top = 0; proc_data->drect.left = 0; - proc_data->drect.width = proc_data->srect.width; - proc_data->drect.height = proc_data->srect.height; /* PXP expects rotation in terms of degrees */ proc_data->rotate = fb_data->epdc_fb_var.rotate * 90; if (proc_data->rotate > 270) proc_data->rotate = 0; - pxp_conf->out_param.width = update_region->width; - pxp_conf->out_param.height = update_region->height; - - if ((proc_data->rotate == 90) || (proc_data->rotate == 270)) + /* we should pass the rotated values to PXP */ + if ((proc_data->rotate == 90) || (proc_data->rotate == 270)) { + proc_data->drect.width = proc_data->srect.height; + proc_data->drect.height = proc_data->srect.width; + pxp_conf->out_param.width = update_region->height; + pxp_conf->out_param.height = update_region->width; pxp_conf->out_param.stride = update_region->height; - else + } else { + proc_data->drect.width = proc_data->srect.width; + proc_data->drect.height = proc_data->srect.height; + pxp_conf->out_param.width = update_region->width; + pxp_conf->out_param.height = update_region->height; pxp_conf->out_param.stride = update_region->width; + } /* For EPDC v2.0, we need output to be 64-bit * aligned since EPDC stride does not work. */ |