diff options
| -rw-r--r-- | drivers/video/Kconfig | 14 | ||||
| -rw-r--r-- | drivers/video/hgafb.c | 22 |
2 files changed, 11 insertions, 25 deletions
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index e231041a5e33..fdddf58bdaf5 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig | |||
| @@ -824,24 +824,14 @@ config FB_N411 | |||
| 824 | config FB_HGA | 824 | config FB_HGA |
| 825 | tristate "Hercules mono graphics support" | 825 | tristate "Hercules mono graphics support" |
| 826 | depends on FB && X86 | 826 | depends on FB && X86 |
| 827 | select FB_CFB_FILLRECT | ||
| 828 | select FB_CFB_COPYAREA | ||
| 829 | select FB_CFB_IMAGEBLIT | ||
| 830 | help | 827 | help |
| 831 | Say Y here if you have a Hercules mono graphics card. | 828 | Say Y here if you have a Hercules mono graphics card. |
| 832 | 829 | ||
| 833 | To compile this driver as a module, choose M here: the | 830 | To compile this driver as a module, choose M here: the |
| 834 | module will be called hgafb. | 831 | module will be called hgafb. |
| 835 | 832 | ||
| 836 | As this card technology is 15 years old, most people will answer N | 833 | As this card technology is at least 25 years old, |
| 837 | here. | 834 | most people will answer N here. |
| 838 | |||
| 839 | config FB_HGA_ACCEL | ||
| 840 | bool "Hercules mono Acceleration functions (EXPERIMENTAL)" | ||
| 841 | depends on FB_HGA && EXPERIMENTAL | ||
| 842 | ---help--- | ||
| 843 | This will compile the Hercules mono graphics with | ||
| 844 | acceleration functions. | ||
| 845 | 835 | ||
| 846 | config FB_SGIVW | 836 | config FB_SGIVW |
| 847 | tristate "SGI Visual Workstation framebuffer support" | 837 | tristate "SGI Visual Workstation framebuffer support" |
diff --git a/drivers/video/hgafb.c b/drivers/video/hgafb.c index af8f0f2cc782..4052718eefaa 100644 --- a/drivers/video/hgafb.c +++ b/drivers/video/hgafb.c | |||
| @@ -454,7 +454,6 @@ static int hgafb_blank(int blank_mode, struct fb_info *info) | |||
| 454 | /* | 454 | /* |
| 455 | * Accel functions | 455 | * Accel functions |
| 456 | */ | 456 | */ |
| 457 | #ifdef CONFIG_FB_HGA_ACCEL | ||
| 458 | static void hgafb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) | 457 | static void hgafb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) |
| 459 | { | 458 | { |
| 460 | u_int rows, y; | 459 | u_int rows, y; |
| @@ -466,7 +465,7 @@ static void hgafb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) | |||
| 466 | dest = rowaddr(info, y) + (rect->dx >> 3); | 465 | dest = rowaddr(info, y) + (rect->dx >> 3); |
| 467 | switch (rect->rop) { | 466 | switch (rect->rop) { |
| 468 | case ROP_COPY: | 467 | case ROP_COPY: |
| 469 | //fb_memset(dest, rect->color, (rect->width >> 3)); | 468 | memset_io(dest, rect->color, (rect->width >> 3)); |
| 470 | break; | 469 | break; |
| 471 | case ROP_XOR: | 470 | case ROP_XOR: |
| 472 | fb_writeb(~(fb_readb(dest)), dest); | 471 | fb_writeb(~(fb_readb(dest)), dest); |
| @@ -488,7 +487,7 @@ static void hgafb_copyarea(struct fb_info *info, const struct fb_copyarea *area) | |||
| 488 | for (rows = area->height; rows--; ) { | 487 | for (rows = area->height; rows--; ) { |
| 489 | src = rowaddr(info, y1) + (area->sx >> 3); | 488 | src = rowaddr(info, y1) + (area->sx >> 3); |
| 490 | dest = rowaddr(info, y2) + (area->dx >> 3); | 489 | dest = rowaddr(info, y2) + (area->dx >> 3); |
| 491 | //fb_memmove(dest, src, (area->width >> 3)); | 490 | memmove(dest, src, (area->width >> 3)); |
| 492 | y1++; | 491 | y1++; |
| 493 | y2++; | 492 | y2++; |
| 494 | } | 493 | } |
| @@ -499,7 +498,7 @@ static void hgafb_copyarea(struct fb_info *info, const struct fb_copyarea *area) | |||
| 499 | for (rows = area->height; rows--;) { | 498 | for (rows = area->height; rows--;) { |
| 500 | src = rowaddr(info, y1) + (area->sx >> 3); | 499 | src = rowaddr(info, y1) + (area->sx >> 3); |
| 501 | dest = rowaddr(info, y2) + (area->dx >> 3); | 500 | dest = rowaddr(info, y2) + (area->dx >> 3); |
| 502 | //fb_memmove(dest, src, (area->width >> 3)); | 501 | memmove(dest, src, (area->width >> 3)); |
| 503 | y1--; | 502 | y1--; |
| 504 | y2--; | 503 | y2--; |
| 505 | } | 504 | } |
| @@ -511,20 +510,17 @@ static void hgafb_imageblit(struct fb_info *info, const struct fb_image *image) | |||
| 511 | u8 __iomem *dest; | 510 | u8 __iomem *dest; |
| 512 | u8 *cdat = (u8 *) image->data; | 511 | u8 *cdat = (u8 *) image->data; |
| 513 | u_int rows, y = image->dy; | 512 | u_int rows, y = image->dy; |
| 513 | u_int x; | ||
| 514 | u8 d; | 514 | u8 d; |
| 515 | 515 | ||
| 516 | for (rows = image->height; rows--; y++) { | 516 | for (rows = image->height; rows--; y++) { |
| 517 | d = *cdat++; | 517 | for (x = 0; x < image->width; x+= 8) { |
| 518 | dest = rowaddr(info, y) + (image->dx >> 3); | 518 | d = *cdat++; |
| 519 | fb_writeb(d, dest); | 519 | dest = rowaddr(info, y) + ((image->dx + x)>> 3); |
| 520 | fb_writeb(d, dest); | ||
| 521 | } | ||
| 520 | } | 522 | } |
| 521 | } | 523 | } |
| 522 | #else /* !CONFIG_FB_HGA_ACCEL */ | ||
| 523 | #define hgafb_fillrect cfb_fillrect | ||
| 524 | #define hgafb_copyarea cfb_copyarea | ||
| 525 | #define hgafb_imageblit cfb_imageblit | ||
| 526 | #endif /* CONFIG_FB_HGA_ACCEL */ | ||
| 527 | |||
| 528 | 524 | ||
| 529 | static struct fb_ops hgafb_ops = { | 525 | static struct fb_ops hgafb_ops = { |
| 530 | .owner = THIS_MODULE, | 526 | .owner = THIS_MODULE, |
