aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sky2.c
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@linux-foundation.org>2007-04-30 17:23:49 -0400
committerJeff Garzik <jeff@garzik.org>2007-05-08 01:23:09 -0400
commit44a1d2e5c5c935fff3a093a1bcede32912c76421 (patch)
tree28b91fd67d94f41b87aa3736e0b66f88298bda5b /drivers/net/sky2.c
parent8cb5f30a413e9b883b5e47637d9aee5e812dce24 (diff)
sky2: re-enable 88E8056 for most motherboards
This fixes the regression in 2.6.21 for users with 88e8056 on motherboard. Allow all but the Gigabyte motherboard has some unresolved bus problems. Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/sky2.c')
-rw-r--r--drivers/net/sky2.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 238c2ca34da6..a307310f13f5 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -124,10 +124,7 @@ static const struct pci_device_id sky2_id_table[] = {
124 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4361) }, /* 88E8050 */ 124 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4361) }, /* 88E8050 */
125 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4362) }, /* 88E8053 */ 125 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4362) }, /* 88E8053 */
126 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4363) }, /* 88E8055 */ 126 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4363) }, /* 88E8055 */
127#ifdef broken
128 /* This device causes data corruption problems that are not resolved */
129 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4364) }, /* 88E8056 */ 127 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4364) }, /* 88E8056 */
130#endif
131 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4366) }, /* 88EC036 */ 128 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4366) }, /* 88EC036 */
132 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4367) }, /* 88EC032 */ 129 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4367) }, /* 88EC032 */
133 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4368) }, /* 88EC034 */ 130 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4368) }, /* 88EC034 */
@@ -3581,10 +3578,21 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
3581 goto err_out; 3578 goto err_out;
3582 } 3579 }
3583 3580
3581 /* Some Gigabyte motherboards have 88e8056 but cause problems
3582 * There is some unresolved hardware related problem that causes
3583 * descriptor errors and receive data corruption.
3584 */
3585 if (pdev->vendor == PCI_VENDOR_ID_MARVELL &&
3586 pdev->device == 0x4364 && pdev->subsystem_vendor == 0x1458) {
3587 dev_err(&pdev->dev,
3588 "88E8056 on Gigabyte motherboards not supported\n");
3589 goto err_out_disable;
3590 }
3591
3584 err = pci_request_regions(pdev, DRV_NAME); 3592 err = pci_request_regions(pdev, DRV_NAME);
3585 if (err) { 3593 if (err) {
3586 dev_err(&pdev->dev, "cannot obtain PCI resources\n"); 3594 dev_err(&pdev->dev, "cannot obtain PCI resources\n");
3587 goto err_out; 3595 goto err_out_disable;
3588 } 3596 }
3589 3597
3590 pci_set_master(pdev); 3598 pci_set_master(pdev);
@@ -3721,6 +3729,7 @@ err_out_free_hw:
3721 kfree(hw); 3729 kfree(hw);
3722err_out_free_regions: 3730err_out_free_regions:
3723 pci_release_regions(pdev); 3731 pci_release_regions(pdev);
3732err_out_disable:
3724 pci_disable_device(pdev); 3733 pci_disable_device(pdev);
3725err_out: 3734err_out:
3726 return err; 3735 return err;