[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: DM9102A & Netra X1 (Was Re: Netra X1 boot getting closer)



Hi,

David S. Miller writes:
 > 
 > Richard Mortimer writes:
 >  > static int csr0 = 0x00800000 | 0x9000
 > 
 > Can you try values 0x00e00000 or just plain 0x0?
 > 
 > These are the values the dmfe.c driver uses.

Well the Tx timeouts seem to have stopped happening without me doing
anything! I did try a number of different values - as follows

0x00e00000  - network not working (has MRM bit set so not surprising).
0x00c00000  - as above but without MRM - seems to work ok
0x0         - seems to work ok
0x00809000  - seems to work ok. (this is my original settings).

With these results in mind it seems most sensible to use the last
value because this has the correct address boundary alignment value
for SPARC.

Find below a patch which seems to work for me. I've assumed that this
is generic to all DM9102 based cards so it isn't protected by any
ifdefs or whatever. I would be grateful if people could try this and
see if it works for you. patch is based on cvs as of today.

Richard

diff --recursive -u linux-cvs.010805.orig/drivers/net/tulip/tulip_core.c linux-cvs.010805/drivers/net/tulip/tulip_core.c
--- linux-cvs.010805.orig/drivers/net/tulip/tulip_core.c	Sun Aug  5 11:16:04 2001
+++ linux-cvs.010805/drivers/net/tulip/tulip_core.c	Sun Aug  5 15:50:51 2001
@@ -1420,6 +1420,10 @@
 	if (chip_idx == LC82C168)
 		csr0 &= ~0xfff10000; /* zero reserved bits 31:20, 16 */
 
+	/* DM9102A MRM doesn't work... */
+	if (pdev->vendor == 0x1282 && pdev->device == 0x9102)
+		csr0 &= ~0x01200000; /* zero MRM bit 21 & bit 24 too */
+
 	/*
 	 *	And back to business
 	 */
@@ -1762,9 +1766,9 @@
 		kfree (tp->mtable);
 #ifndef USE_IO_OPS
 	iounmap((void *)ioaddr);
-#endif
 
 err_out_free_res:
+#endif
 	pci_release_regions (pdev);
 
 err_out_free_netdev:


-- 
Richard Mortimer - richm@oldelvet dot netscapeonline dot co dot uk



Reply to: