b44 support for new compaqs

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

 



Hi!

New HP notebooks have network card that is unknown to b44.c Simply
adding PCI ids does not do the drick, card kills machine up during
disabling of interrupts on unitinialized card.

I also added some comments while trying to compare b44 with
bcm4400...

It seems to work here, please apply.
								Pavel

--- clean-pavel/drivers/net/b44.c	2004-03-11 22:23:40.000000000 +0100
+++ linux/drivers/net/b44.c	2004-03-11 22:21:24.000000000 +0100
@@ -2,6 +2,9 @@
  *
  * Copyright (C) 2002 David S. Miller (davem@redhat.com)
  * Fixed by Pekka Pietikainen (pp@ee.oulu.fi)
+ * Copyright (C) 2004 Pavel Machek (pavel@suse.cz)
+ *
+ * Distribute under GPL.
  */
 
 #include <linux/kernel.h>
@@ -25,8 +28,8 @@
 
 #define DRV_MODULE_NAME		"b44"
 #define PFX DRV_MODULE_NAME	": "
-#define DRV_MODULE_VERSION	"0.92"
-#define DRV_MODULE_RELDATE	"Nov 4, 2003"
+#define DRV_MODULE_VERSION	"0.93"
+#define DRV_MODULE_RELDATE	"Mar, 2004"
 
 #define B44_DEF_MSG_ENABLE	  \
 	(NETIF_MSG_DRV		| \
@@ -83,6 +86,10 @@
 static struct pci_device_id b44_pci_tbl[] = {
 	{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_BCM4401,
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
+	{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_BCM4401B0,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
+	{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_BCM4401B1,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
 	{ }	/* terminate list with empty entry */
 };
 
@@ -1174,7 +1181,6 @@
 {
 	u32 val;
 
-	b44_disable_ints(bp);
 	b44_chip_reset(bp);
 	b44_phy_reset(bp);
 	b44_setup_phy(bp);
--- clean-pavel/drivers/net/b44.h	2004-03-11 22:23:40.000000000 +0100
+++ linux/drivers/net/b44.h	2004-03-11 21:22:30.000000000 +0100
@@ -1,8 +1,9 @@
 #ifndef _B44_H
 #define _B44_H
 
-/* Register layout. */
+/* Register layout. (These correspond to struct _bcmenettregs in bcm4400.) */
 #define	B44_DEVCTRL	0x0000UL /* Device Control */
+#define  DEVCTRL_MPM		0x00000040 /* Magic Packet PME Enable (B0 only) */
 #define  DEVCTRL_PFE		0x00000080 /* Pattern Filtering Enable */
 #define  DEVCTRL_IPP		0x00000400 /* Internal EPHY Present */
 #define  DEVCTRL_EPR		0x00008000 /* EPHY Reset */
@@ -24,6 +25,7 @@
 #define  WKUP_LEN_P3_SHIFT	24
 #define  WKUP_LEN_D3		0x80000000
 #define B44_ISTAT	0x0020UL /* Interrupt Status */
+#define  ISTAT_LS		0x00000020 /* Link Change (B0 only) */
 #define  ISTAT_PME		0x00000040 /* Power Management Event */
 #define  ISTAT_TO		0x00000080 /* General Purpose Timeout */
 #define  ISTAT_DSCE		0x00000400 /* Descriptor Error */
@@ -41,6 +43,8 @@
 #define B44_IMASK	0x0024UL /* Interrupt Mask */
 #define  IMASK_DEF		(ISTAT_ERRORS | ISTAT_TO | ISTAT_RX | ISTAT_TX)
 #define B44_GPTIMER	0x0028UL /* General Purpose Timer */
+#define B44_ADDR_LO	0x0088UL /* ENET Address Lo (B0 only) */
+#define B44_ADDR_HI	0x008CUL /* ENET Address Hi (B0 only) */
 #define B44_FILT_ADDR	0x0090UL /* ENET Filter Address */
 #define B44_FILT_DATA	0x0094UL /* ENET Filter Data */
 #define B44_TXBURST	0x00A0UL /* TX Max Burst Length */
--- clean-pavel/include/linux/pci_ids.h	2004-02-20 12:39:35.000000000 +0100
+++ linux/include/linux/pci_ids.h	2004-03-11 22:20:38.000000000 +0100
@@ -1824,6 +1824,8 @@
 #define PCI_DEVICE_ID_TIGON3_5901	0x170d
 #define PCI_DEVICE_ID_TIGON3_5901_2	0x170e
 #define PCI_DEVICE_ID_BCM4401		0x4401
+#define PCI_DEVICE_ID_BCM4401B0		0x4402
+#define PCI_DEVICE_ID_BCM4401B1		0x170c
 
 #define PCI_VENDOR_ID_SYBA		0x1592
 #define PCI_DEVICE_ID_SYBA_2P_EPP	0x0782

-- 
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]
-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux