Lines Matching +full:tx +full:- +full:termination +full:- +full:fix

1 // SPDX-License-Identifier: GPL-1.0+
4 A PCMCIA ethernet driver for NS8390-based cards
6 This driver supports the D-Link DE-650 and Linksys EthernetCard
7 cards, the newer D-Link and Linksys combo cards, Accton EN2212
8 cards, the RPTI EP400, and the PreMax PE-200 in non-shared-memory
10 Conrad ethernet card, and the Kingston KNE-PCM/x in shared-memory
13 Copyright (C) 1999 David A. Hinds -- dahinds@users.sourceforge.net
25 CCAE support. Drivers merged back together, and shared-memory
54 #define PCNET_DATAPORT 0x10 /* NatSemi-defined port window offset. */
58 #define PCNET_START_PG 0x40 /* First page of TX buffer */
65 #define PCNET_RDC_TIMEOUT (2*HZ/100) /* Max wait in jiffies for Tx RDC */
84 INT_MODULE_PARM(use_shmem, -1); /* use shared memory? */
135 { /* Allied Telesis LA-PCM */ 0x0ff0, 0x00, 0x00, 0xf4, 0 },
139 { /* Danpex EN-6200P2 */ 0x0110, 0x00, 0x40, 0xc7, 0 },
142 { /* D-Link DE-650 */ 0x0040, 0x00, 0x80, 0xc8, 0 },
143 { /* EP-210 Ethernet */ 0x0110, 0x00, 0x40, 0x33, 0 },
147 { /* ELECOM Laneed LD-CDWA */ 0xb8, 0x08, 0x00, 0x42, 0 },
159 { /* Kansai KLA-PCM/T */ 0x0ff0, 0x00, 0x60, 0x87,
169 { /* I-O DATA PCLA/T */ 0x0ff0, 0x00, 0xa0, 0xb0, 0 },
170 { /* Katron PE-520 */ 0x0110, 0x00, 0x40, 0xf6, 0 },
171 { /* Kingston KNE-PCM/x */ 0x0ff0, 0x00, 0xc0, 0xf0,
173 { /* Kingston KNE-PCM/x */ 0x0ff0, 0xe2, 0x0c, 0x0f,
175 { /* Kingston KNE-PC2 */ 0x0180, 0x00, 0xc0, 0xf0, 0 },
177 { /* NDC Instant-Link */ 0x003a, 0x00, 0x80, 0xc6, 0 },
183 { /* PreMax PE-200 */ 0x07f0, 0x00, 0x20, 0xe0, 0 },
188 { /* Socket LP-E CF+ */ 0x01c0, 0x00, 0xc0, 0x1b, 0 },
190 { /* Volktek NPL-402CT */ 0x0060, 0x00, 0x40, 0x05, 0 },
191 { /* NEC PC-9801N-J12 */ 0x0ff0, 0x00, 0x00, 0x4c, 0 },
240 dev_dbg(&link->dev, "pcnet_attach()\n"); in pcnet_probe()
244 if (!dev) return -ENOMEM; in pcnet_probe()
246 info->p_dev = link; in pcnet_probe()
247 link->priv = dev; in pcnet_probe()
249 link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO; in pcnet_probe()
251 dev->netdev_ops = &pcnet_netdev_ops; in pcnet_probe()
258 struct net_device *dev = link->priv; in pcnet_detach()
260 dev_dbg(&link->dev, "pcnet_detach\n"); in pcnet_detach()
278 struct net_device *dev = link->priv; in get_hwinfo()
284 link->resource[2]->flags |= WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; in get_hwinfo()
285 link->resource[2]->start = 0; link->resource[2]->end = 0; in get_hwinfo()
286 i = pcmcia_request_window(link, link->resource[2], 0); in get_hwinfo()
290 virt = ioremap(link->resource[2]->start, in get_hwinfo()
291 resource_size(link->resource[2])); in get_hwinfo()
293 pcmcia_release_window(link, link->resource[2]); in get_hwinfo()
298 pcmcia_map_mem_page(link, link->resource[2], in get_hwinfo()
299 hw_info[i].offset & ~(resource_size(link->resource[2])-1)); in get_hwinfo()
300 base = &virt[hw_info[i].offset & (resource_size(link->resource[2])-1)]; in get_hwinfo()
312 j = pcmcia_release_window(link, link->resource[2]); in get_hwinfo()
326 struct net_device *dev = link->priv; in get_prom()
327 unsigned int ioaddr = dev->base_addr; in get_prom()
337 {0x48, EN0_DCFG}, /* Set byte-wide (0x48) access. */ in get_prom()
382 struct net_device *dev = link->priv; in get_dl10019()
388 sum += inb_p(dev->base_addr + i); in get_dl10019()
392 addr[i] = inb_p(dev->base_addr + 0x14 + i); in get_dl10019()
394 i = inb(dev->base_addr + 0x1f); in get_dl10019()
406 struct net_device *dev = link->priv; in get_ax88190()
407 unsigned int ioaddr = dev->base_addr; in get_ax88190()
412 if (link->config_base != 0x03c0) in get_ax88190()
415 outb_p(0x01, ioaddr + EN0_DCFG); /* Set word-wide access. */ in get_ax88190()
439 struct net_device *dev = link->priv; in get_hwired()
458 link->resource[0]->flags &= ~IO_DATA_PATH_WIDTH; in try_io_port()
459 link->resource[1]->flags &= ~IO_DATA_PATH_WIDTH; in try_io_port()
460 if (link->resource[0]->end == 32) { in try_io_port()
461 link->resource[0]->flags |= IO_DATA_PATH_WIDTH_AUTO; in try_io_port()
462 if (link->resource[1]->end > 0) { in try_io_port()
464 link->resource[1]->flags |= IO_DATA_PATH_WIDTH_8; in try_io_port()
467 /* This should be two 16-port windows */ in try_io_port()
468 link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; in try_io_port()
469 link->resource[1]->flags |= IO_DATA_PATH_WIDTH_16; in try_io_port()
471 if (link->resource[0]->start == 0) { in try_io_port()
473 link->resource[0]->start = j ^ 0x300; in try_io_port()
474 link->resource[1]->start = (j ^ 0x300) + 0x10; in try_io_port()
475 link->io_lines = 16; in try_io_port()
491 *priv &= (p_dev->resource[2]->end >= 0x4000) ? 0x10 : ~0x10; in pcnet_confcheck()
493 if (p_dev->config_index == 0) in pcnet_confcheck()
494 return -EINVAL; in pcnet_confcheck()
496 if (p_dev->resource[0]->end + p_dev->resource[1]->end < 32) in pcnet_confcheck()
497 return -EINVAL; in pcnet_confcheck()
500 p_dev->io_lines = 16; in pcnet_confcheck()
507 struct net_device *dev = link->priv; in pcnet_try_config()
515 dev_warn(&link->dev, "no useable port range found\n"); in pcnet_try_config()
520 if (!link->irq) in pcnet_try_config()
523 if (resource_size(link->resource[1]) == 8) in pcnet_try_config()
524 link->config_flags |= CONF_ENABLE_SPKR; in pcnet_try_config()
526 if ((link->manf_id == MANFID_IBM) && in pcnet_try_config()
527 (link->card_id == PRODID_IBM_HOME_AND_AWAY)) in pcnet_try_config()
528 link->config_index |= 0x10; in pcnet_try_config()
534 dev->irq = link->irq; in pcnet_try_config()
535 dev->base_addr = link->resource[0]->start; in pcnet_try_config()
537 if (info->flags & HAS_MISC_REG) { in pcnet_try_config()
539 dev->if_port = if_port; in pcnet_try_config()
541 dev_notice(&link->dev, "invalid if_port requested\n"); in pcnet_try_config()
543 dev->if_port = 0; in pcnet_try_config()
545 if ((link->config_base == 0x03c0) && in pcnet_try_config()
546 (link->manf_id == 0x149) && (link->card_id == 0xc1ab)) { in pcnet_try_config()
547 dev_info(&link->dev, in pcnet_try_config()
548 "this is an AX88190 card - use axnet_cs instead.\n"); in pcnet_try_config()
567 struct net_device *dev = link->priv; in pcnet_config()
573 dev_dbg(&link->dev, "pcnet_config\n"); in pcnet_config()
581 dev_notice(&link->dev, "unable to read hardware net" in pcnet_config()
582 " address for io base %#3lx\n", dev->base_addr); in pcnet_config()
587 info->flags = local_hw_info->flags; in pcnet_config()
589 info->flags |= (delay_output) ? DELAY_OUTPUT : 0; in pcnet_config()
590 if ((link->manf_id == MANFID_SOCKET) && in pcnet_config()
591 ((link->card_id == PRODID_SOCKET_LPE) || in pcnet_config()
592 (link->card_id == PRODID_SOCKET_LPE_CF) || in pcnet_config()
593 (link->card_id == PRODID_SOCKET_EIO))) in pcnet_config()
594 info->flags &= ~USE_BIG_BUF; in pcnet_config()
596 info->flags &= ~USE_BIG_BUF; in pcnet_config()
598 if (info->flags & USE_BIG_BUF) { in pcnet_config()
608 /* has_shmem is ignored if use_shmem != -1 */ in pcnet_config()
609 if ((use_shmem == 0) || (!has_shmem && (use_shmem == -1)) || in pcnet_config()
617 if (info->flags & (IS_DL10019|IS_DL10022)) in pcnet_config()
620 SET_NETDEV_DEV(dev, &link->dev); in pcnet_config()
627 if (info->flags & (IS_DL10019|IS_DL10022)) { in pcnet_config()
628 u_char id = inb(dev->base_addr + 0x1a); in pcnet_config()
630 (info->flags & IS_DL10022) ? 22 : 19, id); in pcnet_config()
631 if (info->pna_phy) in pcnet_config()
636 pr_cont("io %#3lx, irq %d,", dev->base_addr, dev->irq); in pcnet_config()
637 if (info->flags & USE_SHMEM) in pcnet_config()
638 pr_cont(" mem %#5lx,", dev->mem_start); in pcnet_config()
639 if (info->flags & HAS_MISC_REG) in pcnet_config()
640 pr_cont(" %s xcvr,", if_names[dev->if_port]); in pcnet_config()
641 pr_cont(" hw_addr %pM\n", dev->dev_addr); in pcnet_config()
646 return -ENODEV; in pcnet_config()
651 struct pcnet_dev *info = PRIV(link->priv); in pcnet_release()
653 dev_dbg(&link->dev, "pcnet_release\n"); in pcnet_release()
655 if (info->flags & USE_SHMEM) in pcnet_release()
656 iounmap(info->base); in pcnet_release()
663 struct net_device *dev = link->priv; in pcnet_suspend()
665 if (link->open) in pcnet_suspend()
673 struct net_device *dev = link->priv; in pcnet_resume()
675 if (link->open) { in pcnet_resume()
721 for (i = 13; i >= 0; i--) { in mdio_read()
726 for (i = 19; i > 0; i--) { in mdio_read()
740 for (i = 31; i >= 0; i--) { in mdio_write()
745 for (i = 1; i >= 0; i--) { in mdio_write()
778 for (i = 10; i >= 0; i--) { in read_eeprom()
785 for (i = 16; i > 0; i--) { in read_eeprom()
817 for (i = 9; i >= 0; i--) { in write_asic()
828 for (i = 15; i >= 0; i--) { in write_asic()
847 unsigned int nic_base = dev->base_addr; in set_misc_reg()
851 if (info->flags & HAS_MISC_REG) { in set_misc_reg()
853 if (dev->if_port == 2) in set_misc_reg()
855 if (info->flags & USE_BIG_BUF) in set_misc_reg()
857 if (info->flags & HAS_IBM_MISC) in set_misc_reg()
861 if (info->flags & IS_DL10022) { in set_misc_reg()
862 if (info->flags & HAS_MII) { in set_misc_reg()
864 mdio_write(nic_base + DLINK_GPIO, info->eth_phy, 4, 0x01e1); in set_misc_reg()
866 mdio_write(nic_base + DLINK_GPIO, info->eth_phy, 0, 0x0000); in set_misc_reg()
867 mdio_write(nic_base + DLINK_GPIO, info->eth_phy, 0, 0x1200); in set_misc_reg()
868 info->mii_reset = jiffies; in set_misc_reg()
872 } else if (info->flags & IS_DL10019) { in set_misc_reg()
874 mdio_write(nic_base + DLINK_GPIO, info->eth_phy, 4, 0x01e1); in set_misc_reg()
876 mdio_write(nic_base + DLINK_GPIO, info->eth_phy, 0, 0x0000); in set_misc_reg()
877 mdio_write(nic_base + DLINK_GPIO, info->eth_phy, 0, 0x1200); in set_misc_reg()
886 unsigned int mii_addr = dev->base_addr + DLINK_GPIO; in mii_phy_probe()
890 for (i = 31; i >= 0; i--) { in mii_phy_probe()
900 info->pna_phy = i; in mii_phy_probe()
902 info->eth_phy = i; in mii_phy_probe()
911 struct pcmcia_device *link = info->p_dev; in pcnet_open()
912 unsigned int nic_base = dev->base_addr; in pcnet_open()
914 dev_dbg(&link->dev, "pcnet_open('%s')\n", dev->name); in pcnet_open()
917 return -ENODEV; in pcnet_open()
922 ret = request_irq(dev->irq, ei_irq_wrapper, IRQF_SHARED, dev->name, dev); in pcnet_open()
926 link->open++; in pcnet_open()
928 info->phy_id = info->eth_phy; in pcnet_open()
929 info->link_status = 0x00; in pcnet_open()
930 timer_setup(&info->watchdog, ei_watchdog, 0); in pcnet_open()
931 mod_timer(&info->watchdog, jiffies + HZ); in pcnet_open()
941 struct pcmcia_device *link = info->p_dev; in pcnet_close()
943 dev_dbg(&link->dev, "pcnet_close('%s')\n", dev->name); in pcnet_close()
946 free_irq(dev->irq, dev); in pcnet_close()
948 link->open--; in pcnet_close()
950 del_timer_sync(&info->watchdog); in pcnet_close()
964 unsigned int nic_base = dev->base_addr; in pcnet_reset_8390()
992 if ((map->port != (u_char)(-1)) && (map->port != dev->if_port)) { in set_config()
993 if (!(info->flags & HAS_MISC_REG)) in set_config()
994 return -EOPNOTSUPP; in set_config()
995 else if ((map->port < 1) || (map->port > 2)) in set_config()
996 return -EINVAL; in set_config()
997 WRITE_ONCE(dev->if_port, map->port); in set_config()
998 netdev_info(dev, "switched to %s port\n", if_names[dev->if_port]); in set_config()
1014 info->stale = 0; in ei_irq_wrapper()
1022 struct net_device *dev = info->p_dev->priv; in ei_watchdog()
1023 unsigned int nic_base = dev->base_addr; in ei_watchdog()
1031 if (info->stale++ && (inb_p(nic_base + EN0_ISR) & ENISR_ALL)) { in ei_watchdog()
1032 if (!info->fast_poll) in ei_watchdog()
1034 ei_irq_wrapper(dev->irq, dev); in ei_watchdog()
1035 info->fast_poll = HZ; in ei_watchdog()
1037 if (info->fast_poll) { in ei_watchdog()
1038 info->fast_poll--; in ei_watchdog()
1039 info->watchdog.expires = jiffies + 1; in ei_watchdog()
1040 add_timer(&info->watchdog); in ei_watchdog()
1044 if (!(info->flags & HAS_MII)) in ei_watchdog()
1047 mdio_read(mii_addr, info->phy_id, 1); in ei_watchdog()
1048 link = mdio_read(mii_addr, info->phy_id, 1); in ei_watchdog()
1050 if (info->eth_phy) { in ei_watchdog()
1051 info->phy_id = info->eth_phy = 0; in ei_watchdog()
1054 info->flags &= ~HAS_MII; in ei_watchdog()
1060 if (link != info->link_status) { in ei_watchdog()
1061 u_short p = mdio_read(mii_addr, info->phy_id, 5); in ei_watchdog()
1063 if (link && (info->flags & IS_DL10022)) { in ei_watchdog()
1066 } else if (link && (info->flags & IS_DL10019)) { in ei_watchdog()
1068 write_asic(dev->base_addr, 4, (p & 0x140) ? DL19FDUPLX : 0); in ei_watchdog()
1071 if (info->phy_id == info->eth_phy) { in ei_watchdog()
1074 "%sbaseT-%cD selected\n", in ei_watchdog()
1082 info->link_status = link; in ei_watchdog()
1084 if (info->pna_phy && time_after(jiffies, info->mii_reset + 6*HZ)) { in ei_watchdog()
1085 link = mdio_read(mii_addr, info->eth_phy, 1) & 0x0004; in ei_watchdog()
1086 if (((info->phy_id == info->pna_phy) && link) || in ei_watchdog()
1087 ((info->phy_id != info->pna_phy) && !link)) { in ei_watchdog()
1089 mdio_write(mii_addr, info->phy_id, 0, 0x0400); in ei_watchdog()
1090 info->phy_id ^= info->pna_phy ^ info->eth_phy; in ei_watchdog()
1092 (info->phy_id == info->eth_phy) ? "ethernet" : "PNA"); in ei_watchdog()
1093 mdio_write(mii_addr, info->phy_id, 0, in ei_watchdog()
1094 (info->phy_id == info->eth_phy) ? 0x1000 : 0); in ei_watchdog()
1095 info->link_status = 0; in ei_watchdog()
1096 info->mii_reset = jiffies; in ei_watchdog()
1101 info->watchdog.expires = jiffies + HZ; in ei_watchdog()
1102 add_timer(&info->watchdog); in ei_watchdog()
1112 unsigned int mii_addr = dev->base_addr + DLINK_GPIO; in ei_ioctl()
1114 if (!(info->flags & (IS_DL10019|IS_DL10022))) in ei_ioctl()
1115 return -EINVAL; in ei_ioctl()
1119 data->phy_id = info->phy_id; in ei_ioctl()
1122 data->val_out = mdio_read(mii_addr, data->phy_id, data->reg_num & 0x1f); in ei_ioctl()
1125 mdio_write(mii_addr, data->phy_id, data->reg_num & 0x1f, data->val_in); in ei_ioctl()
1128 return -EOPNOTSUPP; in ei_ioctl()
1137 unsigned int nic_base = dev->base_addr; in dma_get_8390_hdr()
1156 /* Fix for big endian systems */ in dma_get_8390_hdr()
1157 hdr->count = le16_to_cpu(hdr->count); in dma_get_8390_hdr()
1168 unsigned int nic_base = dev->base_addr; in dma_block_input()
1170 char *buf = skb->data; in dma_block_input()
1191 buf[count-1] = inb(nic_base + PCNET_DATAPORT); in dma_block_input()
1198 /* DMA termination address check... */ in dma_block_input()
1203 -- it's broken for Rx on some cards! */ in dma_block_input()
1209 } while (--tries > 0); in dma_block_input()
1225 unsigned int nic_base = dev->base_addr; in dma_block_output()
1272 /* DMA termination address check... */ in dma_block_output()
1281 } while (--tries > 0); in dma_block_output()
1283 netdev_notice(dev, "Tx packet transfer address mismatch," in dma_block_output()
1294 netdev_warn(dev, "timeout waiting for Tx RDC.\n"); in dma_block_output()
1301 if (info->flags & DELAY_OUTPUT) in dma_block_output()
1311 struct net_device *dev = link->priv; in setup_dma_config()
1338 do { *d++ = __raw_readw(s++); } while (--c); in copyin()
1356 do { __raw_writew(*s++, d++); } while (--c); in copyout()
1358 /* copy last byte doing a read-modify-write */ in copyout()
1371 - (ei_status.rx_start_page << 8); in shmem_get_8390_hdr()
1374 /* Fix for big endian systems */ in shmem_get_8390_hdr()
1375 hdr->count = le16_to_cpu(hdr->count); in shmem_get_8390_hdr()
1385 - (ei_status.rx_start_page << 8); in shmem_block_input()
1386 char *buf = skb->data; in shmem_block_input()
1390 int semi_count = ei_status.priv - offset; in shmem_block_input()
1394 count -= semi_count; in shmem_block_input()
1405 shmem -= ei_status.tx_start_page << 8; in shmem_block_output()
1414 struct net_device *dev = link->priv; in setup_shmem_window()
1418 window_size = (stop_pg - start_pg) << 8; in setup_shmem_window()
1426 link->resource[3]->flags |= WIN_DATA_WIDTH_16|WIN_MEMORY_TYPE_CM|WIN_ENABLE; in setup_shmem_window()
1427 link->resource[3]->flags |= WIN_USE_WAIT; in setup_shmem_window()
1428 link->resource[3]->start = 0; link->resource[3]->end = window_size; in setup_shmem_window()
1429 ret = pcmcia_request_window(link, link->resource[3], mem_speed); in setup_shmem_window()
1434 offset -= offset % window_size; in setup_shmem_window()
1435 ret = pcmcia_map_mem_page(link, link->resource[3], offset); in setup_shmem_window()
1440 info->base = ioremap(link->resource[3]->start, in setup_shmem_window()
1441 resource_size(link->resource[3])); in setup_shmem_window()
1442 if (unlikely(!info->base)) { in setup_shmem_window()
1443 ret = -ENOMEM; in setup_shmem_window()
1448 __raw_writew((i>>1), info->base+offset+i); in setup_shmem_window()
1451 if (__raw_readw(info->base+offset+i) != (i>>1)) break; in setup_shmem_window()
1454 iounmap(info->base); in setup_shmem_window()
1455 pcmcia_release_window(link, link->resource[3]); in setup_shmem_window()
1456 info->base = NULL; in setup_shmem_window()
1460 ei_status.mem = info->base + offset; in setup_shmem_window()
1461 ei_status.priv = resource_size(link->resource[3]); in setup_shmem_window()
1462 dev->mem_start = (u_long)ei_status.mem; in setup_shmem_window()
1463 dev->mem_end = dev->mem_start + resource_size(link->resource[3]); in setup_shmem_window()
1468 (resource_size(link->resource[3]) - offset) >> 8); in setup_shmem_window()
1475 info->flags |= USE_SHMEM; in setup_shmem_window()
1493 PCMCIA_PFC_DEVICE_PROD_ID12(0, "ATKK", "LM33-PCM-T", 0xba9eb7e2, 0x077c174e),
1494 PCMCIA_PFC_DEVICE_PROD_ID12(0, "D-Link", "DME336T", 0x1a424a1c, 0xb23897ff),
1498 PCMCIA_PFC_DEVICE_PROD_ID12(0, "MICRO RESEARCH", "COMBO-L/M-336", 0xb2ced065, 0x3ced0555),
1504 …PCMCIA_MFC_DEVICE_PROD_ID123(0, "APEX DATA", "MULTICARD", "ETHERNET-MODEM", 0x11c2da09, 0x7289dc5d…
1529 PCMCIA_DEVICE_PROD_ID123("I-O DATA", "PCLA", "ETHERNET", 0x1d55d7ec, 0xe4c64d34, 0x3ff7175b),
1531 …PCMCIA_DEVICE_PROD_ID123("KingMax Technology Inc.", "EN10-T2", "PCMCIA Ethernet Card", 0x932b7189,…
1532 …PCMCIA_DEVICE_PROD_ID123("PCMCIA", "PCMCIA-ETHERNET-CARD", "UE2216", 0x281f1c5d, 0xd4cd2f20, 0xb87…
1533 …PCMCIA_DEVICE_PROD_ID123("PCMCIA", "PCMCIA-ETHERNET-CARD", "UE2620", 0x281f1c5d, 0xd4cd2f20, 0x7d3…
1536 PCMCIA_DEVICE_PROD_ID12("ACCTON", "EN2216-PCMCIA-ETHERNET", 0xdfc6b5b2, 0x5542bfff),
1537 …PCMCIA_DEVICE_PROD_ID12("Allied Telesis, K.K.", "CentreCOM LA100-PCM-T V2 100/10M LAN PC Card", 0x…
1538 PCMCIA_DEVICE_PROD_ID12("Allied Telesis K.K.", "LA100-PCM V2", 0x36634a66, 0xc6d05997),
1539 PCMCIA_DEVICE_PROD_ID12("Allied Telesis, K.K.", "CentreCOM LA-PCM_V2", 0xbb7fBdd7, 0x28e299f8),
1540 PCMCIA_DEVICE_PROD_ID12("Allied Telesis K.K.", "LA-PCM V3", 0x36634a66, 0x62241d96),
1550 PCMCIA_DEVICE_PROD_ID12("Billionton", "LNT-10TB", 0x552ab682, 0xeeb1ba6a),
1551 PCMCIA_DEVICE_PROD_ID12("CF", "10Base-Ethernet", 0x44ebf863, 0x93ae4d79),
1553 …PCMCIA_DEVICE_PROD_ID12("COMPU-SHACK", "BASEline PCMCIA 10 MBit Ethernetadapter", 0xfa2e424d, 0xe9…
1554 …PCMCIA_DEVICE_PROD_ID12("COMPU-SHACK", "FASTline PCMCIA 10/100 Fast-Ethernet", 0xfa2e424d, 0x3953d…
1555 PCMCIA_DEVICE_PROD_ID12("CONTEC", "C-NET(PC)C-10L", 0x21cab552, 0xf6f90722),
1556 PCMCIA_DEVICE_PROD_ID12("corega", "FEther PCC-TXF", 0x0a21501a, 0xa51564a2),
1557 PCMCIA_DEVICE_PROD_ID12("corega", "Ether CF-TD", 0x0a21501a, 0x6589340a),
1558 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega Ether CF-TD LAN Card", 0x5261440f, 0x8797663b),
1559 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega EtherII PCC-T", 0x5261440f, 0xfa9d85bd),
1560 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega EtherII PCC-TD", 0x5261440f, 0xc49bd73d),
1561 PCMCIA_DEVICE_PROD_ID12("Corega K.K.", "corega EtherII PCC-TD", 0xd4fdcbd8, 0xc49bd73d),
1562 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega Ether PCC-T", 0x5261440f, 0x6705fcaa),
1563 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega Ether PCC-TD", 0x5261440f, 0x47d5ca83),
1564 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega FastEther PCC-TX", 0x5261440f, 0x485e85d9),
1567 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "(CG-LAPCCTXD)", 0x5261440f, 0x73ec0d88),
1569 PCMCIA_DEVICE_PROD_ID12("CyQ've", "ELA-010", 0x77008979, 0x9d8d445d),
1570 PCMCIA_DEVICE_PROD_ID12("CyQ've", "ELA-110E 10/100M LAN Card", 0x77008979, 0xfd184814),
1575 PCMCIA_DEVICE_PROD_ID12("DIGITAL", "DEPCM-XX", 0x69616cb3, 0xe600e76e),
1576 PCMCIA_DEVICE_PROD_ID12("D-Link", "DE-650", 0x1a424a1c, 0xf28c8398),
1577 PCMCIA_DEVICE_PROD_ID12("D-Link", "DE-660", 0x1a424a1c, 0xd9a1d05b),
1578 PCMCIA_DEVICE_PROD_ID12("D-Link", "DE-660+", 0x1a424a1c, 0x50dcd0ec),
1579 PCMCIA_DEVICE_PROD_ID12("D-Link", "DFE-650", 0x1a424a1c, 0x0f0073f9),
1585 PCMCIA_DEVICE_PROD_ID12("E-CARD", "E-CARD", 0x6701da11, 0x6701da11),
1590 PCMCIA_DEVICE_PROD_ID12("Ethernet PCMCIA adapter", "EP-210", 0x8dd86181, 0xf2b52517),
1594 PCMCIA_DEVICE_PROD_ID12("GVC", "NIC-2000p", 0x76e171bd, 0x6eb1c947),
1596 PCMCIA_DEVICE_PROD_ID12("IC-CARD", "IC-CARD", 0x60cb09a6, 0x60cb09a6),
1597 PCMCIA_DEVICE_PROD_ID12("IC-CARD+", "IC-CARD+", 0x93693494, 0x93693494),
1600 PCMCIA_DEVICE_PROD_ID12("KANSAI ELECTRIC CO.,LTD", "KLA-PCM/T", 0xb18dc3b4, 0xcc51a956),
1601 PCMCIA_DEVICE_PROD_ID12("KENTRONICS", "KEP-230", 0xaf8144c9, 0x868f6616),
1604 PCMCIA_DEVICE_PROD_ID12("Kingston", "KNE-PC2", 0x1128e633, 0xce2a89b3),
1606 PCMCIA_DEVICE_PROD_ID12("Laneed", "LD-10/100CD", 0x1b7827b2, 0xcda71d1c),
1607 PCMCIA_DEVICE_PROD_ID12("Laneed", "LD-CDF", 0x1b7827b2, 0xfec71e40),
1608 PCMCIA_DEVICE_PROD_ID12("Laneed", "LD-CDL/T", 0x1b7827b2, 0x79fba4f7),
1609 PCMCIA_DEVICE_PROD_ID12("Laneed", "LD-CDS", 0x1b7827b2, 0x931afaab),
1610 PCMCIA_DEVICE_PROD_ID12("LEMEL", "LM-N89TX PRO", 0xbbefb52f, 0xd2897a97),
1612 PCMCIA_DEVICE_PROD_ID12("LINKSYS", "E-CARD", 0xf7cb0b07, 0x6701da11),
1617 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN100TX", 0x88fcdeda, 0x6d772737),
1618 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN100TE", 0x88fcdeda, 0x0e714bee),
1619 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN20T", 0x88fcdeda, 0x81090922),
1620 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN10TE", 0x88fcdeda, 0xc1e2521c),
1622 PCMCIA_DEVICE_PROD_ID12("MACNICA", "ME1-JEIDA", 0x20841b68, 0xaf8a3578),
1623 PCMCIA_DEVICE_PROD_ID12("Macsense", "MPC-10", 0xd830297f, 0xd265c307),
1624 …PCMCIA_DEVICE_PROD_ID12("Matsushita Electric Industrial Co.,LTD.", "CF-VEL211", 0x44445376, 0x8ded…
1626 PCMCIA_DEVICE_PROD_ID12("MELCO", "LPC2-T", 0x481e0094, 0xa2eb0cf3),
1627 PCMCIA_DEVICE_PROD_ID12("MELCO", "LPC2-TX", 0x481e0094, 0x41a6916c),
1630 PCMCIA_DEVICE_PROD_ID12("MIDORI ELEC.", "LT-PCMT", 0x648d55c1, 0xbde526c7),
1633 PCMCIA_DEVICE_PROD_ID12("NEC", "PC-9801N-J12", 0x18df0ba0, 0xbc912d76),
1645 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "Fast-Ethernet", 0x281f1c5d, 0x45f1f3b4),
1648 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "LNT-10TN", 0x281f1c5d, 0xe707f641),
1663 PCMCIA_DEVICE_PROD_ID12("SMC", "EZCard-10-PCMCIA", 0xc4f8b18b, 0xfb21d265),
1666 PCMCIA_DEVICE_PROD_ID12("TDK", "LAK-CD031 for PCMCIA", 0x1eae9475, 0x0ed386fa),
1672 PCMCIA_DEVICE_PROD_ID13("Xircom", "CFE-10", 0x2e3ee845, 0x22a49f89),
1673 PCMCIA_DEVICE_PROD_ID1("CyQ've 10 Base-T LAN CARD", 0x94faf360),
1674 PCMCIA_DEVICE_PROD_ID1("EP-210 PCMCIA LAN CARD.", 0x8850b4de),
1675 PCMCIA_DEVICE_PROD_ID1("ETHER-C16", 0x06a8514f),
1677 PCMCIA_DEVICE_PROD_ID2("EN-6200P2", 0xa996d078),
1680 …PCMCIA_PFC_DEVICE_CIS_PROD_ID12(0, "PCMCIA", "EN2218-LAN/MODEM", 0x281f1c5d, 0x570f348e, "cis/PCML…
1681 …PCMCIA_PFC_DEVICE_CIS_PROD_ID12(0, "PCMCIA", "UE2218-LAN/MODEM", 0x281f1c5d, 0x6fdcacee, "cis/PCML…
1689 …CIS_PROD_ID12("Allied Telesis,K.K", "Ethernet LAN Card", 0x2ad62f3c, 0x9fd2f0a2, "cis/LA-PCM.cis"),
1692 PCMCIA_DEVICE_CIS_PROD_ID12("PMX ", "PE-200", 0x34f3f1c8, 0x10b59f8c, "cis/PE-200.cis"),
1702 MODULE_FIRMWARE("cis/LA-PCM.cis");
1705 MODULE_FIRMWARE("cis/PE-200.cis");