Lines Matching refs:link
107 static void quirk_setup_brainboxes_0104(struct pcmcia_device *link, struct uart_8250_port *uart) in quirk_setup_brainboxes_0104() argument
112 static int quirk_post_ibm(struct pcmcia_device *link) in quirk_post_ibm() argument
117 ret = pcmcia_read_config_byte(link, 0x800, &val); in quirk_post_ibm()
121 ret = pcmcia_write_config_byte(link, 0x800, val | 1); in quirk_post_ibm()
134 static void quirk_config_nokia(struct pcmcia_device *link) in quirk_config_nokia() argument
136 struct serial_info *info = link->priv; in quirk_config_nokia()
142 static void quirk_wakeup_oxsemi(struct pcmcia_device *link) in quirk_wakeup_oxsemi() argument
144 struct serial_info *info = link->priv; in quirk_wakeup_oxsemi()
156 static void quirk_wakeup_possio_gcc(struct pcmcia_device *link) in quirk_wakeup_possio_gcc() argument
158 struct serial_info *info = link->priv; in quirk_wakeup_possio_gcc()
179 static void quirk_config_socket(struct pcmcia_device *link) in quirk_config_socket() argument
181 struct serial_info *info = link->priv; in quirk_config_socket()
184 link->config_flags |= CONF_ENABLE_ESR; in quirk_config_socket()
260 static int serial_config(struct pcmcia_device * link);
263 static void serial_remove(struct pcmcia_device *link) in serial_remove() argument
265 struct serial_info *info = link->priv; in serial_remove()
268 dev_dbg(&link->dev, "serial_release\n"); in serial_remove()
277 pcmcia_disable_device(link); in serial_remove()
280 static int serial_suspend(struct pcmcia_device *link) in serial_suspend() argument
282 struct serial_info *info = link->priv; in serial_suspend()
291 static int serial_resume(struct pcmcia_device *link) in serial_resume() argument
293 struct serial_info *info = link->priv; in serial_resume()
300 info->quirk->wakeup(link); in serial_resume()
305 static int serial_probe(struct pcmcia_device *link) in serial_probe() argument
309 dev_dbg(&link->dev, "serial_attach()\n"); in serial_probe()
315 info->p_dev = link; in serial_probe()
316 link->priv = info; in serial_probe()
318 link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO; in serial_probe()
320 link->config_flags |= CONF_ENABLE_SPKR; in serial_probe()
322 return serial_config(link); in serial_probe()
325 static void serial_detach(struct pcmcia_device *link) in serial_detach() argument
327 struct serial_info *info = link->priv; in serial_detach()
329 dev_dbg(&link->dev, "serial_detach\n"); in serial_detach()
334 serial_remove(link); in serial_detach()
439 static int simple_config(struct pcmcia_device *link) in simple_config() argument
441 struct serial_info *info = link->priv; in simple_config()
446 link->config_flags |= CONF_AUTO_SET_VPP; in simple_config()
448 if (!pcmcia_loop_config(link, simple_config_check, &try)) in simple_config()
454 if (!pcmcia_loop_config(link, simple_config_check_notpicky, NULL)) in simple_config()
457 dev_warn(&link->dev, "no usable port range found, giving up\n"); in simple_config()
462 link->config_index &= ~(0x08); in simple_config()
468 info->quirk->config(link); in simple_config()
470 i = pcmcia_enable_device(link); in simple_config()
473 return setup_serial(link, info, link->resource[0]->start, link->irq); in simple_config()
517 static int multi_config(struct pcmcia_device *link) in multi_config() argument
519 struct serial_info *info = link->priv; in multi_config()
523 if (!pcmcia_loop_config(link, multi_config_check, &info->multi)) in multi_config()
524 base2 = link->resource[0]->start + 8; in multi_config()
528 if (pcmcia_loop_config(link, multi_config_check_notpicky, in multi_config()
530 dev_warn(&link->dev, "no usable port range " in multi_config()
536 if (!link->irq) in multi_config()
537 dev_warn(&link->dev, "no usable IRQ found, continuing...\n"); in multi_config()
543 info->quirk->config(link); in multi_config()
545 i = pcmcia_enable_device(link); in multi_config()
557 if (link->config_index == 1 || in multi_config()
558 link->config_index == 3) { in multi_config()
559 err = setup_serial(link, info, base2, in multi_config()
560 link->irq); in multi_config()
561 base2 = link->resource[0]->start; in multi_config()
563 err = setup_serial(link, info, link->resource[0]->start, in multi_config()
564 link->irq); in multi_config()
573 info->quirk->wakeup(link); in multi_config()
578 setup_serial(link, info, link->resource[0]->start, link->irq); in multi_config()
580 setup_serial(link, info, base2 + (8 * i), in multi_config()
581 link->irq); in multi_config()
603 static int serial_config(struct pcmcia_device * link) in serial_config() argument
605 struct serial_info *info = link->priv; in serial_config()
608 dev_dbg(&link->dev, "serial_config\n"); in serial_config()
611 info->multi = (link->socket->functions > 1); in serial_config()
614 info->manfid = link->manf_id; in serial_config()
615 info->prodid = link->card_id; in serial_config()
629 (link->has_func_id) && in serial_config()
630 (link->socket->pcmcia_pfc == 0) && in serial_config()
631 ((link->func_id == CISTPL_FUNCID_MULTI) || in serial_config()
632 (link->func_id == CISTPL_FUNCID_SERIAL))) in serial_config()
633 pcmcia_loop_config(link, serial_check_for_multi, info); in serial_config()
641 dev_info(&link->dev, in serial_config()
643 link->manf_id, link->card_id, in serial_config()
644 link->socket->pcmcia_pfc, info->multi, info->quirk); in serial_config()
645 if (link->socket->pcmcia_pfc) in serial_config()
646 i = pfc_config(link); in serial_config()
648 i = multi_config(link); in serial_config()
650 i = simple_config(link); in serial_config()
660 if (info->quirk->post(link)) in serial_config()
666 dev_warn(&link->dev, "failed to initialize\n"); in serial_config()
667 serial_remove(link); in serial_config()