diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/tulip/media.c | 36 | ||||
-rw-r--r-- | drivers/net/tulip/timer.c | 1 | ||||
-rw-r--r-- | drivers/net/tulip/tulip.h | 8 | ||||
-rw-r--r-- | drivers/net/tulip/tulip_core.c | 34 |
4 files changed, 13 insertions, 66 deletions
diff --git a/drivers/net/tulip/media.c b/drivers/net/tulip/media.c index e26c31f944bf..f53396fe79c9 100644 --- a/drivers/net/tulip/media.c +++ b/drivers/net/tulip/media.c | |||
@@ -81,25 +81,6 @@ int tulip_mdio_read(struct net_device *dev, int phy_id, int location) | |||
81 | return retval & 0xffff; | 81 | return retval & 0xffff; |
82 | } | 82 | } |
83 | 83 | ||
84 | if(tp->chip_id == ULI526X && tp->revision >= 0x40) { | ||
85 | int value; | ||
86 | int i = 1000; | ||
87 | |||
88 | value = ioread32(ioaddr + CSR9); | ||
89 | iowrite32(value & 0xFFEFFFFF, ioaddr + CSR9); | ||
90 | |||
91 | value = (phy_id << 21) | (location << 16) | 0x08000000; | ||
92 | iowrite32(value, ioaddr + CSR10); | ||
93 | |||
94 | while(--i > 0) { | ||
95 | mdio_delay(); | ||
96 | if(ioread32(ioaddr + CSR10) & 0x10000000) | ||
97 | break; | ||
98 | } | ||
99 | retval = ioread32(ioaddr + CSR10); | ||
100 | spin_unlock_irqrestore(&tp->mii_lock, flags); | ||
101 | return retval & 0xFFFF; | ||
102 | } | ||
103 | /* Establish sync by sending at least 32 logic ones. */ | 84 | /* Establish sync by sending at least 32 logic ones. */ |
104 | for (i = 32; i >= 0; i--) { | 85 | for (i = 32; i >= 0; i--) { |
105 | iowrite32(MDIO_ENB | MDIO_DATA_WRITE1, mdio_addr); | 86 | iowrite32(MDIO_ENB | MDIO_DATA_WRITE1, mdio_addr); |
@@ -159,23 +140,6 @@ void tulip_mdio_write(struct net_device *dev, int phy_id, int location, int val) | |||
159 | spin_unlock_irqrestore(&tp->mii_lock, flags); | 140 | spin_unlock_irqrestore(&tp->mii_lock, flags); |
160 | return; | 141 | return; |
161 | } | 142 | } |
162 | if (tp->chip_id == ULI526X && tp->revision >= 0x40) { | ||
163 | int value; | ||
164 | int i = 1000; | ||
165 | |||
166 | value = ioread32(ioaddr + CSR9); | ||
167 | iowrite32(value & 0xFFEFFFFF, ioaddr + CSR9); | ||
168 | |||
169 | value = (phy_id << 21) | (location << 16) | 0x04000000 | (val & 0xFFFF); | ||
170 | iowrite32(value, ioaddr + CSR10); | ||
171 | |||
172 | while(--i > 0) { | ||
173 | if (ioread32(ioaddr + CSR10) & 0x10000000) | ||
174 | break; | ||
175 | } | ||
176 | spin_unlock_irqrestore(&tp->mii_lock, flags); | ||
177 | return; | ||
178 | } | ||
179 | 143 | ||
180 | /* Establish sync by sending 32 logic ones. */ | 144 | /* Establish sync by sending 32 logic ones. */ |
181 | for (i = 32; i >= 0; i--) { | 145 | for (i = 32; i >= 0; i--) { |
diff --git a/drivers/net/tulip/timer.c b/drivers/net/tulip/timer.c index 691568283553..e058a9fbfe88 100644 --- a/drivers/net/tulip/timer.c +++ b/drivers/net/tulip/timer.c | |||
@@ -39,7 +39,6 @@ void tulip_timer(unsigned long data) | |||
39 | case MX98713: | 39 | case MX98713: |
40 | case COMPEX9881: | 40 | case COMPEX9881: |
41 | case DM910X: | 41 | case DM910X: |
42 | case ULI526X: | ||
43 | default: { | 42 | default: { |
44 | struct medialeaf *mleaf; | 43 | struct medialeaf *mleaf; |
45 | unsigned char *p; | 44 | unsigned char *p; |
diff --git a/drivers/net/tulip/tulip.h b/drivers/net/tulip/tulip.h index 20346d847d9e..05d2d96f7be2 100644 --- a/drivers/net/tulip/tulip.h +++ b/drivers/net/tulip/tulip.h | |||
@@ -88,7 +88,6 @@ enum chips { | |||
88 | I21145, | 88 | I21145, |
89 | DM910X, | 89 | DM910X, |
90 | CONEXANT, | 90 | CONEXANT, |
91 | ULI526X | ||
92 | }; | 91 | }; |
93 | 92 | ||
94 | 93 | ||
@@ -482,11 +481,8 @@ static inline void tulip_stop_rxtx(struct tulip_private *tp) | |||
482 | 481 | ||
483 | static inline void tulip_restart_rxtx(struct tulip_private *tp) | 482 | static inline void tulip_restart_rxtx(struct tulip_private *tp) |
484 | { | 483 | { |
485 | if(!(tp->chip_id == ULI526X && | 484 | tulip_stop_rxtx(tp); |
486 | (tp->revision == 0x40 || tp->revision == 0x50))) { | 485 | udelay(5); |
487 | tulip_stop_rxtx(tp); | ||
488 | udelay(5); | ||
489 | } | ||
490 | tulip_start_rxtx(tp); | 486 | tulip_start_rxtx(tp); |
491 | } | 487 | } |
492 | 488 | ||
diff --git a/drivers/net/tulip/tulip_core.c b/drivers/net/tulip/tulip_core.c index d45d8f56e5b4..05da5bea564c 100644 --- a/drivers/net/tulip/tulip_core.c +++ b/drivers/net/tulip/tulip_core.c | |||
@@ -199,9 +199,6 @@ struct tulip_chip_table tulip_tbl[] = { | |||
199 | { "Conexant LANfinity", 256, 0x0001ebef, | 199 | { "Conexant LANfinity", 256, 0x0001ebef, |
200 | HAS_MII | HAS_ACPI, tulip_timer }, | 200 | HAS_MII | HAS_ACPI, tulip_timer }, |
201 | 201 | ||
202 | /* ULi526X */ | ||
203 | { "ULi M5261/M5263", 128, 0x0001ebef, | ||
204 | HAS_MII | HAS_MEDIA_TABLE | CSR12_IN_SROM | HAS_ACPI, tulip_timer }, | ||
205 | }; | 202 | }; |
206 | 203 | ||
207 | 204 | ||
@@ -239,8 +236,6 @@ static struct pci_device_id tulip_pci_tbl[] = { | |||
239 | { 0x1737, 0xAB09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, | 236 | { 0x1737, 0xAB09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, |
240 | { 0x1737, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, | 237 | { 0x1737, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, |
241 | { 0x17B3, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, | 238 | { 0x17B3, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, |
242 | { 0x10b9, 0x5261, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ULI526X }, /* ALi 1563 integrated ethernet */ | ||
243 | { 0x10b9, 0x5263, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ULI526X }, /* ALi 1563 integrated ethernet */ | ||
244 | { 0x10b7, 0x9300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* 3Com 3CSOHO100B-TX */ | 239 | { 0x10b7, 0x9300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* 3Com 3CSOHO100B-TX */ |
245 | { 0x14ea, 0xab08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* Planex FNW-3602-TX */ | 240 | { 0x14ea, 0xab08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* Planex FNW-3602-TX */ |
246 | { } /* terminate list */ | 241 | { } /* terminate list */ |
@@ -522,7 +517,7 @@ static void tulip_tx_timeout(struct net_device *dev) | |||
522 | dev->name); | 517 | dev->name); |
523 | } else if (tp->chip_id == DC21140 || tp->chip_id == DC21142 | 518 | } else if (tp->chip_id == DC21140 || tp->chip_id == DC21142 |
524 | || tp->chip_id == MX98713 || tp->chip_id == COMPEX9881 | 519 | || tp->chip_id == MX98713 || tp->chip_id == COMPEX9881 |
525 | || tp->chip_id == DM910X || tp->chip_id == ULI526X) { | 520 | || tp->chip_id == DM910X) { |
526 | printk(KERN_WARNING "%s: 21140 transmit timed out, status %8.8x, " | 521 | printk(KERN_WARNING "%s: 21140 transmit timed out, status %8.8x, " |
527 | "SIA %8.8x %8.8x %8.8x %8.8x, resetting...\n", | 522 | "SIA %8.8x %8.8x %8.8x %8.8x, resetting...\n", |
528 | dev->name, ioread32(ioaddr + CSR5), ioread32(ioaddr + CSR12), | 523 | dev->name, ioread32(ioaddr + CSR5), ioread32(ioaddr + CSR12), |
@@ -1103,18 +1098,16 @@ static void set_rx_mode(struct net_device *dev) | |||
1103 | entry = tp->cur_tx++ % TX_RING_SIZE; | 1098 | entry = tp->cur_tx++ % TX_RING_SIZE; |
1104 | 1099 | ||
1105 | if (entry != 0) { | 1100 | if (entry != 0) { |
1106 | /* Avoid a chip errata by prefixing a dummy entry. Don't do | 1101 | /* Avoid a chip errata by prefixing a dummy entry. */ |
1107 | this on the ULI526X as it triggers a different problem */ | 1102 | tp->tx_buffers[entry].skb = NULL; |
1108 | if (!(tp->chip_id == ULI526X && (tp->revision == 0x40 || tp->revision == 0x50))) { | 1103 | tp->tx_buffers[entry].mapping = 0; |
1109 | tp->tx_buffers[entry].skb = NULL; | 1104 | tp->tx_ring[entry].length = |
1110 | tp->tx_buffers[entry].mapping = 0; | 1105 | (entry == TX_RING_SIZE-1) ? cpu_to_le32(DESC_RING_WRAP) : 0; |
1111 | tp->tx_ring[entry].length = | 1106 | tp->tx_ring[entry].buffer1 = 0; |
1112 | (entry == TX_RING_SIZE-1) ? cpu_to_le32(DESC_RING_WRAP) : 0; | 1107 | /* Must set DescOwned later to avoid race with chip */ |
1113 | tp->tx_ring[entry].buffer1 = 0; | 1108 | dummy = entry; |
1114 | /* Must set DescOwned later to avoid race with chip */ | 1109 | entry = tp->cur_tx++ % TX_RING_SIZE; |
1115 | dummy = entry; | 1110 | |
1116 | entry = tp->cur_tx++ % TX_RING_SIZE; | ||
1117 | } | ||
1118 | } | 1111 | } |
1119 | 1112 | ||
1120 | tp->tx_buffers[entry].skb = NULL; | 1113 | tp->tx_buffers[entry].skb = NULL; |
@@ -1235,10 +1228,6 @@ static int tulip_uli_dm_quirk(struct pci_dev *pdev) | |||
1235 | { | 1228 | { |
1236 | if (pdev->vendor == 0x1282 && pdev->device == 0x9102) | 1229 | if (pdev->vendor == 0x1282 && pdev->device == 0x9102) |
1237 | return 1; | 1230 | return 1; |
1238 | if (pdev->vendor == 0x10b9 && pdev->device == 0x5261) | ||
1239 | return 1; | ||
1240 | if (pdev->vendor == 0x10b9 && pdev->device == 0x5263) | ||
1241 | return 1; | ||
1242 | return 0; | 1231 | return 0; |
1243 | } | 1232 | } |
1244 | 1233 | ||
@@ -1680,7 +1669,6 @@ static int __devinit tulip_init_one (struct pci_dev *pdev, | |||
1680 | switch (chip_idx) { | 1669 | switch (chip_idx) { |
1681 | case DC21140: | 1670 | case DC21140: |
1682 | case DM910X: | 1671 | case DM910X: |
1683 | case ULI526X: | ||
1684 | default: | 1672 | default: |
1685 | if (tp->mtable) | 1673 | if (tp->mtable) |
1686 | iowrite32(tp->mtable->csr12dir | 0x100, ioaddr + CSR12); | 1674 | iowrite32(tp->mtable->csr12dir | 0x100, ioaddr + CSR12); |