dl2k: add Sundance/Tamarack TC902x Gigabit Ethernet Adapter support
authorKomuro <komurojun@nifty.com>
Mon, 13 Aug 2007 00:45:41 +0000 (09:45 +0900)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 10 Oct 2007 23:50:42 +0000 (16:50 -0700)
Actually, D-Link modified the VendorID/ProductID of the TC902x.
The TC902x is the original chipset.

Signed-off-by: Komuro <komurojun-mbn@nifty.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/Kconfig
drivers/net/dl2k.c
drivers/net/dl2k.h

index 502dd0eb8809a76dee7c5b9d26ff43557f3dd176..eeac2f49aae3dd8717225edc778deb1ecb2893d3 100644 (file)
@@ -1995,14 +1995,15 @@ config ACENIC_OMIT_TIGON_I
          The safe and default value for this is N.
 
 config DL2K
-       tristate "D-Link DL2000-based Gigabit Ethernet support"
+       tristate "DL2000/TC902x-based Gigabit Ethernet support"
        depends on PCI
        select CRC32
        help
-         This driver supports D-Link 2000-based gigabit ethernet cards, which
-         includes
+         This driver supports DL2000/TC902x-based Gigabit ethernet cards,
+         which includes
          D-Link DGE-550T Gigabit Ethernet Adapter.
          D-Link DL2000-based Gigabit Ethernet Adapter.
+         Sundance/Tamarack TC902x Gigabit Ethernet Adapter.
 
          To compile this driver as a module, choose M here: the
          module will be called dl2k.
index 04e3710c908269e3510a9492296ee041e75e717b..ca21a1888ffa329894392c1c538316fd08e988a3 100644 (file)
@@ -10,9 +10,9 @@
     (at your option) any later version.
 */
 
-#define DRV_NAME       "D-Link DL2000-based linux driver"
-#define DRV_VERSION    "v1.18"
-#define DRV_RELDATE    "2006/06/27"
+#define DRV_NAME       "DL2000/TC902x-based linux driver"
+#define DRV_VERSION    "v1.19"
+#define DRV_RELDATE    "2007/08/12"
 #include "dl2k.h"
 #include <linux/dma-mapping.h>
 
@@ -339,17 +339,24 @@ parse_eeprom (struct net_device *dev)
 #ifdef MEM_MAPPING
        ioaddr = dev->base_addr;
 #endif
-       /* Check CRC */
-       crc = ~ether_crc_le (256 - 4, sromdata);
-       if (psrom->crc != crc) {
-               printk (KERN_ERR "%s: EEPROM data CRC error.\n", dev->name);
-               return -1;
+       if (np->pdev->vendor == PCI_VENDOR_ID_DLINK) {  /* D-Link Only */
+               /* Check CRC */
+               crc = ~ether_crc_le (256 - 4, sromdata);
+               if (psrom->crc != crc) {
+                       printk (KERN_ERR "%s: EEPROM data CRC error.\n",
+                                       dev->name);
+                       return -1;
+               }
        }
 
        /* Set MAC address */
        for (i = 0; i < 6; i++)
                dev->dev_addr[i] = psrom->mac_addr[i];
 
+       if (np->pdev->vendor != PCI_VENDOR_ID_DLINK) {
+               return 0;
+       }
+
        /* Parse Software Information Block */
        i = 0x30;
        psib = (u8 *) sromdata;
index e443065a452e690600b647250cedb2ababf1e8ab..5b801775f42dea3806b814a3424ae9880015a8a7 100644 (file)
@@ -692,6 +692,7 @@ struct netdev_private {
 
 static const struct pci_device_id rio_pci_tbl[] = {
        {0x1186, 0x4000, PCI_ANY_ID, PCI_ANY_ID, },
+       {0x13f0, 0x1021, PCI_ANY_ID, PCI_ANY_ID, },
        { }
 };
 MODULE_DEVICE_TABLE (pci, rio_pci_tbl);