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