pm2fb: panning and hardware cursor fixes
PATCH 19/20 pm2fb: panning and hardware cursor fixes
From: Krzysztof Helt <[email protected]>
This patch:
- disallows setting of virtual height above 2048 as it does not work for accelerated copyarea and imageblit
- fixes blinking of pm2v cursor by pushing cursor outside the display (x=2047)
- fixes hardware cursor position on Permedia 2 chips with panning enabled
- enables hardware cursor by default
Signed-off-by Krzysztof Helt <[email protected]>
Signed-off-by Antonino Daplas <[email protected]>
---
drivers/video/pm2fb.c | 35 +++++++++++++++++++---------------- 1 files changed, 19 insertions(+), 16 deletions(-)
drivers/video/pm2fb.c +19 -16
@@ -66,7 +66,7 @@ #define PM2_PIXMAP_SIZE (1600 * 4)/* * Driver data */ -static int hwcursor; +static int hwcursor =1 ;static char *mode__devinitdata ;/*
@@ -587,6 +587,11 @@ static int pm2fb_check_var(struct fb_varreturn -EINVAL ; } +/* permedia cannot blit over 2048 */ +if (var->yres_virtual >2047 ) { + var->yres_virtual =2047 ; + } +if (var->xoffset) {DPRINTK ("xoffset not supported\n" );return -EINVAL ;
@@ -1258,12 +1263,21 @@ static int pm2vfb_cursor(struct fb_info {struct pm2fb_par *par = info->par;u8 mode =PM2F_CURSORMODE_TYPE_X ; +int x = cursor->image.dx - info->var.xoffset; +int y = cursor->image.dy - info->var.yoffset;if (cursor->enable) mode |=PM2F_CURSORMODE_CURSOR_ENABLE ;pm2v_RDAC_WR (par,PM2VI_RD_CURSOR_MODE , mode); +if (!cursor->enable) + x =2047 ;/* push it outside display */ +pm2v_RDAC_WR (par,PM2VI_RD_CURSOR_X_LOW , x &0xff ); +pm2v_RDAC_WR (par,PM2VI_RD_CURSOR_X_HIGH , (x >>8 ) &0xf ); +pm2v_RDAC_WR (par,PM2VI_RD_CURSOR_Y_LOW , y &0xff ); +pm2v_RDAC_WR (par,PM2VI_RD_CURSOR_Y_HIGH , (y >>8 ) &0xf ); +/* * If the cursor is not be changed this means either we want the * current cursor state (if enable is set) or we want to query what
@@ -1272,16 +1286,6 @@ static int pm2vfb_cursor(struct fb_infoif (!cursor->set)return 0 ; -if (cursor->set &FB_CUR_SETPOS ) { -int x = cursor->image.dx - info->var.xoffset; -int y = cursor->image.dy - info->var.yoffset; - -pm2v_RDAC_WR (par,PM2VI_RD_CURSOR_X_LOW , x &0xff ); -pm2v_RDAC_WR (par,PM2VI_RD_CURSOR_X_HIGH , (x >>8 ) &0xf ); -pm2v_RDAC_WR (par,PM2VI_RD_CURSOR_Y_LOW , y &0xff ); -pm2v_RDAC_WR (par,PM2VI_RD_CURSOR_Y_HIGH , (y >>8 ) &0xf ); - } -if (cursor->set &FB_CUR_SETHOT ) {pm2v_RDAC_WR (par,PM2VI_RD_CURSOR_X_HOT , cursor->hot.x &0x3f );
@@ -1373,7 +1377,7 @@ static int pm2fb_cursor(struct fb_info *if (par->type ==PM2_TYPE_PERMEDIA2V )return pm2vfb_cursor (info, cursor); - mode =0 ; + mode =0x40 ;if (cursor->enable) mode =0x43 ;
@@ -1388,10 +1392,9 @@ static int pm2fb_cursor(struct fb_info *return 0 ;if (cursor->set &FB_CUR_SETPOS ) { -int x, y; +int x = cursor->image.dx - info->var.xoffset +63 ; +int y = cursor->image.dy - info->var.yoffset +63 ; - x = cursor->image.dx +63 ; - y = cursor->image.dy +63 ;WAIT_FIFO (par,4 );pm2_WR (par,PM2R_RD_CURSOR_X_LSB , x &0xff );pm2_WR (par,PM2R_RD_CURSOR_X_MSB , (x >>8 ) &0x7 );
@@ -1838,7 +1841,7 @@ module_param(noaccel, bool, 0);MODULE_PARM_DESC (noaccel,"Disable acceleration" );module_param (hwcursor, int,0644 );MODULE_PARM_DESC (hwcursor,"Enable hardware cursor " -"(1=enable, 0=disable, default=0)" ); +"(1=enable, 0=disable, default=1)" );#ifdef CONFIG_MTRR module_param (nomtrr, bool,0 );MODULE_PARM_DESC (nomtrr,"Disable MTRR support (0 or 1=disabled) (default=0)" );
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/