diff options
Diffstat (limited to 'drivers/video/riva/fbdev.c')
-rw-r--r-- | drivers/video/riva/fbdev.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/video/riva/fbdev.c b/drivers/video/riva/fbdev.c index b0c886de0404..6a9e183be41b 100644 --- a/drivers/video/riva/fbdev.c +++ b/drivers/video/riva/fbdev.c | |||
@@ -1582,12 +1582,11 @@ static int rivafb_cursor(struct fb_info *info, struct fb_cursor *cursor) | |||
1582 | { | 1582 | { |
1583 | struct riva_par *par = (struct riva_par *) info->par; | 1583 | struct riva_par *par = (struct riva_par *) info->par; |
1584 | u8 data[MAX_CURS * MAX_CURS/8]; | 1584 | u8 data[MAX_CURS * MAX_CURS/8]; |
1585 | u16 fg, bg; | ||
1586 | int i, set = cursor->set; | 1585 | int i, set = cursor->set; |
1586 | u16 fg, bg; | ||
1587 | 1587 | ||
1588 | if (cursor->image.width > MAX_CURS || | 1588 | if (cursor->image.width > MAX_CURS || cursor->image.height > MAX_CURS) |
1589 | cursor->image.height > MAX_CURS) | 1589 | return -ENXIO; |
1590 | return soft_cursor(info, cursor); | ||
1591 | 1590 | ||
1592 | par->riva.ShowHideCursor(&par->riva, 0); | 1591 | par->riva.ShowHideCursor(&par->riva, 0); |
1593 | 1592 | ||
@@ -1625,21 +1624,18 @@ static int rivafb_cursor(struct fb_info *info, struct fb_cursor *cursor) | |||
1625 | if (src) { | 1624 | if (src) { |
1626 | switch (cursor->rop) { | 1625 | switch (cursor->rop) { |
1627 | case ROP_XOR: | 1626 | case ROP_XOR: |
1628 | for (i = 0; i < s_pitch * cursor->image.height; | 1627 | for (i = 0; i < s_pitch * cursor->image.height; i++) |
1629 | i++) | ||
1630 | src[i] = dat[i] ^ msk[i]; | 1628 | src[i] = dat[i] ^ msk[i]; |
1631 | break; | 1629 | break; |
1632 | case ROP_COPY: | 1630 | case ROP_COPY: |
1633 | default: | 1631 | default: |
1634 | for (i = 0; i < s_pitch * cursor->image.height; | 1632 | for (i = 0; i < s_pitch * cursor->image.height; i++) |
1635 | i++) | ||
1636 | src[i] = dat[i] & msk[i]; | 1633 | src[i] = dat[i] & msk[i]; |
1637 | break; | 1634 | break; |
1638 | } | 1635 | } |
1639 | 1636 | ||
1640 | fb_sysmove_buf_aligned(info, &info->pixmap, data, | 1637 | fb_pad_aligned_buffer(data, d_pitch, src, s_pitch, |
1641 | d_pitch, src, s_pitch, | 1638 | cursor->image.height); |
1642 | cursor->image.height); | ||
1643 | 1639 | ||
1644 | bg = ((info->cmap.red[bg_idx] & 0xf8) << 7) | | 1640 | bg = ((info->cmap.red[bg_idx] & 0xf8) << 7) | |
1645 | ((info->cmap.green[bg_idx] & 0xf8) << 2) | | 1641 | ((info->cmap.green[bg_idx] & 0xf8) << 2) | |
@@ -1727,6 +1723,7 @@ static int __devinit riva_set_fbinfo(struct fb_info *info) | |||
1727 | 1723 | ||
1728 | info->pixmap.size = 8 * 1024; | 1724 | info->pixmap.size = 8 * 1024; |
1729 | info->pixmap.buf_align = 4; | 1725 | info->pixmap.buf_align = 4; |
1726 | info->pixmap.access_align = 32; | ||
1730 | info->pixmap.flags = FB_PIXMAP_SYSTEM; | 1727 | info->pixmap.flags = FB_PIXMAP_SYSTEM; |
1731 | info->var.yres_virtual = -1; | 1728 | info->var.yres_virtual = -1; |
1732 | NVTRACE_LEAVE(); | 1729 | NVTRACE_LEAVE(); |