diff options
| author | Wim Van Sebroeck <wim@iguana.be> | 2007-05-11 19:03:13 +0000 | 
|---|---|---|
| committer | Wim Van Sebroeck <wim@iguana.be> | 2007-05-11 19:03:13 +0000 | 
| commit | 5c34202b8bf942da411b6599668a76b07449bbfd (patch) | |
| tree | 5719c361321eaddc8e4f1b0c8a7994f0e9a6fdd3 /drivers/net/sky2.c | |
| parent | 0d4804b31f91cfbcff6d62af0bc09a893a1c8ae0 (diff) | |
| parent | 1f8a6b658a943b4f04a1fc7b3a420360202c86cd (diff) | |
Merge /pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'drivers/net/sky2.c')
| -rw-r--r-- | drivers/net/sky2.c | 17 | 
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index 238c2ca34da..a307310f13f 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c @@ -124,10 +124,7 @@ static const struct pci_device_id sky2_id_table[] = {  	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4361) }, /* 88E8050 */  	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4362) }, /* 88E8053 */  	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4363) }, /* 88E8055 */ -#ifdef broken -	/* This device causes data corruption problems that are not resolved */  	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4364) }, /* 88E8056 */ -#endif  	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4366) }, /* 88EC036 */  	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4367) }, /* 88EC032 */  	{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4368) }, /* 88EC034 */ @@ -3581,10 +3578,21 @@ static int __devinit sky2_probe(struct pci_dev *pdev,  		goto err_out;  	} +	/* Some Gigabyte motherboards have 88e8056 but cause problems +	 * There is some unresolved hardware related problem that causes +	 * descriptor errors and receive data corruption. +	 */ +	if (pdev->vendor == PCI_VENDOR_ID_MARVELL && +	    pdev->device == 0x4364 && pdev->subsystem_vendor == 0x1458) { +		dev_err(&pdev->dev, +			"88E8056 on Gigabyte motherboards not supported\n"); +		goto err_out_disable; +	} +  	err = pci_request_regions(pdev, DRV_NAME);  	if (err) {  		dev_err(&pdev->dev, "cannot obtain PCI resources\n"); -		goto err_out; +		goto err_out_disable;  	}  	pci_set_master(pdev); @@ -3721,6 +3729,7 @@ err_out_free_hw:  	kfree(hw);  err_out_free_regions:  	pci_release_regions(pdev); +err_out_disable:  	pci_disable_device(pdev);  err_out:  	return err;  | 
