patch-2.4.21 linux-2.4.21/drivers/video/clgenfb.c
Next file: linux-2.4.21/drivers/video/clgenfb.h
Previous file: linux-2.4.21/drivers/video/aty128fb.c
Back to the patch index
Back to the overall index
- Lines: 84
- Date:
2003-06-13 07:51:37.000000000 -0700
- Orig file:
linux-2.4.20/drivers/video/clgenfb.c
- Orig date:
2002-11-28 15:53:15.000000000 -0800
diff -urN linux-2.4.20/drivers/video/clgenfb.c linux-2.4.21/drivers/video/clgenfb.c
@@ -1,7 +1,7 @@
/*
* drivers/video/clgenfb.c - driver for Cirrus Logic chipsets
*
- * Copyright 1999-2001 Jeff Garzik <jgarzik@mandrakesoft.com>
+ * Copyright 1999-2001 Jeff Garzik <jgarzik@pobox.com>
*
* Contributors (thanks, all!)
*
@@ -15,6 +15,9 @@
* Lars Hecking:
* Amiga updates and testing.
*
+ * Cliff Matthews <ctm@ardi.com>:
+ * 16bpp fix for CL-GD7548 (uses info from XFree86 4.2.0 source)
+ *
* Original clgenfb author: Frank Neumann
*
* Based on retz3fb.c and clgen.c:
@@ -403,6 +406,9 @@
#ifdef CONFIG_PCI
struct pci_dev *pdev;
+#define IS_7548(x) ((x)->pdev->device == PCI_DEVICE_ID_CIRRUS_7548)
+#else
+#define IS_7548(x) (FALSE)
#endif
};
@@ -970,7 +976,10 @@
DPRINTK ("desired pixclock: %ld kHz\n", freq);
- maxclock = clgen_board_info[fb_info->btype].maxclock;
+ if (IS_7548(fb_info))
+ maxclock = 80100;
+ else
+ maxclock = clgen_board_info[fb_info->btype].maxclock;
_par->multiplexing = 0;
/* If the frequency is greater than we can support, we might be able
@@ -1478,10 +1487,17 @@
case BT_ALPINE:
DPRINTK (" (for GD543x)\n");
- if (_par->HorizRes >= 1024)
- vga_wseq (fb_info->regs, CL_SEQR7, 0xa7);
- else
- vga_wseq (fb_info->regs, CL_SEQR7, 0xa3);
+ if (IS_7548(fb_info)) {
+ vga_wseq (fb_info->regs, CL_SEQR7,
+ (vga_rseq (fb_info->regs, CL_SEQR7) & 0xE0)
+ | 0x17);
+ WHDR (fb_info, 0xC1);
+ } else {
+ if (_par->HorizRes >= 1024)
+ vga_wseq (fb_info->regs, CL_SEQR7, 0xa7);
+ else
+ vga_wseq (fb_info->regs, CL_SEQR7, 0xa3);
+ }
clgen_set_mclk (fb_info, _par->mclk, _par->divMCLK);
break;
@@ -1594,6 +1610,11 @@
_par->var.bits_per_pixel);
}
+ if (IS_7548(fb_info)) {
+ vga_wseq (fb_info->regs, CL_SEQR2D,
+ vga_rseq (fb_info->regs, CL_SEQR2D) | 0xC0);
+ }
+
vga_wcrt (fb_info->regs, VGA_CRTC_OFFSET, offset & 0xff);
tmp = 0x22;
if (offset & 0x100)
@@ -2884,7 +2905,7 @@
* Modularization
*/
-MODULE_AUTHOR("Copyright 1999,2000 Jeff Garzik <jgarzik@mandrakesoft.com>");
+MODULE_AUTHOR("Copyright 1999,2000 Jeff Garzik <jgarzik@pobox.com>");
MODULE_DESCRIPTION("Accelerated FBDev driver for Cirrus Logic chips");
MODULE_LICENSE("GPL");
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)