* [PATCH] Clean-up and bug fix for tdfxfb framebuffer size detection
@ 2005-04-22 4:09 Richard Drummond
2005-04-22 8:48 ` Chris Ross
0 siblings, 1 reply; 3+ messages in thread
From: Richard Drummond @ 2005-04-22 4:09 UTC (permalink / raw)
To: linux-fbdev-devel; +Cc: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 299 bytes --]
Attached is a patch against 2.6.11.7 which tidies up the tdfxfb framebuffer
size detection code a little and fixes the broken support for Voodoo4/5 cards.
(I haven't tested this on a Voodoo5, however, because I don't have the
hardware).
Signed-off-by: Richard Drummond <evilrich@rcdrummond.net>
[-- Attachment #2: tdfxfb_mem_fix.diff --]
[-- Type: text/x-diff, Size: 2470 bytes --]
--- drivers/video/tdfxfb.c_orig 2005-04-20 15:04:23.000000000 -0500
+++ drivers/video/tdfxfb.c 2005-04-21 22:20:32.000000000 -0500
@@ -414,36 +414,35 @@
static unsigned long do_lfb_size(struct tdfx_par *par, unsigned short dev_id)
{
- u32 draminit0 = 0;
- u32 draminit1 = 0;
- u32 miscinit1 = 0;
- u32 lfbsize = 0;
- int sgram_p = 0;
+ u32 draminit0;
+ u32 draminit1;
+ u32 miscinit1;
+
+ int num_chips;
+ int chip_size; /* in MB */
+ u32 lfbsize;
+ int has_sgram;
draminit0 = tdfx_inl(par, DRAMINIT0);
draminit1 = tdfx_inl(par, DRAMINIT1);
+
+ num_chips = (draminit0 & DRAMINIT0_SGRAM_NUM) ? 8 : 4;
- if ((dev_id == PCI_DEVICE_ID_3DFX_BANSHEE) ||
- (dev_id == PCI_DEVICE_ID_3DFX_VOODOO3)) {
- sgram_p = (draminit1 & DRAMINIT1_MEM_SDRAM) ? 0 : 1;
-
- lfbsize = sgram_p ?
- (((draminit0 & DRAMINIT0_SGRAM_NUM) ? 2 : 1) *
- ((draminit0 & DRAMINIT0_SGRAM_TYPE) ? 8 : 4) * 1024 * 1024) :
- 16 * 1024 * 1024;
+ if (dev_id < PCI_DEVICE_ID_3DFX_VOODOO5) {
+ /* Banshee/Voodoo3 */
+ has_sgram = draminit1 & DRAMINIT1_MEM_SDRAM;
+ chip_size = has_sgram ? ((draminit0 & DRAMINIT0_SGRAM_TYPE) ? 2 : 1)
+ : 2;
} else {
/* Voodoo4/5 */
- u32 chips, psize, banks;
+ has_sgram = 0;
+ chip_size = 1 << ((draminit0 & DRAMINIT0_SGRAM_TYPE_MASK) >> DRAMINIT0_SGRAM_TYPE_SHIFT);
+ }
+ lfbsize = num_chips * chip_size * 1024 * 1024;
- chips = ((draminit0 & (1 << 26)) == 0) ? 4 : 8;
- psize = 1 << ((draminit0 & 0x38000000) >> 28);
- banks = ((draminit0 & (1 << 30)) == 0) ? 2 : 4;
- lfbsize = chips * psize * banks;
- lfbsize <<= 20;
- }
- /* disable block writes for SDRAM (why?) */
+ /* disable block writes for SDRAM */
miscinit1 = tdfx_inl(par, MISCINIT1);
- miscinit1 |= sgram_p ? 0 : MISCINIT1_2DBLOCK_DIS;
+ miscinit1 |= has_sgram ? 0 : MISCINIT1_2DBLOCK_DIS;
miscinit1 |= MISCINIT1_CLUT_INV;
banshee_make_room(par, 1);
--- include/video/tdfx.h_orig 2005-04-21 21:16:56.000000000 -0500
+++ include/video/tdfx.h 2005-04-21 09:39:42.000000000 -0500
@@ -99,6 +99,8 @@
#define MISCINIT1_2DBLOCK_DIS BIT(15)
#define DRAMINIT0_SGRAM_NUM BIT(26)
#define DRAMINIT0_SGRAM_TYPE BIT(27)
+#define DRAMINIT0_SGRAM_TYPE_MASK (BIT(27)|BIT(28)|BIT(29))
+#define DRAMINIT0_SGRAM_TYPE_SHIFT 27
#define DRAMINIT1_MEM_SDRAM BIT(30)
#define VGAINIT0_VGA_DISABLE BIT(0)
#define VGAINIT0_EXT_TIMING BIT(1)
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Clean-up and bug fix for tdfxfb framebuffer size detection
2005-04-22 4:09 [PATCH] Clean-up and bug fix for tdfxfb framebuffer size detection Richard Drummond
@ 2005-04-22 8:48 ` Chris Ross
2005-04-22 18:17 ` Richard Drummond
0 siblings, 1 reply; 3+ messages in thread
From: Chris Ross @ 2005-04-22 8:48 UTC (permalink / raw)
To: Richard Drummond; +Cc: linux-fbdev-devel, linux-kernel
Hi Richard,
Richard Drummond escreveu:
> Attached is a patch against 2.6.11.7 which tidies up the tdfxfb framebuffer
> size detection code a little and fixes the broken support for Voodoo4/5 cards.
> (I haven't tested this on a Voodoo5, however, because I don't have the
> hardware).
I /do/ have the hardware, so I am very glad to see someone working on
support for the Voodoo 5. Are there any specific tests you would like me
to perform and send you the results from?
Regards,
Chris R.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Clean-up and bug fix for tdfxfb framebuffer size detection
2005-04-22 8:48 ` Chris Ross
@ 2005-04-22 18:17 ` Richard Drummond
0 siblings, 0 replies; 3+ messages in thread
From: Richard Drummond @ 2005-04-22 18:17 UTC (permalink / raw)
To: linux-fbdev-devel; +Cc: Chris Ross, linux-kernel
Hi Chris
On Friday 22 April 2005 03:48 am, Chris Ross wrote:
> I /do/ have the hardware, so I am very glad to see someone working on
> support for the Voodoo 5.
I am glad somebody is interested. ;-)
> Are there any specific tests you would like me
> to perform and send you the results from?
It's quite simple really. With this patch, does tdfxfb report the right amount
of framebuffer memory for your card? The method it used to determine the
amount of memory for the Voodoo4/5 before was wrong. If it gave the right
value before, then it was probably just a coincidence.
Cheers,
Rich
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2005-04-22 18:17 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-04-22 4:09 [PATCH] Clean-up and bug fix for tdfxfb framebuffer size detection Richard Drummond
2005-04-22 8:48 ` Chris Ross
2005-04-22 18:17 ` Richard Drummond
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).