Lines Matching refs:link
108 static void quirk_setup_brainboxes_0104(struct pcmcia_device *link, struct uart_8250_port *uart) in quirk_setup_brainboxes_0104() argument
113 static int quirk_post_ibm(struct pcmcia_device *link) in quirk_post_ibm() argument
118 ret = pcmcia_read_config_byte(link, 0x800, &val); in quirk_post_ibm()
122 ret = pcmcia_write_config_byte(link, 0x800, val | 1); in quirk_post_ibm()
135 static void quirk_config_nokia(struct pcmcia_device *link) in quirk_config_nokia() argument
137 struct serial_info *info = link->priv; in quirk_config_nokia()
143 static void quirk_wakeup_oxsemi(struct pcmcia_device *link) in quirk_wakeup_oxsemi() argument
145 struct serial_info *info = link->priv; in quirk_wakeup_oxsemi()
157 static void quirk_wakeup_possio_gcc(struct pcmcia_device *link) in quirk_wakeup_possio_gcc() argument
159 struct serial_info *info = link->priv; in quirk_wakeup_possio_gcc()
180 static void quirk_config_socket(struct pcmcia_device *link) in quirk_config_socket() argument
182 struct serial_info *info = link->priv; in quirk_config_socket()
185 link->config_flags |= CONF_ENABLE_ESR; in quirk_config_socket()
261 static int serial_config(struct pcmcia_device *link);
264 static void serial_remove(struct pcmcia_device *link) in serial_remove() argument
266 struct serial_info *info = link->priv; in serial_remove()
269 dev_dbg(&link->dev, "serial_release\n"); in serial_remove()
278 pcmcia_disable_device(link); in serial_remove()
281 static int serial_suspend(struct pcmcia_device *link) in serial_suspend() argument
283 struct serial_info *info = link->priv; in serial_suspend()
292 static int serial_resume(struct pcmcia_device *link) in serial_resume() argument
294 struct serial_info *info = link->priv; in serial_resume()
301 info->quirk->wakeup(link); in serial_resume()
306 static int serial_probe(struct pcmcia_device *link) in serial_probe() argument
310 dev_dbg(&link->dev, "serial_attach()\n"); 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()
323 return serial_config(link); in serial_probe()
326 static void serial_detach(struct pcmcia_device *link) in serial_detach() argument
328 struct serial_info *info = link->priv; in serial_detach()
330 dev_dbg(&link->dev, "serial_detach\n"); in serial_detach()
335 serial_remove(link); in serial_detach()
440 static int simple_config(struct pcmcia_device *link) in simple_config() argument
442 struct serial_info *info = link->priv; in simple_config()
449 link->config_flags |= CONF_AUTO_SET_VPP; in simple_config()
451 if (!pcmcia_loop_config(link, simple_config_check, &try)) in simple_config()
459 if (!pcmcia_loop_config(link, simple_config_check_notpicky, NULL)) in simple_config()
462 dev_warn(&link->dev, "no usable port range found, giving up\n"); in simple_config()
467 link->config_index &= ~(0x08); in simple_config()
473 info->quirk->config(link); in simple_config()
475 ret = pcmcia_enable_device(link); in simple_config()
478 return setup_serial(link, info, link->resource[0]->start, link->irq); in simple_config()
524 static int multi_config(struct pcmcia_device *link) in multi_config() argument
526 struct serial_info *info = link->priv; 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()
535 if (pcmcia_loop_config(link, multi_config_check_notpicky, in multi_config()
537 dev_warn(&link->dev, in multi_config()
543 if (!link->irq) in multi_config()
544 dev_warn(&link->dev, "no usable IRQ found, continuing...\n"); in multi_config()
550 info->quirk->config(link); in multi_config()
552 i = pcmcia_enable_device(link); in multi_config()
564 if (link->config_index == 1 || in multi_config()
565 link->config_index == 3) { in multi_config()
566 err = setup_serial(link, info, base2, 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()
580 info->quirk->wakeup(link); in multi_config()
585 setup_serial(link, info, link->resource[0]->start, link->irq); in multi_config()
587 setup_serial(link, info, base2 + (8 * i), in multi_config()
588 link->irq); in multi_config()
610 static int serial_config(struct pcmcia_device *link) in serial_config() argument
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()
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()
642 if (pcmcia_loop_config(link, serial_check_for_multi, info)) 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()
657 i = pfc_config(link); in serial_config()
659 i = multi_config(link); in serial_config()
661 i = simple_config(link); in serial_config()
671 if (info->quirk->post(link)) in serial_config()
677 dev_warn(&link->dev, "failed to initialize\n"); in serial_config()
678 serial_remove(link); in serial_config()