Lines Matching +full:modem +full:- +full:init
1 // SPDX-License-Identifier: (GPL-2.0 OR MPL-1.1)
69 /* Table of multi-port card ID's */
100 * vers_1 5.0, "Brain Boxes", "2-Port RS232 card", "r6"
104 /* Generic Modem: MD55x (GPRS/EDGE) have
110 uart->port.uartclk = 14745600; in quirk_setup_brainboxes_0104()
128 return -ENODEV; in quirk_post_ibm()
137 struct serial_info *info = link->priv; in quirk_config_nokia()
139 if (info->multi > 1) in quirk_config_nokia()
140 info->multi = 1; in quirk_config_nokia()
145 struct serial_info *info = link->priv; in quirk_wakeup_oxsemi()
147 if (info->c950ctrl) in quirk_wakeup_oxsemi()
148 outb(12, info->c950ctrl + 1); in quirk_wakeup_oxsemi()
159 struct serial_info *info = link->priv; in quirk_wakeup_possio_gcc()
160 unsigned int ctrl = info->c950ctrl; in quirk_wakeup_possio_gcc()
182 struct serial_info *info = link->priv; in quirk_config_socket()
184 if (info->multi) in quirk_config_socket()
185 link->config_flags |= CONF_ENABLE_ESR; in quirk_config_socket()
192 .multi = -1,
197 .multi = -1,
202 .multi = -1,
215 .multi = -1,
224 .multi = -1,
229 .multi = -1,
255 .multi = -1,
266 struct serial_info *info = link->priv; in serial_remove()
269 dev_dbg(&link->dev, "serial_release\n"); in serial_remove()
274 for (i = 0; i < info->ndev; i++) in serial_remove()
275 serial8250_unregister_port(info->line[i]); in serial_remove()
277 if (!info->slave) in serial_remove()
283 struct serial_info *info = link->priv; in serial_suspend()
286 for (i = 0; i < info->ndev; i++) in serial_suspend()
287 serial8250_suspend_port(info->line[i]); in serial_suspend()
294 struct serial_info *info = link->priv; in serial_resume()
297 for (i = 0; i < info->ndev; i++) in serial_resume()
298 serial8250_resume_port(info->line[i]); in serial_resume()
300 if (info->quirk && info->quirk->wakeup) in serial_resume()
301 info->quirk->wakeup(link); in serial_resume()
310 dev_dbg(&link->dev, "serial_attach()\n"); in serial_probe()
315 return -ENOMEM; in serial_probe()
316 info->p_dev = link; in serial_probe()
317 link->priv = info; in serial_probe()
319 link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO; in serial_probe()
321 link->config_flags |= CONF_ENABLE_SPKR; in serial_probe()
328 struct serial_info *info = link->priv; in serial_detach()
330 dev_dbg(&link->dev, "serial_detach\n"); in serial_detach()
354 uart.port.dev = &handle->dev; in setup_serial()
358 if (info->quirk && info->quirk->setup) in setup_serial()
359 info->quirk->setup(handle, &uart); in setup_serial()
365 return -EINVAL; in setup_serial()
368 info->line[info->ndev] = line; in setup_serial()
369 info->ndev++; in setup_serial()
379 struct serial_info *info = p_dev->priv; in pfc_config()
381 if ((p_dev->resource[1]->end != 0) && in pfc_config()
382 (resource_size(p_dev->resource[1]) == 8)) { in pfc_config()
383 port = p_dev->resource[1]->start; in pfc_config()
384 info->slave = 1; in pfc_config()
385 } else if ((info->manfid == MANFID_OSITECH) && in pfc_config()
386 (resource_size(p_dev->resource[0]) == 0x40)) { in pfc_config()
387 port = p_dev->resource[0]->start + 0x28; in pfc_config()
388 info->slave = 1; in pfc_config()
390 if (info->slave) in pfc_config()
391 return setup_serial(p_dev, info, port, p_dev->irq); in pfc_config()
393 dev_warn(&p_dev->dev, "no usable port range found, giving up\n"); in pfc_config()
394 return -ENODEV; in pfc_config()
402 if (p_dev->resource[0]->start == 0) in simple_config_check()
403 return -ENODEV; in simple_config_check()
406 p_dev->io_lines = 16; in simple_config_check()
408 if (p_dev->resource[0]->end != size_table[(*try >> 1)]) in simple_config_check()
409 return -ENODEV; in simple_config_check()
411 p_dev->resource[0]->end = 8; in simple_config_check()
412 p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH; in simple_config_check()
413 p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; in simple_config_check()
424 if (p_dev->io_lines > 3) in simple_config_check_notpicky()
425 return -ENODEV; in simple_config_check_notpicky()
427 p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH; in simple_config_check_notpicky()
428 p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; in simple_config_check_notpicky()
429 p_dev->resource[0]->end = 8; in simple_config_check_notpicky()
432 p_dev->resource[0]->start = base[j]; in simple_config_check_notpicky()
433 p_dev->io_lines = base[j] ? 16 : 3; in simple_config_check_notpicky()
437 return -ENODEV; in simple_config_check_notpicky()
442 struct serial_info *info = link->priv; in simple_config()
449 link->config_flags |= CONF_AUTO_SET_VPP; in simple_config()
462 dev_warn(&link->dev, "no usable port range found, giving up\n"); in simple_config()
463 return -1; in simple_config()
466 if (info->multi && (info->manfid == MANFID_3COM)) in simple_config()
467 link->config_index &= ~(0x08); in simple_config()
472 if (info->quirk && info->quirk->config) in simple_config()
473 info->quirk->config(link); in simple_config()
477 return -1; in simple_config()
478 return setup_serial(link, info, link->resource[0]->start, link->irq); in simple_config()
485 if (p_dev->resource[1]->end) in multi_config_check()
486 return -EINVAL; in multi_config_check()
492 if (p_dev->resource[0]->end <= 8) in multi_config_check()
493 return -EINVAL; in multi_config_check()
495 p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH; in multi_config_check()
496 p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; in multi_config_check()
497 p_dev->resource[0]->end = *multi * 8; in multi_config_check()
500 return -ENODEV; in multi_config_check()
509 if (!p_dev->resource[0]->end || !p_dev->resource[1]->end || in multi_config_check_notpicky()
510 p_dev->resource[0]->start + 8 != p_dev->resource[1]->start) in multi_config_check_notpicky()
511 return -ENODEV; in multi_config_check_notpicky()
513 p_dev->resource[0]->end = p_dev->resource[1]->end = 8; in multi_config_check_notpicky()
514 p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH; in multi_config_check_notpicky()
515 p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; in multi_config_check_notpicky()
518 return -ENODEV; in multi_config_check_notpicky()
520 *base2 = p_dev->resource[0]->start + 8; in multi_config_check_notpicky()
526 struct serial_info *info = link->priv; in multi_config()
529 /* First, look for a generic full-sized window */ in multi_config()
530 if (!pcmcia_loop_config(link, multi_config_check, &info->multi)) in multi_config()
531 base2 = link->resource[0]->start + 8; in multi_config()
534 info->multi = 2; in multi_config()
537 dev_warn(&link->dev, in multi_config()
539 return -ENODEV; in multi_config()
543 if (!link->irq) in multi_config()
544 dev_warn(&link->dev, "no usable IRQ found, continuing...\n"); in multi_config()
549 if (info->quirk && info->quirk->config) in multi_config()
550 info->quirk->config(link); in multi_config()
554 return -ENODEV; in multi_config()
556 /* The Oxford Semiconductor OXCF950 cards are in fact single-port: in multi_config()
560 if (info->manfid == MANFID_OXSEMI || (info->manfid == MANFID_POSSIO && in multi_config()
561 info->prodid == PRODID_POSSIO_GCC)) { in multi_config()
564 if (link->config_index == 1 || in multi_config()
565 link->config_index == 3) { in multi_config()
567 link->irq); in multi_config()
568 base2 = link->resource[0]->start; in multi_config()
570 err = setup_serial(link, info, link->resource[0]->start, in multi_config()
571 link->irq); in multi_config()
573 info->c950ctrl = base2; in multi_config()
579 if (info->quirk && info->quirk->wakeup) in multi_config()
580 info->quirk->wakeup(link); in multi_config()
585 setup_serial(link, info, link->resource[0]->start, link->irq); in multi_config()
586 for (i = 0; i < info->multi - 1; i++) in multi_config()
588 link->irq); in multi_config()
594 struct serial_info *info = p_dev->priv; in serial_check_for_multi()
596 if (!p_dev->resource[0]->end) in serial_check_for_multi()
597 return -EINVAL; in serial_check_for_multi()
599 if ((!p_dev->resource[1]->end) && (p_dev->resource[0]->end % 8 == 0)) in serial_check_for_multi()
600 info->multi = p_dev->resource[0]->end >> 3; in serial_check_for_multi()
602 if ((p_dev->resource[1]->end) && (p_dev->resource[0]->end == 8) in serial_check_for_multi()
603 && (p_dev->resource[1]->end == 8)) in serial_check_for_multi()
604 info->multi = 2; in serial_check_for_multi()
612 struct serial_info *info = link->priv; in serial_config()
615 dev_dbg(&link->dev, "serial_config\n"); in serial_config()
618 info->multi = (link->socket->functions > 1); in serial_config()
621 info->manfid = link->manf_id; in serial_config()
622 info->prodid = link->card_id; in serial_config()
626 quirks[i].manfid == info->manfid) && in serial_config()
628 quirks[i].prodid == info->prodid)) { in serial_config()
629 info->quirk = &quirks[i]; in serial_config()
634 * Another check for dual-serial cards: look for either serial or in serial_config()
637 if ((info->multi == 0) && in serial_config()
638 (link->has_func_id) && in serial_config()
639 (link->socket->pcmcia_pfc == 0) && in serial_config()
640 ((link->func_id == CISTPL_FUNCID_MULTI) || in serial_config()
641 (link->func_id == CISTPL_FUNCID_SERIAL))) { in serial_config()
647 * Apply any multi-port quirk. in serial_config()
649 if (info->quirk && info->quirk->multi != -1) in serial_config()
650 info->multi = info->quirk->multi; in serial_config()
652 dev_info(&link->dev, in serial_config()
654 link->manf_id, link->card_id, in serial_config()
655 link->socket->pcmcia_pfc, info->multi, info->quirk); in serial_config()
656 if (link->socket->pcmcia_pfc) in serial_config()
658 else if (info->multi > 1) in serial_config()
663 if (i || info->ndev == 0) in serial_config()
667 * Apply any post-init quirk. FIXME: This should really happen in serial_config()
670 if (info->quirk && info->quirk->post) in serial_config()
671 if (info->quirk->post(link)) in serial_config()
677 dev_warn(&link->dev, "failed to initialize\n"); in serial_config()
679 return -ENODEV; in serial_config()
697 …PCMCIA_PFC_DEVICE_PROD_ID123(1, "MEGAHERTZ", "CC/XJEM3288", "DATA/FAX/CELL ETHERNET MODEM", 0xf510…
698 …PCMCIA_PFC_DEVICE_PROD_ID123(1, "MEGAHERTZ", "CC/XJEM3336", "DATA/FAX/CELL ETHERNET MODEM", 0xf510…
699 …PCMCIA_PFC_DEVICE_PROD_ID123(1, "MEGAHERTZ", "EM1144T", "PCMCIA MODEM", 0xf510db04, 0x856d66c8, 0x…
700 …PCMCIA_PFC_DEVICE_PROD_ID123(1, "MEGAHERTZ", "XJEM1144/CCEM1144", "PCMCIA MODEM", 0xf510db04, 0x52…
707 PCMCIA_PFC_DEVICE_PROD_ID12(1, "ATKK", "LM33-PCM-T", 0xba9eb7e2, 0x077c174e),
708 PCMCIA_PFC_DEVICE_PROD_ID12(1, "D-Link", "DME336T", 0x1a424a1c, 0xb23897ff),
714 PCMCIA_PFC_DEVICE_PROD_ID12(1, "MICRO RESEARCH", "COMBO-L/M-336", 0xb2ced065, 0x3ced0555),
715 PCMCIA_PFC_DEVICE_PROD_ID12(1, "NEC", "PK-UG-J001", 0x18df0ba0, 0x831b1064),
716 …PCMCIA_PFC_DEVICE_PROD_ID12(1, "Ositech", "Trumpcard:Jack of Diamonds Modem+Ethernet", 0xc2f80cd, …
717 …PCMCIA_PFC_DEVICE_PROD_ID12(1, "Ositech", "Trumpcard:Jack of Hearts Modem+Ethernet", 0xc2f80cd, 0x…
721 PCMCIA_PFC_DEVICE_PROD_ID12(1, "Xircom", "CreditCard Ethernet+Modem II", 0x2e3ee845, 0xeca401bf),
730 …PCMCIA_MFC_DEVICE_PROD_ID123(1, "APEX DATA", "MULTICARD", "ETHERNET-MODEM", 0x11c2da09, 0x7289dc5d…
735 PCMCIA_MFC_DEVICE_PROD_ID2(1, "FAX/Modem/Ethernet Combo Card ", 0x1ed59302),
741 PCMCIA_DEVICE_MANF_CARD(0x0105, 0x100a), /* Xircom CM-56G */
751 PCMCIA_DEVICE_MANF_CARD(0x0124, 0x0100), /* Nokia DTP-2 ver II */
760 PCMCIA_DEVICE_PROD_ID134("ADV", "TECH", "COMpad-32/85", 0x67459937, 0x916d02ba, 0x8fbe92ae),
761 …PCMCIA_DEVICE_PROD_ID124("GATEWAY2000", "CC3144", "PCMCIA MODEM", 0x506bccae, 0xcb3685f1, 0xbd6c43…
762 PCMCIA_DEVICE_PROD_ID14("MEGAHERTZ", "PCMCIA MODEM", 0xf510db04, 0xbd6c43ef),
763 PCMCIA_DEVICE_PROD_ID124("TOSHIBA", "T144PF", "PCMCIA MODEM", 0xb4585a1a, 0x7271409c, 0xbd6c43ef),
765 …PCMCIA_DEVICE_PROD_ID123("Novatel Wireless", "Merlin UMTS Modem", "U630", 0x32607776, 0xd9e73b13, …
766 PCMCIA_DEVICE_PROD_ID13("MEGAHERTZ", "V.34 PCMCIA MODEM", 0xf510db04, 0xbb2cce4a),
768 PCMCIA_DEVICE_PROD_ID12("CIRRUS LOGIC", "FAX MODEM", 0xe625f451, 0xcecd6dfa),
769 PCMCIA_DEVICE_PROD_ID12("COMPAQ", "PCMCIA 28800 FAX/DATA MODEM", 0xa3a3062c, 0x8cbd7c76),
770 PCMCIA_DEVICE_PROD_ID12("COMPAQ", "PCMCIA 33600 FAX/DATA MODEM", 0xa3a3062c, 0x5a00ce95),
771 PCMCIA_DEVICE_PROD_ID12("Computerboards, Inc.", "PCM-COM422", 0xd0b78f51, 0x7e2d49ed),
774 PCMCIA_DEVICE_PROD_ID12("Intelligent", "ANGIA FAX/MODEM", 0xb496e65e, 0xf31602a6),
775 PCMCIA_DEVICE_PROD_ID12("Intel", "MODEM 2400+", 0x816cc815, 0x412729fb),
776 PCMCIA_DEVICE_PROD_ID12("Intertex", "IX34-PCMCIA", 0xf8a097e3, 0x97880447),
777 …PCMCIA_DEVICE_PROD_ID12("IOTech Inc ", "PCMCIA Dual RS-232 Serial Port Card", 0x3bd2d898, 0x92abc9…
778 PCMCIA_DEVICE_PROD_ID12("MACRONIX", "FAX/MODEM", 0x668388b3, 0x3f9bdf2f),
779 PCMCIA_DEVICE_PROD_ID12("Multi-Tech", "MT1432LT", 0x5f73be51, 0x0b3e2383),
780 PCMCIA_DEVICE_PROD_ID12("Multi-Tech", "MT2834LT", 0x5f73be51, 0x4cd7c09e),
782 …PCMCIA_DEVICE_PROD_ID12("Option International", "V34bis GSM/PSTN Data/Fax Modem", 0x9d7cd6f5, 0x5c…
784 …PCMCIA_DEVICE_PROD_ID12("Quatech Inc", "PCMCIA Dual RS-232 Serial Port Card", 0xc4420b35, 0x92abc9…
785 PCMCIA_DEVICE_PROD_ID12("Quatech Inc", "Dual RS-232 Serial Port PC Card", 0xc4420b35, 0x031a380d),
788 …PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "PCMCIA", "EN2218-LAN/MODEM", 0x281f1c5d, 0x570f348e, "cis/PCML…
789 …PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "PCMCIA", "UE2218-LAN/MODEM", 0x281f1c5d, 0x6fdcacee, "cis/PCML…
793 …PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "TOSHIBA", "Modem/LAN Card", 0xb4585a1a, 0x53f922f8, "cis/PCMLM…
794 …PCMCIA_MFC_DEVICE_CIS_PROD_ID12(1, "DAYNA COMMUNICATIONS", "LAN AND MODEM MULTIFUNCTION", 0x8fdf8f…
795 PCMCIA_MFC_DEVICE_CIS_PROD_ID4(1, "NSC MF LAN/Modem", 0x58fc6056, "cis/DP83903.cis"),
803 …ARD(0x0192, 0xa555, "cis/SW_555_SER.cis"), /* Sierra Aircard 555 CDMA 1xrtt Modem -- pre update */
804 …RD(0x013f, 0xa555, "cis/SW_555_SER.cis"), /* Sierra Aircard 555 CDMA 1xrtt Modem -- post update */
806 …PCMCIA_DEVICE_CIS_PROD_ID12("ADVANTECH", "COMpad-32/85B-2", 0x96913a85, 0x27ab5437, "cis/COMpad2.c…
807 …PCMCIA_DEVICE_CIS_PROD_ID12("ADVANTECH", "COMpad-32/85B-4", 0x96913a85, 0xcec8f102, "cis/COMpad4.c…
808 …PCMCIA_DEVICE_CIS_PROD_ID123("ADVANTECH", "COMpad-32/85", "1.0", 0x96913a85, 0x8fbe92ae, 0x0877b62…
809 PCMCIA_DEVICE_CIS_PROD_ID2("RS-COM 2P", 0xad20b156, "cis/RS-COM-2P.cis"),
816 …PCMCIA_DEVICE_PROD_ID12("ELAN DIGITAL SYSTEMS LTD, c2000.", "SERIAL CARD: CF232-5", 0x63f2e0bd, 0x…
818 PCMCIA_DEVICE_PROD_ID12("Elan", "Serial Port: CF232-5", 0x3beb8cf2, 0x20da4262),
854 MODULE_FIRMWARE("cis/RS-COM-2P.cis");