Lines Matching +full:tx +full:- +full:termination +full:- +full:fix
3 A PCMCIA ethernet driver for NS8390-based cards
5 This driver supports the D-Link DE-650 and Linksys EthernetCard
6 cards, the newer D-Link and Linksys combo cards, Accton EN2212
7 cards, the RPTI EP400, and the PreMax PE-200 in non-shared-memory
9 Conrad ethernet card, and the Kingston KNE-PCM/x in shared-memory
12 Copyright (C) 1999 David A. Hinds -- dahinds@users.sourceforge.net
26 CCAE support. Drivers merged back together, and shared-memory
55 #define PCNET_DATAPORT 0x10 /* NatSemi-defined port window offset. */
59 #define PCNET_START_PG 0x40 /* First page of TX buffer */
66 #define PCNET_RDC_TIMEOUT (2*HZ/100) /* Max wait in jiffies for Tx RDC */
85 INT_MODULE_PARM(use_shmem, -1); /* use shared memory? */
136 { /* Allied Telesis LA-PCM */ 0x0ff0, 0x00, 0x00, 0xf4, 0 },
140 { /* Danpex EN-6200P2 */ 0x0110, 0x00, 0x40, 0xc7, 0 },
143 { /* D-Link DE-650 */ 0x0040, 0x00, 0x80, 0xc8, 0 },
144 { /* EP-210 Ethernet */ 0x0110, 0x00, 0x40, 0x33, 0 },
148 { /* ELECOM Laneed LD-CDWA */ 0xb8, 0x08, 0x00, 0x42, 0 },
160 { /* Kansai KLA-PCM/T */ 0x0ff0, 0x00, 0x60, 0x87,
170 { /* I-O DATA PCLA/T */ 0x0ff0, 0x00, 0xa0, 0xb0, 0 },
171 { /* Katron PE-520 */ 0x0110, 0x00, 0x40, 0xf6, 0 },
172 { /* Kingston KNE-PCM/x */ 0x0ff0, 0x00, 0xc0, 0xf0,
174 { /* Kingston KNE-PCM/x */ 0x0ff0, 0xe2, 0x0c, 0x0f,
176 { /* Kingston KNE-PC2 */ 0x0180, 0x00, 0xc0, 0xf0, 0 },
178 { /* NDC Instant-Link */ 0x003a, 0x00, 0x80, 0xc6, 0 },
184 { /* PreMax PE-200 */ 0x07f0, 0x00, 0x20, 0xe0, 0 },
189 { /* Socket LP-E CF+ */ 0x01c0, 0x00, 0xc0, 0x1b, 0 },
191 { /* Volktek NPL-402CT */ 0x0060, 0x00, 0x40, 0x05, 0 },
192 { /* NEC PC-9801N-J12 */ 0x0ff0, 0x00, 0x00, 0x4c, 0 },
241 dev_dbg(&link->dev, "pcnet_attach()\n"); in pcnet_probe()
245 if (!dev) return -ENOMEM; in pcnet_probe()
247 info->p_dev = link; in pcnet_probe()
248 link->priv = dev; in pcnet_probe()
250 link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO; in pcnet_probe()
252 dev->netdev_ops = &pcnet_netdev_ops; in pcnet_probe()
259 struct net_device *dev = link->priv; in pcnet_detach()
261 dev_dbg(&link->dev, "pcnet_detach\n"); in pcnet_detach()
279 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()
305 dev->dev_addr[j] = readb(base + (j<<1)); in get_hwinfo()
311 j = pcmcia_release_window(link, link->resource[2]); in get_hwinfo()
325 struct net_device *dev = link->priv; in get_prom()
326 unsigned int ioaddr = dev->base_addr; in get_prom()
335 {0x48, EN0_DCFG}, /* Set byte-wide (0x48) access. */ in get_prom()
365 dev->dev_addr[j] = prom[j<<1]; in get_prom()
379 struct net_device *dev = link->priv; in get_dl10019()
384 sum += inb_p(dev->base_addr + i); in get_dl10019()
388 dev->dev_addr[i] = inb_p(dev->base_addr + 0x14 + i); in get_dl10019()
389 i = inb(dev->base_addr + 0x1f); in get_dl10019()
401 struct net_device *dev = link->priv; in get_ax88190()
402 unsigned int ioaddr = dev->base_addr; in get_ax88190()
406 if (link->config_base != 0x03c0) in get_ax88190()
409 outb_p(0x01, ioaddr + EN0_DCFG); /* Set word-wide access. */ in get_ax88190()
416 dev->dev_addr[i] = j & 0xff; in get_ax88190()
417 dev->dev_addr[i+1] = j >> 8; in get_ax88190()
432 struct net_device *dev = link->priv; in get_hwired()
441 dev->dev_addr[i] = hw_addr[i]; in get_hwired()
449 link->resource[0]->flags &= ~IO_DATA_PATH_WIDTH; in try_io_port()
450 link->resource[1]->flags &= ~IO_DATA_PATH_WIDTH; in try_io_port()
451 if (link->resource[0]->end == 32) { in try_io_port()
452 link->resource[0]->flags |= IO_DATA_PATH_WIDTH_AUTO; in try_io_port()
453 if (link->resource[1]->end > 0) { in try_io_port()
455 link->resource[1]->flags |= IO_DATA_PATH_WIDTH_8; in try_io_port()
458 /* This should be two 16-port windows */ in try_io_port()
459 link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; in try_io_port()
460 link->resource[1]->flags |= IO_DATA_PATH_WIDTH_16; in try_io_port()
462 if (link->resource[0]->start == 0) { in try_io_port()
464 link->resource[0]->start = j ^ 0x300; in try_io_port()
465 link->resource[1]->start = (j ^ 0x300) + 0x10; in try_io_port()
466 link->io_lines = 16; in try_io_port()
482 *priv &= (p_dev->resource[2]->end >= 0x4000) ? 0x10 : ~0x10; in pcnet_confcheck()
484 if (p_dev->config_index == 0) in pcnet_confcheck()
485 return -EINVAL; in pcnet_confcheck()
487 if (p_dev->resource[0]->end + p_dev->resource[1]->end < 32) in pcnet_confcheck()
488 return -EINVAL; in pcnet_confcheck()
491 p_dev->io_lines = 16; in pcnet_confcheck()
498 struct net_device *dev = link->priv; in pcnet_try_config()
506 dev_warn(&link->dev, "no useable port range found\n"); in pcnet_try_config()
511 if (!link->irq) in pcnet_try_config()
514 if (resource_size(link->resource[1]) == 8) in pcnet_try_config()
515 link->config_flags |= CONF_ENABLE_SPKR; in pcnet_try_config()
517 if ((link->manf_id == MANFID_IBM) && in pcnet_try_config()
518 (link->card_id == PRODID_IBM_HOME_AND_AWAY)) in pcnet_try_config()
519 link->config_index |= 0x10; in pcnet_try_config()
525 dev->irq = link->irq; in pcnet_try_config()
526 dev->base_addr = link->resource[0]->start; in pcnet_try_config()
528 if (info->flags & HAS_MISC_REG) { in pcnet_try_config()
530 dev->if_port = if_port; in pcnet_try_config()
532 dev_notice(&link->dev, "invalid if_port requested\n"); in pcnet_try_config()
534 dev->if_port = 0; in pcnet_try_config()
536 if ((link->config_base == 0x03c0) && in pcnet_try_config()
537 (link->manf_id == 0x149) && (link->card_id == 0xc1ab)) { in pcnet_try_config()
538 dev_info(&link->dev, in pcnet_try_config()
539 "this is an AX88190 card - use axnet_cs instead.\n"); in pcnet_try_config()
558 struct net_device *dev = link->priv; in pcnet_config()
564 dev_dbg(&link->dev, "pcnet_config\n"); in pcnet_config()
572 dev_notice(&link->dev, "unable to read hardware net" in pcnet_config()
573 " address for io base %#3lx\n", dev->base_addr); in pcnet_config()
578 info->flags = local_hw_info->flags; in pcnet_config()
580 info->flags |= (delay_output) ? DELAY_OUTPUT : 0; in pcnet_config()
581 if ((link->manf_id == MANFID_SOCKET) && in pcnet_config()
582 ((link->card_id == PRODID_SOCKET_LPE) || in pcnet_config()
583 (link->card_id == PRODID_SOCKET_LPE_CF) || in pcnet_config()
584 (link->card_id == PRODID_SOCKET_EIO))) in pcnet_config()
585 info->flags &= ~USE_BIG_BUF; in pcnet_config()
587 info->flags &= ~USE_BIG_BUF; in pcnet_config()
589 if (info->flags & USE_BIG_BUF) { in pcnet_config()
599 /* has_shmem is ignored if use_shmem != -1 */ in pcnet_config()
600 if ((use_shmem == 0) || (!has_shmem && (use_shmem == -1)) || in pcnet_config()
608 if (info->flags & (IS_DL10019|IS_DL10022)) in pcnet_config()
611 SET_NETDEV_DEV(dev, &link->dev); in pcnet_config()
618 if (info->flags & (IS_DL10019|IS_DL10022)) { in pcnet_config()
619 u_char id = inb(dev->base_addr + 0x1a); in pcnet_config()
621 (info->flags & IS_DL10022) ? 22 : 19, id); in pcnet_config()
622 if (info->pna_phy) in pcnet_config()
627 pr_cont("io %#3lx, irq %d,", dev->base_addr, dev->irq); in pcnet_config()
628 if (info->flags & USE_SHMEM) in pcnet_config()
629 pr_cont(" mem %#5lx,", dev->mem_start); in pcnet_config()
630 if (info->flags & HAS_MISC_REG) in pcnet_config()
631 pr_cont(" %s xcvr,", if_names[dev->if_port]); in pcnet_config()
632 pr_cont(" hw_addr %pM\n", dev->dev_addr); in pcnet_config()
637 return -ENODEV; in pcnet_config()
642 struct pcnet_dev *info = PRIV(link->priv); in pcnet_release()
644 dev_dbg(&link->dev, "pcnet_release\n"); in pcnet_release()
646 if (info->flags & USE_SHMEM) in pcnet_release()
647 iounmap(info->base); in pcnet_release()
654 struct net_device *dev = link->priv; in pcnet_suspend()
656 if (link->open) in pcnet_suspend()
664 struct net_device *dev = link->priv; in pcnet_resume()
666 if (link->open) { in pcnet_resume()
712 for (i = 13; i >= 0; i--) { in mdio_read()
717 for (i = 19; i > 0; i--) { in mdio_read()
731 for (i = 31; i >= 0; i--) { in mdio_write()
736 for (i = 1; i >= 0; i--) { in mdio_write()
769 for (i = 10; i >= 0; i--) { in read_eeprom()
776 for (i = 16; i > 0; i--) { in read_eeprom()
808 for (i = 9; i >= 0; i--) { in write_asic()
819 for (i = 15; i >= 0; i--) { in write_asic()
838 unsigned int nic_base = dev->base_addr; in set_misc_reg()
842 if (info->flags & HAS_MISC_REG) { in set_misc_reg()
844 if (dev->if_port == 2) in set_misc_reg()
846 if (info->flags & USE_BIG_BUF) in set_misc_reg()
848 if (info->flags & HAS_IBM_MISC) in set_misc_reg()
852 if (info->flags & IS_DL10022) { in set_misc_reg()
853 if (info->flags & HAS_MII) { in set_misc_reg()
855 mdio_write(nic_base + DLINK_GPIO, info->eth_phy, 4, 0x01e1); in set_misc_reg()
857 mdio_write(nic_base + DLINK_GPIO, info->eth_phy, 0, 0x0000); in set_misc_reg()
858 mdio_write(nic_base + DLINK_GPIO, info->eth_phy, 0, 0x1200); in set_misc_reg()
859 info->mii_reset = jiffies; in set_misc_reg()
863 } else if (info->flags & IS_DL10019) { in set_misc_reg()
865 mdio_write(nic_base + DLINK_GPIO, info->eth_phy, 4, 0x01e1); in set_misc_reg()
867 mdio_write(nic_base + DLINK_GPIO, info->eth_phy, 0, 0x0000); in set_misc_reg()
868 mdio_write(nic_base + DLINK_GPIO, info->eth_phy, 0, 0x1200); in set_misc_reg()
877 unsigned int mii_addr = dev->base_addr + DLINK_GPIO; in mii_phy_probe()
881 for (i = 31; i >= 0; i--) { in mii_phy_probe()
891 info->pna_phy = i; in mii_phy_probe()
893 info->eth_phy = i; in mii_phy_probe()
902 struct pcmcia_device *link = info->p_dev; in pcnet_open()
903 unsigned int nic_base = dev->base_addr; in pcnet_open()
905 dev_dbg(&link->dev, "pcnet_open('%s')\n", dev->name); in pcnet_open()
908 return -ENODEV; in pcnet_open()
913 ret = request_irq(dev->irq, ei_irq_wrapper, IRQF_SHARED, dev->name, dev); in pcnet_open()
917 link->open++; in pcnet_open()
919 info->phy_id = info->eth_phy; in pcnet_open()
920 info->link_status = 0x00; in pcnet_open()
921 timer_setup(&info->watchdog, ei_watchdog, 0); in pcnet_open()
922 mod_timer(&info->watchdog, jiffies + HZ); in pcnet_open()
932 struct pcmcia_device *link = info->p_dev; in pcnet_close()
934 dev_dbg(&link->dev, "pcnet_close('%s')\n", dev->name); in pcnet_close()
937 free_irq(dev->irq, dev); in pcnet_close()
939 link->open--; in pcnet_close()
941 del_timer_sync(&info->watchdog); in pcnet_close()
955 unsigned int nic_base = dev->base_addr; in pcnet_reset_8390()
983 if ((map->port != (u_char)(-1)) && (map->port != dev->if_port)) { in set_config()
984 if (!(info->flags & HAS_MISC_REG)) in set_config()
985 return -EOPNOTSUPP; in set_config()
986 else if ((map->port < 1) || (map->port > 2)) in set_config()
987 return -EINVAL; in set_config()
988 dev->if_port = map->port; in set_config()
989 netdev_info(dev, "switched to %s port\n", if_names[dev->if_port]); in set_config()
1005 info->stale = 0; in ei_irq_wrapper()
1013 struct net_device *dev = info->p_dev->priv; in ei_watchdog()
1014 unsigned int nic_base = dev->base_addr; in ei_watchdog()
1022 if (info->stale++ && (inb_p(nic_base + EN0_ISR) & ENISR_ALL)) { in ei_watchdog()
1023 if (!info->fast_poll) in ei_watchdog()
1025 ei_irq_wrapper(dev->irq, dev); in ei_watchdog()
1026 info->fast_poll = HZ; in ei_watchdog()
1028 if (info->fast_poll) { in ei_watchdog()
1029 info->fast_poll--; in ei_watchdog()
1030 info->watchdog.expires = jiffies + 1; in ei_watchdog()
1031 add_timer(&info->watchdog); in ei_watchdog()
1035 if (!(info->flags & HAS_MII)) in ei_watchdog()
1038 mdio_read(mii_addr, info->phy_id, 1); in ei_watchdog()
1039 link = mdio_read(mii_addr, info->phy_id, 1); in ei_watchdog()
1041 if (info->eth_phy) { in ei_watchdog()
1042 info->phy_id = info->eth_phy = 0; in ei_watchdog()
1045 info->flags &= ~HAS_MII; in ei_watchdog()
1051 if (link != info->link_status) { in ei_watchdog()
1052 u_short p = mdio_read(mii_addr, info->phy_id, 5); in ei_watchdog()
1054 if (link && (info->flags & IS_DL10022)) { in ei_watchdog()
1057 } else if (link && (info->flags & IS_DL10019)) { in ei_watchdog()
1059 write_asic(dev->base_addr, 4, (p & 0x140) ? DL19FDUPLX : 0); in ei_watchdog()
1062 if (info->phy_id == info->eth_phy) { in ei_watchdog()
1065 "%sbaseT-%cD selected\n", in ei_watchdog()
1073 info->link_status = link; in ei_watchdog()
1075 if (info->pna_phy && time_after(jiffies, info->mii_reset + 6*HZ)) { in ei_watchdog()
1076 link = mdio_read(mii_addr, info->eth_phy, 1) & 0x0004; in ei_watchdog()
1077 if (((info->phy_id == info->pna_phy) && link) || in ei_watchdog()
1078 ((info->phy_id != info->pna_phy) && !link)) { in ei_watchdog()
1080 mdio_write(mii_addr, info->phy_id, 0, 0x0400); in ei_watchdog()
1081 info->phy_id ^= info->pna_phy ^ info->eth_phy; in ei_watchdog()
1083 (info->phy_id == info->eth_phy) ? "ethernet" : "PNA"); in ei_watchdog()
1084 mdio_write(mii_addr, info->phy_id, 0, in ei_watchdog()
1085 (info->phy_id == info->eth_phy) ? 0x1000 : 0); in ei_watchdog()
1086 info->link_status = 0; in ei_watchdog()
1087 info->mii_reset = jiffies; in ei_watchdog()
1092 info->watchdog.expires = jiffies + HZ; in ei_watchdog()
1093 add_timer(&info->watchdog); in ei_watchdog()
1103 unsigned int mii_addr = dev->base_addr + DLINK_GPIO; in ei_ioctl()
1105 if (!(info->flags & (IS_DL10019|IS_DL10022))) in ei_ioctl()
1106 return -EINVAL; in ei_ioctl()
1110 data->phy_id = info->phy_id; in ei_ioctl()
1113 data->val_out = mdio_read(mii_addr, data->phy_id, data->reg_num & 0x1f); in ei_ioctl()
1116 mdio_write(mii_addr, data->phy_id, data->reg_num & 0x1f, data->val_in); in ei_ioctl()
1119 return -EOPNOTSUPP; in ei_ioctl()
1128 unsigned int nic_base = dev->base_addr; in dma_get_8390_hdr()
1147 /* Fix for big endian systems */ in dma_get_8390_hdr()
1148 hdr->count = le16_to_cpu(hdr->count); in dma_get_8390_hdr()
1159 unsigned int nic_base = dev->base_addr; in dma_block_input()
1161 char *buf = skb->data; in dma_block_input()
1182 buf[count-1] = inb(nic_base + PCNET_DATAPORT); in dma_block_input()
1189 /* DMA termination address check... */ in dma_block_input()
1194 -- it's broken for Rx on some cards! */ in dma_block_input()
1200 } while (--tries > 0); in dma_block_input()
1216 unsigned int nic_base = dev->base_addr; in dma_block_output()
1263 /* DMA termination address check... */ in dma_block_output()
1272 } while (--tries > 0); in dma_block_output()
1274 netdev_notice(dev, "Tx packet transfer address mismatch," in dma_block_output()
1285 netdev_warn(dev, "timeout waiting for Tx RDC.\n"); in dma_block_output()
1292 if (info->flags & DELAY_OUTPUT) in dma_block_output()
1302 struct net_device *dev = link->priv; in setup_dma_config()
1329 do { *d++ = __raw_readw(s++); } while (--c); in copyin()
1347 do { __raw_writew(*s++, d++); } while (--c); in copyout()
1349 /* copy last byte doing a read-modify-write */ in copyout()
1362 - (ei_status.rx_start_page << 8); in shmem_get_8390_hdr()
1365 /* Fix for big endian systems */ in shmem_get_8390_hdr()
1366 hdr->count = le16_to_cpu(hdr->count); in shmem_get_8390_hdr()
1376 - (ei_status.rx_start_page << 8); in shmem_block_input()
1377 char *buf = skb->data; in shmem_block_input()
1381 int semi_count = ei_status.priv - offset; in shmem_block_input()
1385 count -= semi_count; in shmem_block_input()
1396 shmem -= ei_status.tx_start_page << 8; in shmem_block_output()
1405 struct net_device *dev = link->priv; in setup_shmem_window()
1409 window_size = (stop_pg - start_pg) << 8; in setup_shmem_window()
1417 link->resource[3]->flags |= WIN_DATA_WIDTH_16|WIN_MEMORY_TYPE_CM|WIN_ENABLE; in setup_shmem_window()
1418 link->resource[3]->flags |= WIN_USE_WAIT; in setup_shmem_window()
1419 link->resource[3]->start = 0; link->resource[3]->end = window_size; in setup_shmem_window()
1420 ret = pcmcia_request_window(link, link->resource[3], mem_speed); in setup_shmem_window()
1425 offset -= offset % window_size; in setup_shmem_window()
1426 ret = pcmcia_map_mem_page(link, link->resource[3], offset); in setup_shmem_window()
1431 info->base = ioremap(link->resource[3]->start, in setup_shmem_window()
1432 resource_size(link->resource[3])); in setup_shmem_window()
1433 if (unlikely(!info->base)) { in setup_shmem_window()
1434 ret = -ENOMEM; in setup_shmem_window()
1439 __raw_writew((i>>1), info->base+offset+i); in setup_shmem_window()
1442 if (__raw_readw(info->base+offset+i) != (i>>1)) break; in setup_shmem_window()
1445 iounmap(info->base); in setup_shmem_window()
1446 pcmcia_release_window(link, link->resource[3]); in setup_shmem_window()
1447 info->base = NULL; in setup_shmem_window()
1451 ei_status.mem = info->base + offset; in setup_shmem_window()
1452 ei_status.priv = resource_size(link->resource[3]); in setup_shmem_window()
1453 dev->mem_start = (u_long)ei_status.mem; in setup_shmem_window()
1454 dev->mem_end = dev->mem_start + resource_size(link->resource[3]); in setup_shmem_window()
1459 (resource_size(link->resource[3]) - offset) >> 8); in setup_shmem_window()
1466 info->flags |= USE_SHMEM; in setup_shmem_window()
1484 PCMCIA_PFC_DEVICE_PROD_ID12(0, "ATKK", "LM33-PCM-T", 0xba9eb7e2, 0x077c174e),
1485 PCMCIA_PFC_DEVICE_PROD_ID12(0, "D-Link", "DME336T", 0x1a424a1c, 0xb23897ff),
1489 PCMCIA_PFC_DEVICE_PROD_ID12(0, "MICRO RESEARCH", "COMBO-L/M-336", 0xb2ced065, 0x3ced0555),
1495 …PCMCIA_MFC_DEVICE_PROD_ID123(0, "APEX DATA", "MULTICARD", "ETHERNET-MODEM", 0x11c2da09, 0x7289dc5d…
1520 PCMCIA_DEVICE_PROD_ID123("I-O DATA", "PCLA", "ETHERNET", 0x1d55d7ec, 0xe4c64d34, 0x3ff7175b),
1522 …PCMCIA_DEVICE_PROD_ID123("KingMax Technology Inc.", "EN10-T2", "PCMCIA Ethernet Card", 0x932b7189,…
1523 …PCMCIA_DEVICE_PROD_ID123("PCMCIA", "PCMCIA-ETHERNET-CARD", "UE2216", 0x281f1c5d, 0xd4cd2f20, 0xb87…
1524 …PCMCIA_DEVICE_PROD_ID123("PCMCIA", "PCMCIA-ETHERNET-CARD", "UE2620", 0x281f1c5d, 0xd4cd2f20, 0x7d3…
1527 PCMCIA_DEVICE_PROD_ID12("ACCTON", "EN2216-PCMCIA-ETHERNET", 0xdfc6b5b2, 0x5542bfff),
1528 …PCMCIA_DEVICE_PROD_ID12("Allied Telesis, K.K.", "CentreCOM LA100-PCM-T V2 100/10M LAN PC Card", 0x…
1529 PCMCIA_DEVICE_PROD_ID12("Allied Telesis K.K.", "LA100-PCM V2", 0x36634a66, 0xc6d05997),
1530 PCMCIA_DEVICE_PROD_ID12("Allied Telesis, K.K.", "CentreCOM LA-PCM_V2", 0xbb7fBdd7, 0x28e299f8),
1531 PCMCIA_DEVICE_PROD_ID12("Allied Telesis K.K.", "LA-PCM V3", 0x36634a66, 0x62241d96),
1541 PCMCIA_DEVICE_PROD_ID12("Billionton", "LNT-10TB", 0x552ab682, 0xeeb1ba6a),
1542 PCMCIA_DEVICE_PROD_ID12("CF", "10Base-Ethernet", 0x44ebf863, 0x93ae4d79),
1544 …PCMCIA_DEVICE_PROD_ID12("COMPU-SHACK", "BASEline PCMCIA 10 MBit Ethernetadapter", 0xfa2e424d, 0xe9…
1545 …PCMCIA_DEVICE_PROD_ID12("COMPU-SHACK", "FASTline PCMCIA 10/100 Fast-Ethernet", 0xfa2e424d, 0x3953d…
1546 PCMCIA_DEVICE_PROD_ID12("CONTEC", "C-NET(PC)C-10L", 0x21cab552, 0xf6f90722),
1547 PCMCIA_DEVICE_PROD_ID12("corega", "FEther PCC-TXF", 0x0a21501a, 0xa51564a2),
1548 PCMCIA_DEVICE_PROD_ID12("corega", "Ether CF-TD", 0x0a21501a, 0x6589340a),
1549 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega Ether CF-TD LAN Card", 0x5261440f, 0x8797663b),
1550 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega EtherII PCC-T", 0x5261440f, 0xfa9d85bd),
1551 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega EtherII PCC-TD", 0x5261440f, 0xc49bd73d),
1552 PCMCIA_DEVICE_PROD_ID12("Corega K.K.", "corega EtherII PCC-TD", 0xd4fdcbd8, 0xc49bd73d),
1553 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega Ether PCC-T", 0x5261440f, 0x6705fcaa),
1554 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega Ether PCC-TD", 0x5261440f, 0x47d5ca83),
1555 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega FastEther PCC-TX", 0x5261440f, 0x485e85d9),
1558 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "(CG-LAPCCTXD)", 0x5261440f, 0x73ec0d88),
1560 PCMCIA_DEVICE_PROD_ID12("CyQ've", "ELA-010", 0x77008979, 0x9d8d445d),
1561 PCMCIA_DEVICE_PROD_ID12("CyQ've", "ELA-110E 10/100M LAN Card", 0x77008979, 0xfd184814),
1566 PCMCIA_DEVICE_PROD_ID12("DIGITAL", "DEPCM-XX", 0x69616cb3, 0xe600e76e),
1567 PCMCIA_DEVICE_PROD_ID12("D-Link", "DE-650", 0x1a424a1c, 0xf28c8398),
1568 PCMCIA_DEVICE_PROD_ID12("D-Link", "DE-660", 0x1a424a1c, 0xd9a1d05b),
1569 PCMCIA_DEVICE_PROD_ID12("D-Link", "DE-660+", 0x1a424a1c, 0x50dcd0ec),
1570 PCMCIA_DEVICE_PROD_ID12("D-Link", "DFE-650", 0x1a424a1c, 0x0f0073f9),
1576 PCMCIA_DEVICE_PROD_ID12("E-CARD", "E-CARD", 0x6701da11, 0x6701da11),
1581 PCMCIA_DEVICE_PROD_ID12("Ethernet PCMCIA adapter", "EP-210", 0x8dd86181, 0xf2b52517),
1585 PCMCIA_DEVICE_PROD_ID12("GVC", "NIC-2000p", 0x76e171bd, 0x6eb1c947),
1587 PCMCIA_DEVICE_PROD_ID12("IC-CARD", "IC-CARD", 0x60cb09a6, 0x60cb09a6),
1588 PCMCIA_DEVICE_PROD_ID12("IC-CARD+", "IC-CARD+", 0x93693494, 0x93693494),
1591 PCMCIA_DEVICE_PROD_ID12("KANSAI ELECTRIC CO.,LTD", "KLA-PCM/T", 0xb18dc3b4, 0xcc51a956),
1592 PCMCIA_DEVICE_PROD_ID12("KENTRONICS", "KEP-230", 0xaf8144c9, 0x868f6616),
1595 PCMCIA_DEVICE_PROD_ID12("Kingston", "KNE-PC2", 0x1128e633, 0xce2a89b3),
1597 PCMCIA_DEVICE_PROD_ID12("Laneed", "LD-10/100CD", 0x1b7827b2, 0xcda71d1c),
1598 PCMCIA_DEVICE_PROD_ID12("Laneed", "LD-CDF", 0x1b7827b2, 0xfec71e40),
1599 PCMCIA_DEVICE_PROD_ID12("Laneed", "LD-CDL/T", 0x1b7827b2, 0x79fba4f7),
1600 PCMCIA_DEVICE_PROD_ID12("Laneed", "LD-CDS", 0x1b7827b2, 0x931afaab),
1601 PCMCIA_DEVICE_PROD_ID12("LEMEL", "LM-N89TX PRO", 0xbbefb52f, 0xd2897a97),
1603 PCMCIA_DEVICE_PROD_ID12("LINKSYS", "E-CARD", 0xf7cb0b07, 0x6701da11),
1608 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN100TX", 0x88fcdeda, 0x6d772737),
1609 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN100TE", 0x88fcdeda, 0x0e714bee),
1610 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN20T", 0x88fcdeda, 0x81090922),
1611 PCMCIA_DEVICE_PROD_ID12("Logitec", "LPM-LN10TE", 0x88fcdeda, 0xc1e2521c),
1613 PCMCIA_DEVICE_PROD_ID12("MACNICA", "ME1-JEIDA", 0x20841b68, 0xaf8a3578),
1614 PCMCIA_DEVICE_PROD_ID12("Macsense", "MPC-10", 0xd830297f, 0xd265c307),
1615 …PCMCIA_DEVICE_PROD_ID12("Matsushita Electric Industrial Co.,LTD.", "CF-VEL211", 0x44445376, 0x8ded…
1617 PCMCIA_DEVICE_PROD_ID12("MELCO", "LPC2-T", 0x481e0094, 0xa2eb0cf3),
1618 PCMCIA_DEVICE_PROD_ID12("MELCO", "LPC2-TX", 0x481e0094, 0x41a6916c),
1621 PCMCIA_DEVICE_PROD_ID12("MIDORI ELEC.", "LT-PCMT", 0x648d55c1, 0xbde526c7),
1624 PCMCIA_DEVICE_PROD_ID12("NEC", "PC-9801N-J12", 0x18df0ba0, 0xbc912d76),
1636 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "Fast-Ethernet", 0x281f1c5d, 0x45f1f3b4),
1639 PCMCIA_DEVICE_PROD_ID12("PCMCIA", "LNT-10TN", 0x281f1c5d, 0xe707f641),
1654 PCMCIA_DEVICE_PROD_ID12("SMC", "EZCard-10-PCMCIA", 0xc4f8b18b, 0xfb21d265),
1657 PCMCIA_DEVICE_PROD_ID12("TDK", "LAK-CD031 for PCMCIA", 0x1eae9475, 0x0ed386fa),
1663 PCMCIA_DEVICE_PROD_ID13("Xircom", "CFE-10", 0x2e3ee845, 0x22a49f89),
1664 PCMCIA_DEVICE_PROD_ID1("CyQ've 10 Base-T LAN CARD", 0x94faf360),
1665 PCMCIA_DEVICE_PROD_ID1("EP-210 PCMCIA LAN CARD.", 0x8850b4de),
1666 PCMCIA_DEVICE_PROD_ID1("ETHER-C16", 0x06a8514f),
1668 PCMCIA_DEVICE_PROD_ID2("EN-6200P2", 0xa996d078),
1671 …PCMCIA_PFC_DEVICE_CIS_PROD_ID12(0, "PCMCIA", "EN2218-LAN/MODEM", 0x281f1c5d, 0x570f348e, "cis/PCML…
1672 …PCMCIA_PFC_DEVICE_CIS_PROD_ID12(0, "PCMCIA", "UE2218-LAN/MODEM", 0x281f1c5d, 0x6fdcacee, "cis/PCML…
1680 …CIS_PROD_ID12("Allied Telesis,K.K", "Ethernet LAN Card", 0x2ad62f3c, 0x9fd2f0a2, "cis/LA-PCM.cis"),
1683 PCMCIA_DEVICE_CIS_PROD_ID12("PMX ", "PE-200", 0x34f3f1c8, 0x10b59f8c, "cis/PE-200.cis"),
1693 MODULE_FIRMWARE("cis/LA-PCM.cis");
1696 MODULE_FIRMWARE("cis/PE-200.cis");