diff options
author | Stephen Hemminger <shemminger@linux-foundation.org> | 2007-04-30 17:23:49 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-05-08 01:23:09 -0400 |
commit | 44a1d2e5c5c935fff3a093a1bcede32912c76421 (patch) | |
tree | 28b91fd67d94f41b87aa3736e0b66f88298bda5b /drivers/net/sky2.c | |
parent | 8cb5f30a413e9b883b5e47637d9aee5e812dce24 (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.c | 17 |
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); |
3722 | err_out_free_regions: | 3730 | err_out_free_regions: |
3723 | pci_release_regions(pdev); | 3731 | pci_release_regions(pdev); |
3732 | err_out_disable: | ||
3724 | pci_disable_device(pdev); | 3733 | pci_disable_device(pdev); |
3725 | err_out: | 3734 | err_out: |
3726 | return err; | 3735 | return err; |