Lines Matching +full:multi +full:- +full:line
70 /* Table of multi-port card ID's */
75 int multi; /* 1 = multifunction, > 1 = # ports */ member
85 int multi; member
90 int line[4]; member
101 * vers_1 5.0, "Brain Boxes", "2-Port RS232 card", "r6"
111 port->uartclk = 14745600; in quirk_setup_brainboxes_0104()
129 return -ENODEV; in quirk_post_ibm()
134 * be handled by setting the quirk entry .multi = 0 | 1 ?
138 struct serial_info *info = link->priv; in quirk_config_nokia()
140 if (info->multi > 1) in quirk_config_nokia()
141 info->multi = 1; in quirk_config_nokia()
146 struct serial_info *info = link->priv; in quirk_wakeup_oxsemi()
148 if (info->c950ctrl) in quirk_wakeup_oxsemi()
149 outb(12, info->c950ctrl + 1); in quirk_wakeup_oxsemi()
160 struct serial_info *info = link->priv; in quirk_wakeup_possio_gcc()
161 unsigned int ctrl = info->c950ctrl; in quirk_wakeup_possio_gcc()
183 struct serial_info *info = link->priv; in quirk_config_socket()
185 if (info->multi) in quirk_config_socket()
186 link->config_flags |= CONF_ENABLE_ESR; in quirk_config_socket()
193 .multi = -1,
198 .multi = -1,
203 .multi = -1,
208 .multi = 2,
212 .multi = 4,
216 .multi = -1,
221 .multi = 4,
225 .multi = -1,
230 .multi = -1,
235 .multi = 2,
239 .multi = 2,
243 .multi = 2,
247 .multi = 4,
251 .multi = 2,
256 .multi = -1,
267 struct serial_info *info = link->priv; in serial_remove()
270 dev_dbg(&link->dev, "serial_release\n"); in serial_remove()
275 for (i = 0; i < info->ndev; i++) in serial_remove()
276 serial8250_unregister_port(info->line[i]); in serial_remove()
278 if (!info->slave) in serial_remove()
284 struct serial_info *info = link->priv; in serial_suspend()
287 for (i = 0; i < info->ndev; i++) in serial_suspend()
288 serial8250_suspend_port(info->line[i]); in serial_suspend()
295 struct serial_info *info = link->priv; in serial_resume()
298 for (i = 0; i < info->ndev; i++) in serial_resume()
299 serial8250_resume_port(info->line[i]); in serial_resume()
301 if (info->quirk && info->quirk->wakeup) in serial_resume()
302 info->quirk->wakeup(link); in serial_resume()
311 dev_dbg(&link->dev, "serial_attach()\n"); in serial_probe()
316 return -ENOMEM; in serial_probe()
317 info->p_dev = link; in serial_probe()
318 link->priv = info; in serial_probe()
320 link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO; in serial_probe()
322 link->config_flags |= CONF_ENABLE_SPKR; in serial_probe()
329 struct serial_info *info = link->priv; in serial_detach()
331 dev_dbg(&link->dev, "serial_detach\n"); in serial_detach()
348 int line; in setup_serial() local
355 port.dev = &handle->dev; in setup_serial()
359 if (info->quirk && info->quirk->setup) in setup_serial()
360 info->quirk->setup(handle, &port); in setup_serial()
362 line = serial8250_register_port(&port); in setup_serial()
363 if (line < 0) { in setup_serial()
366 return -EINVAL; in setup_serial()
369 info->line[info->ndev] = line; in setup_serial()
370 info->ndev++; in setup_serial()
380 struct serial_info *info = p_dev->priv; in pfc_config()
382 if ((p_dev->resource[1]->end != 0) && in pfc_config()
383 (resource_size(p_dev->resource[1]) == 8)) { in pfc_config()
384 port = p_dev->resource[1]->start; in pfc_config()
385 info->slave = 1; in pfc_config()
386 } else if ((info->manfid == MANFID_OSITECH) && in pfc_config()
387 (resource_size(p_dev->resource[0]) == 0x40)) { in pfc_config()
388 port = p_dev->resource[0]->start + 0x28; in pfc_config()
389 info->slave = 1; in pfc_config()
391 if (info->slave) in pfc_config()
392 return setup_serial(p_dev, info, port, p_dev->irq); in pfc_config()
394 dev_warn(&p_dev->dev, "no usable port range found, giving up\n"); in pfc_config()
395 return -ENODEV; in pfc_config()
403 if (p_dev->resource[0]->start == 0) in simple_config_check()
404 return -ENODEV; in simple_config_check()
407 p_dev->io_lines = 16; in simple_config_check()
409 if (p_dev->resource[0]->end != size_table[(*try >> 1)]) in simple_config_check()
410 return -ENODEV; in simple_config_check()
412 p_dev->resource[0]->end = 8; in simple_config_check()
413 p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH; in simple_config_check()
414 p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; in simple_config_check()
425 if (p_dev->io_lines > 3) in simple_config_check_notpicky()
426 return -ENODEV; in simple_config_check_notpicky()
428 p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH; in simple_config_check_notpicky()
429 p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; in simple_config_check_notpicky()
430 p_dev->resource[0]->end = 8; in simple_config_check_notpicky()
433 p_dev->resource[0]->start = base[j]; in simple_config_check_notpicky()
434 p_dev->io_lines = base[j] ? 16 : 3; in simple_config_check_notpicky()
438 return -ENODEV; in simple_config_check_notpicky()
443 struct serial_info *info = link->priv; in simple_config()
444 int i = -ENODEV, try; in simple_config()
448 link->config_flags |= CONF_AUTO_SET_VPP; in simple_config()
459 dev_warn(&link->dev, "no usable port range found, giving up\n"); in simple_config()
460 return -1; in simple_config()
463 if (info->multi && (info->manfid == MANFID_3COM)) in simple_config()
464 link->config_index &= ~(0x08); in simple_config()
469 if (info->quirk && info->quirk->config) in simple_config()
470 info->quirk->config(link); in simple_config()
474 return -1; in simple_config()
475 return setup_serial(link, info, link->resource[0]->start, link->irq); in simple_config()
480 int *multi = priv_data; in multi_config_check() local
482 if (p_dev->resource[1]->end) in multi_config_check()
483 return -EINVAL; in multi_config_check()
487 if (p_dev->resource[0]->end <= 8) in multi_config_check()
488 return -EINVAL; in multi_config_check()
490 p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH; in multi_config_check()
491 p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; in multi_config_check()
492 p_dev->resource[0]->end = *multi * 8; in multi_config_check()
495 return -ENODEV; in multi_config_check()
504 if (!p_dev->resource[0]->end || !p_dev->resource[1]->end || in multi_config_check_notpicky()
505 p_dev->resource[0]->start + 8 != p_dev->resource[1]->start) in multi_config_check_notpicky()
506 return -ENODEV; in multi_config_check_notpicky()
508 p_dev->resource[0]->end = p_dev->resource[1]->end = 8; in multi_config_check_notpicky()
509 p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH; in multi_config_check_notpicky()
510 p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; in multi_config_check_notpicky()
513 return -ENODEV; in multi_config_check_notpicky()
515 *base2 = p_dev->resource[0]->start + 8; in multi_config_check_notpicky()
521 struct serial_info *info = link->priv; in multi_config()
524 /* First, look for a generic full-sized window */ in multi_config()
525 if (!pcmcia_loop_config(link, multi_config_check, &info->multi)) in multi_config()
526 base2 = link->resource[0]->start + 8; in multi_config()
529 info->multi = 2; in multi_config()
532 dev_warn(&link->dev, "no usable port range " in multi_config()
534 return -ENODEV; in multi_config()
538 if (!link->irq) in multi_config()
539 dev_warn(&link->dev, "no usable IRQ found, continuing...\n"); in multi_config()
544 if (info->quirk && info->quirk->config) in multi_config()
545 info->quirk->config(link); in multi_config()
549 return -ENODEV; in multi_config()
551 /* The Oxford Semiconductor OXCF950 cards are in fact single-port: in multi_config()
555 if (info->manfid == MANFID_OXSEMI || (info->manfid == MANFID_POSSIO && in multi_config()
556 info->prodid == PRODID_POSSIO_GCC)) { in multi_config()
559 if (link->config_index == 1 || in multi_config()
560 link->config_index == 3) { in multi_config()
562 link->irq); in multi_config()
563 base2 = link->resource[0]->start; in multi_config()
565 err = setup_serial(link, info, link->resource[0]->start, in multi_config()
566 link->irq); in multi_config()
568 info->c950ctrl = base2; in multi_config()
574 if (info->quirk && info->quirk->wakeup) in multi_config()
575 info->quirk->wakeup(link); in multi_config()
580 setup_serial(link, info, link->resource[0]->start, link->irq); in multi_config()
581 for (i = 0; i < info->multi - 1; i++) in multi_config()
583 link->irq); in multi_config()
589 struct serial_info *info = p_dev->priv; in serial_check_for_multi()
591 if (!p_dev->resource[0]->end) in serial_check_for_multi()
592 return -EINVAL; in serial_check_for_multi()
594 if ((!p_dev->resource[1]->end) && (p_dev->resource[0]->end % 8 == 0)) in serial_check_for_multi()
595 info->multi = p_dev->resource[0]->end >> 3; in serial_check_for_multi()
597 if ((p_dev->resource[1]->end) && (p_dev->resource[0]->end == 8) in serial_check_for_multi()
598 && (p_dev->resource[1]->end == 8)) in serial_check_for_multi()
599 info->multi = 2; in serial_check_for_multi()
607 struct serial_info *info = link->priv; in serial_config()
610 dev_dbg(&link->dev, "serial_config\n"); in serial_config()
613 info->multi = (link->socket->functions > 1); in serial_config()
616 info->manfid = link->manf_id; in serial_config()
617 info->prodid = link->card_id; in serial_config()
621 quirks[i].manfid == info->manfid) && in serial_config()
623 quirks[i].prodid == info->prodid)) { in serial_config()
624 info->quirk = &quirks[i]; in serial_config()
628 /* Another check for dual-serial cards: look for either serial or in serial_config()
630 if ((info->multi == 0) && in serial_config()
631 (link->has_func_id) && in serial_config()
632 (link->socket->pcmcia_pfc == 0) && in serial_config()
633 ((link->func_id == CISTPL_FUNCID_MULTI) || in serial_config()
634 (link->func_id == CISTPL_FUNCID_SERIAL))) in serial_config()
638 * Apply any multi-port quirk. in serial_config()
640 if (info->quirk && info->quirk->multi != -1) in serial_config()
641 info->multi = info->quirk->multi; in serial_config()
643 dev_info(&link->dev, in serial_config()
644 "trying to set up [0x%04x:0x%04x] (pfc: %d, multi: %d, quirk: %p)\n", in serial_config()
645 link->manf_id, link->card_id, in serial_config()
646 link->socket->pcmcia_pfc, info->multi, info->quirk); in serial_config()
647 if (link->socket->pcmcia_pfc) in serial_config()
649 else if (info->multi > 1) in serial_config()
654 if (i || info->ndev == 0) in serial_config()
658 * Apply any post-init quirk. FIXME: This should really happen in serial_config()
661 if (info->quirk && info->quirk->post) in serial_config()
662 if (info->quirk->post(link)) in serial_config()
668 dev_warn(&link->dev, "failed to initialize\n"); in serial_config()
670 return -ENODEV; in serial_config()
698 PCMCIA_PFC_DEVICE_PROD_ID12(1, "ATKK", "LM33-PCM-T", 0xba9eb7e2, 0x077c174e),
699 PCMCIA_PFC_DEVICE_PROD_ID12(1, "D-Link", "DME336T", 0x1a424a1c, 0xb23897ff),
705 PCMCIA_PFC_DEVICE_PROD_ID12(1, "MICRO RESEARCH", "COMBO-L/M-336", 0xb2ced065, 0x3ced0555),
706 PCMCIA_PFC_DEVICE_PROD_ID12(1, "NEC", "PK-UG-J001" ,0x18df0ba0 ,0x831b1064),
721 …PCMCIA_MFC_DEVICE_PROD_ID123(1, "APEX DATA", "MULTICARD", "ETHERNET-MODEM", 0x11c2da09, 0x7289dc5d…
732 PCMCIA_DEVICE_MANF_CARD(0x0105, 0x100a), /* Xircom CM-56G */
742 PCMCIA_DEVICE_MANF_CARD(0x0124, 0x0100), /* Nokia DTP-2 ver II */
751 PCMCIA_DEVICE_PROD_ID134("ADV", "TECH", "COMpad-32/85", 0x67459937, 0x916d02ba, 0x8fbe92ae),
762 PCMCIA_DEVICE_PROD_ID12("Computerboards, Inc.", "PCM-COM422", 0xd0b78f51, 0x7e2d49ed),
767 PCMCIA_DEVICE_PROD_ID12("Intertex", "IX34-PCMCIA", 0xf8a097e3, 0x97880447),
768 …PCMCIA_DEVICE_PROD_ID12("IOTech Inc ", "PCMCIA Dual RS-232 Serial Port Card", 0x3bd2d898, 0x92abc9…
770 PCMCIA_DEVICE_PROD_ID12("Multi-Tech", "MT1432LT", 0x5f73be51, 0x0b3e2383),
771 PCMCIA_DEVICE_PROD_ID12("Multi-Tech", "MT2834LT", 0x5f73be51, 0x4cd7c09e),
775 …PCMCIA_DEVICE_PROD_ID12("Quatech Inc", "PCMCIA Dual RS-232 Serial Port Card", 0xc4420b35, 0x92abc9…
776 PCMCIA_DEVICE_PROD_ID12("Quatech Inc", "Dual RS-232 Serial Port PC Card", 0xc4420b35, 0x031a380d),
779 …PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "PCMCIA", "EN2218-LAN/MODEM", 0x281f1c5d, 0x570f348e, "cis/PCML…
780 …PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "PCMCIA", "UE2218-LAN/MODEM", 0x281f1c5d, 0x6fdcacee, "cis/PCML…
794 …ARD(0x0192, 0xa555, "cis/SW_555_SER.cis"), /* Sierra Aircard 555 CDMA 1xrtt Modem -- pre update */
795 …RD(0x013f, 0xa555, "cis/SW_555_SER.cis"), /* Sierra Aircard 555 CDMA 1xrtt Modem -- post update */
797 …PCMCIA_DEVICE_CIS_PROD_ID12("ADVANTECH", "COMpad-32/85B-2", 0x96913a85, 0x27ab5437, "cis/COMpad2.c…
798 …PCMCIA_DEVICE_CIS_PROD_ID12("ADVANTECH", "COMpad-32/85B-4", 0x96913a85, 0xcec8f102, "cis/COMpad4.c…
799 …PCMCIA_DEVICE_CIS_PROD_ID123("ADVANTECH", "COMpad-32/85", "1.0", 0x96913a85, 0x8fbe92ae, 0x0877b62…
800 PCMCIA_DEVICE_CIS_PROD_ID2("RS-COM 2P", 0xad20b156, "cis/RS-COM-2P.cis"),
807 …PCMCIA_DEVICE_PROD_ID12("ELAN DIGITAL SYSTEMS LTD, c2000.","SERIAL CARD: CF232-5",0x63f2e0bd,0xfce…
809 PCMCIA_DEVICE_PROD_ID12("Elan","Serial Port: CF232-5",0x3beb8cf2,0x20da4262),
845 MODULE_FIRMWARE("cis/RS-COM-2P.cis");