linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).