Commit 1703ecc7 authored by Jeff Garzik's avatar Jeff Garzik

/spare/repo/netdev-2.6 branch 'uli-tulip'

parents bf4e70e5 945a7876
...@@ -135,6 +135,18 @@ config DM9102 ...@@ -135,6 +135,18 @@ config DM9102
<file:Documentation/networking/net-modules.txt>. The module will <file:Documentation/networking/net-modules.txt>. The module will
be called dmfe. be called dmfe.
config ULI526X
tristate "ULi M526x controller support"
depends on NET_TULIP && PCI
select CRC32
---help---
This driver is for ULi M5261/M5263 10/100M Ethernet Controller
(<http://www.uli.com.tw/>).
To compile this driver as a module, choose M here and read
<file:Documentation/networking/net-modules.txt>. The module will
be called uli526x.
config PCMCIA_XIRCOM config PCMCIA_XIRCOM
tristate "Xircom CardBus support (new driver)" tristate "Xircom CardBus support (new driver)"
depends on NET_TULIP && CARDBUS depends on NET_TULIP && CARDBUS
......
...@@ -9,6 +9,7 @@ obj-$(CONFIG_WINBOND_840) += winbond-840.o ...@@ -9,6 +9,7 @@ obj-$(CONFIG_WINBOND_840) += winbond-840.o
obj-$(CONFIG_DE2104X) += de2104x.o obj-$(CONFIG_DE2104X) += de2104x.o
obj-$(CONFIG_TULIP) += tulip.o obj-$(CONFIG_TULIP) += tulip.o
obj-$(CONFIG_DE4X5) += de4x5.o obj-$(CONFIG_DE4X5) += de4x5.o
obj-$(CONFIG_ULI526X) += uli526x.o
# Declare multi-part drivers. # Declare multi-part drivers.
......
...@@ -81,25 +81,6 @@ int tulip_mdio_read(struct net_device *dev, int phy_id, int location) ...@@ -81,25 +81,6 @@ int tulip_mdio_read(struct net_device *dev, int phy_id, int location)
return retval & 0xffff; return retval & 0xffff;
} }
if(tp->chip_id == ULI526X && tp->revision >= 0x40) {
int value;
int i = 1000;
value = ioread32(ioaddr + CSR9);
iowrite32(value & 0xFFEFFFFF, ioaddr + CSR9);
value = (phy_id << 21) | (location << 16) | 0x08000000;
iowrite32(value, ioaddr + CSR10);
while(--i > 0) {
mdio_delay();
if(ioread32(ioaddr + CSR10) & 0x10000000)
break;
}
retval = ioread32(ioaddr + CSR10);
spin_unlock_irqrestore(&tp->mii_lock, flags);
return retval & 0xFFFF;
}
/* Establish sync by sending at least 32 logic ones. */ /* Establish sync by sending at least 32 logic ones. */
for (i = 32; i >= 0; i--) { for (i = 32; i >= 0; i--) {
iowrite32(MDIO_ENB | MDIO_DATA_WRITE1, mdio_addr); 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,23 +140,6 @@ void tulip_mdio_write(struct net_device *dev, int phy_id, int location, int val)
spin_unlock_irqrestore(&tp->mii_lock, flags); spin_unlock_irqrestore(&tp->mii_lock, flags);
return; return;
} }
if (tp->chip_id == ULI526X && tp->revision >= 0x40) {
int value;
int i = 1000;
value = ioread32(ioaddr + CSR9);
iowrite32(value & 0xFFEFFFFF, ioaddr + CSR9);
value = (phy_id << 21) | (location << 16) | 0x04000000 | (val & 0xFFFF);
iowrite32(value, ioaddr + CSR10);
while(--i > 0) {
if (ioread32(ioaddr + CSR10) & 0x10000000)
break;
}
spin_unlock_irqrestore(&tp->mii_lock, flags);
return;
}
/* Establish sync by sending 32 logic ones. */ /* Establish sync by sending 32 logic ones. */
for (i = 32; i >= 0; i--) { for (i = 32; i >= 0; i--) {
......
...@@ -39,7 +39,6 @@ void tulip_timer(unsigned long data) ...@@ -39,7 +39,6 @@ void tulip_timer(unsigned long data)
case MX98713: case MX98713:
case COMPEX9881: case COMPEX9881:
case DM910X: case DM910X:
case ULI526X:
default: { default: {
struct medialeaf *mleaf; struct medialeaf *mleaf;
unsigned char *p; unsigned char *p;
......
...@@ -88,7 +88,6 @@ enum chips { ...@@ -88,7 +88,6 @@ enum chips {
I21145, I21145,
DM910X, DM910X,
CONEXANT, CONEXANT,
ULI526X
}; };
...@@ -482,11 +481,8 @@ static inline void tulip_stop_rxtx(struct tulip_private *tp) ...@@ -482,11 +481,8 @@ static inline void tulip_stop_rxtx(struct tulip_private *tp)
static inline void tulip_restart_rxtx(struct tulip_private *tp) static inline void tulip_restart_rxtx(struct tulip_private *tp)
{ {
if(!(tp->chip_id == ULI526X &&
(tp->revision == 0x40 || tp->revision == 0x50))) {
tulip_stop_rxtx(tp); tulip_stop_rxtx(tp);
udelay(5); udelay(5);
}
tulip_start_rxtx(tp); tulip_start_rxtx(tp);
} }
......
...@@ -199,9 +199,6 @@ struct tulip_chip_table tulip_tbl[] = { ...@@ -199,9 +199,6 @@ struct tulip_chip_table tulip_tbl[] = {
{ "Conexant LANfinity", 256, 0x0001ebef, { "Conexant LANfinity", 256, 0x0001ebef,
HAS_MII | HAS_ACPI, tulip_timer }, HAS_MII | HAS_ACPI, tulip_timer },
/* ULi526X */
{ "ULi M5261/M5263", 128, 0x0001ebef,
HAS_MII | HAS_MEDIA_TABLE | CSR12_IN_SROM | HAS_ACPI, tulip_timer },
}; };
...@@ -239,8 +236,6 @@ static struct pci_device_id tulip_pci_tbl[] = { ...@@ -239,8 +236,6 @@ static struct pci_device_id tulip_pci_tbl[] = {
{ 0x1737, 0xAB09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, { 0x1737, 0xAB09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET },
{ 0x1737, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, { 0x1737, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET },
{ 0x17B3, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, { 0x17B3, 0xAB08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET },
{ 0x10b9, 0x5261, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ULI526X }, /* ALi 1563 integrated ethernet */
{ 0x10b9, 0x5263, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ULI526X }, /* ALi 1563 integrated ethernet */
{ 0x10b7, 0x9300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* 3Com 3CSOHO100B-TX */ { 0x10b7, 0x9300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* 3Com 3CSOHO100B-TX */
{ 0x14ea, 0xab08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* Planex FNW-3602-TX */ { 0x14ea, 0xab08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, /* Planex FNW-3602-TX */
{ } /* terminate list */ { } /* terminate list */
...@@ -522,7 +517,7 @@ static void tulip_tx_timeout(struct net_device *dev) ...@@ -522,7 +517,7 @@ static void tulip_tx_timeout(struct net_device *dev)
dev->name); dev->name);
} else if (tp->chip_id == DC21140 || tp->chip_id == DC21142 } else if (tp->chip_id == DC21140 || tp->chip_id == DC21142
|| tp->chip_id == MX98713 || tp->chip_id == COMPEX9881 || tp->chip_id == MX98713 || tp->chip_id == COMPEX9881
|| tp->chip_id == DM910X || tp->chip_id == ULI526X) { || tp->chip_id == DM910X) {
printk(KERN_WARNING "%s: 21140 transmit timed out, status %8.8x, " printk(KERN_WARNING "%s: 21140 transmit timed out, status %8.8x, "
"SIA %8.8x %8.8x %8.8x %8.8x, resetting...\n", "SIA %8.8x %8.8x %8.8x %8.8x, resetting...\n",
dev->name, ioread32(ioaddr + CSR5), ioread32(ioaddr + CSR12), dev->name, ioread32(ioaddr + CSR5), ioread32(ioaddr + CSR12),
...@@ -1103,9 +1098,7 @@ static void set_rx_mode(struct net_device *dev) ...@@ -1103,9 +1098,7 @@ static void set_rx_mode(struct net_device *dev)
entry = tp->cur_tx++ % TX_RING_SIZE; entry = tp->cur_tx++ % TX_RING_SIZE;
if (entry != 0) { if (entry != 0) {
/* Avoid a chip errata by prefixing a dummy entry. Don't do /* Avoid a chip errata by prefixing a dummy entry. */
this on the ULI526X as it triggers a different problem */
if (!(tp->chip_id == ULI526X && (tp->revision == 0x40 || tp->revision == 0x50))) {
tp->tx_buffers[entry].skb = NULL; tp->tx_buffers[entry].skb = NULL;
tp->tx_buffers[entry].mapping = 0; tp->tx_buffers[entry].mapping = 0;
tp->tx_ring[entry].length = tp->tx_ring[entry].length =
...@@ -1114,7 +1107,7 @@ static void set_rx_mode(struct net_device *dev) ...@@ -1114,7 +1107,7 @@ static void set_rx_mode(struct net_device *dev)
/* Must set DescOwned later to avoid race with chip */ /* Must set DescOwned later to avoid race with chip */
dummy = entry; dummy = entry;
entry = tp->cur_tx++ % TX_RING_SIZE; entry = tp->cur_tx++ % TX_RING_SIZE;
}
} }
tp->tx_buffers[entry].skb = NULL; tp->tx_buffers[entry].skb = NULL;
...@@ -1235,10 +1228,6 @@ static int tulip_uli_dm_quirk(struct pci_dev *pdev) ...@@ -1235,10 +1228,6 @@ static int tulip_uli_dm_quirk(struct pci_dev *pdev)
{ {
if (pdev->vendor == 0x1282 && pdev->device == 0x9102) if (pdev->vendor == 0x1282 && pdev->device == 0x9102)
return 1; return 1;
if (pdev->vendor == 0x10b9 && pdev->device == 0x5261)
return 1;
if (pdev->vendor == 0x10b9 && pdev->device == 0x5263)
return 1;
return 0; return 0;
} }
...@@ -1680,7 +1669,6 @@ static int __devinit tulip_init_one (struct pci_dev *pdev, ...@@ -1680,7 +1669,6 @@ static int __devinit tulip_init_one (struct pci_dev *pdev,
switch (chip_idx) { switch (chip_idx) {
case DC21140: case DC21140:
case DM910X: case DM910X:
case ULI526X:
default: default:
if (tp->mtable) if (tp->mtable)
iowrite32(tp->mtable->csr12dir | 0x100, ioaddr + CSR12); iowrite32(tp->mtable->csr12dir | 0x100, ioaddr + CSR12);
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment