bk://bk.phunnypharm.org/ieee1394-2.6
bcollins@debian.org|ChangeSet|20040316141205|31820 bcollins

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/03/16 12:43:13-08:00 akpm@bix.(none) 
#   Merge bk://bk.phunnypharm.org/ieee1394-2.6
#   into bix.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/ohci1394.c
#   2004/03/16 12:43:01-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/03/16 09:12:05-05:00 bcollins@debian.org 
#   Merge http://linux.bkbits.net/linux-2.5
#   into debian.org:/usr/src/kernel/ieee1394-2.6
# 
# drivers/ieee1394/ohci1394.c
#   2004/03/16 09:11:46-05:00 bcollins@debian.org +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/03/15 22:36:09-08:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/raw1394.c
#   2004/03/15 22:35:51-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/03/14 10:47:45-08:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/ohci1394.c
#   2004/03/14 10:47:30-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/03/11 15:46:42-05:00 weihs@linux1394.org 
#   IEEE1394/Lynx(r1182): Explicitly set LCtrl bit in phy register set.
# 
# drivers/ieee1394/pcilynx.c
#   2004/03/11 15:45:50-05:00 weihs@linux1394.org +3 -3
#   Explicitly set LCtrl bit in phy register set.
# 
# ChangeSet
#   2004/03/11 15:44:40-05:00 kberg@linux1394.org 
#   [IEEE1394/OHCI]: Deal with some OHCI implementations that have an invalid max_rec field.
# 
# drivers/ieee1394/ohci1394.c
#   2004/03/11 15:43:09-05:00 kberg@linux1394.org +33 -0
#   Deal with some OHCI implementations that have an invalid max_rec field.
# 
# ChangeSet
#   2004/02/29 13:00:49-08:00 akpm@mnm.(none) 
#   Merge bk://bk.phunnypharm.org/ieee1394-2.6
#   into mnm.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/eth1394.c
#   2004/02/29 13:00:43-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/02/28 17:38:26-08:00 akpm@mnm.(none) 
#   Merge bk://bk.phunnypharm.org/ieee1394-2.6
#   into mnm.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/eth1394.c
#   2004/02/28 17:38:19-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/02/25 11:52:33-08:00 akpm@mnm.(none) 
#   Merge mnm.(none):/usr/src/bk25 into mnm.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/raw1394.c
#   2004/02/25 11:52:26-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/02/23 20:27:32-08:00 akpm@mnm.(none) 
#   Merge bk://bk.phunnypharm.org/ieee1394-2.6
#   into mnm.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/eth1394.c
#   2004/02/23 20:27:25-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/02/21 19:47:09-08:00 akpm@mnm.(none) 
#   Merge bk://bk.phunnypharm.org/ieee1394-2.6
#   into mnm.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/eth1394.c
#   2004/02/21 19:47:02-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/02/19 20:49:17-08:00 akpm@mnm.(none) 
#   Merge bk://bk.phunnypharm.org/ieee1394-2.6
#   into mnm.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/raw1394.c
#   2004/02/19 20:49:10-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/02/17 12:55:02-08:00 akpm@mnm.(none) 
#   Merge bk://bk.phunnypharm.org/ieee1394-2.6
#   into mnm.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/raw1394.c
#   2004/02/17 12:54:56-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
# drivers/ieee1394/highlevel.c
#   2004/02/17 12:54:56-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
# drivers/ieee1394/eth1394.c
#   2004/02/17 12:54:56-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/02/10 12:21:26-08:00 akpm@mnm.(none) 
#   Merge bk://bk.phunnypharm.org/ieee1394-2.6
#   into mnm.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/raw1394.c
#   2004/02/10 12:21:19-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
# drivers/ieee1394/eth1394.c
#   2004/02/10 12:21:19-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/02/09 18:01:13-08:00 akpm@mnm.(none) 
#   Merge mnm.(none):/usr/src/bk25 into mnm.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/raw1394.c
#   2004/02/09 18:01:06-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/02/06 22:52:03-08:00 akpm@mnm.(none) 
#   Merge mnm.(none):/usr/src/bk25 into mnm.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/eth1394.c
#   2004/02/06 22:51:57-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/02/05 13:35:21-08:00 akpm@mnm.(none) 
#   Merge bk://bk.phunnypharm.org/ieee1394-2.6
#   into mnm.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/highlevel.c
#   2004/02/05 13:35:15-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/02/04 12:01:28-08:00 akpm@mnm.(none) 
#   Merge bk://bk.phunnypharm.org/ieee1394-2.6
#   into mnm.(none):/usr/src/bk-ieee1394
# 
# drivers/ieee1394/highlevel.c
#   2004/02/04 12:01:22-08:00 akpm@mnm.(none) +0 -0
#   Auto merged
# 
diff -Nru a/drivers/ieee1394/ohci1394.c b/drivers/ieee1394/ohci1394.c
--- a/drivers/ieee1394/ohci1394.c	Tue Mar 30 20:10:23 2004
+++ b/drivers/ieee1394/ohci1394.c	Tue Mar 30 20:10:23 2004
@@ -620,6 +620,39 @@
 		if (status & 0x20)
 			set_phy_reg(ohci, 8, status & ~1);
 	}
+
+        /* Serial EEPROM Sanity check. */
+        if ((ohci->max_packet_size < 512) ||
+	    (ohci->max_packet_size > 4096)) {
+		/* Serial EEPROM contents are suspect, set a sane max packet
+		 * size and print the raw contents for bug reports if verbose
+		 * debug is enabled. */
+#ifdef CONFIG_IEEE1394_VERBOSEDEBUG
+		int i;
+#endif
+
+		PRINT(KERN_DEBUG, "Serial EEPROM has suspicious values, "
+                      "attempting to setting max_packet_size to 512 bytes");
+		reg_write(ohci, OHCI1394_BusOptions,
+			  (reg_read(ohci, OHCI1394_BusOptions) & 0xf007) | 0x8002);
+		ohci->max_packet_size = 512;
+#ifdef CONFIG_IEEE1394_VERBOSEDEBUG
+		PRINT(KERN_DEBUG, "    EEPROM Present: %d",
+		      (reg_read(ohci, OHCI1394_Version) >> 24) & 0x1);
+		reg_write(ohci, OHCI1394_GUID_ROM, 0x80000000);
+
+		for (i = 0; 
+		     ((i < 1000) &&
+		      (reg_read(ohci, OHCI1394_GUID_ROM) & 0x80000000)); i++)
+			udelay(10);
+
+		for (i = 0; i < 0x20; i++) {
+			reg_write(ohci, OHCI1394_GUID_ROM, 0x02000000);
+			PRINT(KERN_DEBUG, "    EEPROM %02x: %02x", i,
+			      (reg_read(ohci, OHCI1394_GUID_ROM) >> 16) & 0xff);
+		}
+#endif
+	}
 }
 
 /* 
diff -Nru a/drivers/ieee1394/pcilynx.c b/drivers/ieee1394/pcilynx.c
--- a/drivers/ieee1394/pcilynx.c	Tue Mar 30 20:10:23 2004
+++ b/drivers/ieee1394/pcilynx.c	Tue Mar 30 20:10:23 2004
@@ -1460,7 +1460,7 @@
                 reg_write(lynx, PCI_INT_ENABLE, 0);
                 free_irq(lynx->dev->irq, lynx);
 
-		/* Disable IRM Contender */
+		/* Disable IRM Contender and LCtrl */
 		if (lynx->phyic.reg_1394a)
 			set_phy_reg(lynx, 4, ~0xc0 & get_phy_reg(lynx, 4));
 
@@ -1788,12 +1788,12 @@
                 reg_set_bits(lynx, GPIO_CTRL_A, 0x1);
                 reg_write(lynx, GPIO_DATA_BASE + 0x3c, 0x1); 
         } else {
-                /* set the contender bit in the extended PHY register
+                /* set the contender and LCtrl bit in the extended PHY register
                  * set. (Should check that bis 0,1,2 (=0xE0) is set
                  * in register 2?)
                  */
                 i = get_phy_reg(lynx, 4);
-                if (i != -1) set_phy_reg(lynx, 4, i | 0x40);
+                if (i != -1) set_phy_reg(lynx, 4, i | 0xc0);
         }