Lines Matching defs:link

108 static void quirk_setup_brainboxes_0104(struct pcmcia_device *link, struct uart_8250_port *uart)
113 static int quirk_post_ibm(struct pcmcia_device *link)
118 ret = pcmcia_read_config_byte(link, 0x800, &val);
122 ret = pcmcia_write_config_byte(link, 0x800, val | 1);
135 static void quirk_config_nokia(struct pcmcia_device *link)
137 struct serial_info *info = link->priv;
143 static void quirk_wakeup_oxsemi(struct pcmcia_device *link)
145 struct serial_info *info = link->priv;
157 static void quirk_wakeup_possio_gcc(struct pcmcia_device *link)
159 struct serial_info *info = link->priv;
180 static void quirk_config_socket(struct pcmcia_device *link)
182 struct serial_info *info = link->priv;
185 link->config_flags |= CONF_ENABLE_ESR;
261 static int serial_config(struct pcmcia_device *link);
264 static void serial_remove(struct pcmcia_device *link)
266 struct serial_info *info = link->priv;
269 dev_dbg(&link->dev, "serial_release\n");
278 pcmcia_disable_device(link);
281 static int serial_suspend(struct pcmcia_device *link)
283 struct serial_info *info = link->priv;
292 static int serial_resume(struct pcmcia_device *link)
294 struct serial_info *info = link->priv;
301 info->quirk->wakeup(link);
306 static int serial_probe(struct pcmcia_device *link)
311 dev_dbg(&link->dev, "serial_attach()\n");
317 info->p_dev = link;
318 link->priv = info;
320 link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO;
322 link->config_flags |= CONF_ENABLE_SPKR;
324 ret = serial_config(link);
335 static void serial_detach(struct pcmcia_device *link)
337 struct serial_info *info = link->priv;
339 dev_dbg(&link->dev, "serial_detach\n");
344 serial_remove(link);
449 static int simple_config(struct pcmcia_device *link)
451 struct serial_info *info = link->priv;
458 link->config_flags |= CONF_AUTO_SET_VPP;
460 if (!pcmcia_loop_config(link, simple_config_check, &try))
468 if (!pcmcia_loop_config(link, simple_config_check_notpicky, NULL))
471 dev_warn(&link->dev, "no usable port range found, giving up\n");
476 link->config_index &= ~(0x08);
482 info->quirk->config(link);
484 ret = pcmcia_enable_device(link);
487 return setup_serial(link, info, link->resource[0]->start, link->irq);
533 static int multi_config(struct pcmcia_device *link)
535 struct serial_info *info = link->priv;
539 if (!pcmcia_loop_config(link, multi_config_check, &info->multi))
540 base2 = link->resource[0]->start + 8;
544 if (pcmcia_loop_config(link, multi_config_check_notpicky,
546 dev_warn(&link->dev,
552 if (!link->irq)
553 dev_warn(&link->dev, "no usable IRQ found, continuing...\n");
559 info->quirk->config(link);
561 i = pcmcia_enable_device(link);
573 if (link->config_index == 1 ||
574 link->config_index == 3) {
575 err = setup_serial(link, info, base2,
576 link->irq);
577 base2 = link->resource[0]->start;
579 err = setup_serial(link, info, link->resource[0]->start,
580 link->irq);
589 info->quirk->wakeup(link);
594 setup_serial(link, info, link->resource[0]->start, link->irq);
596 setup_serial(link, info, base2 + (8 * i),
597 link->irq);
619 static int serial_config(struct pcmcia_device *link)
621 struct serial_info *info = link->priv;
624 dev_dbg(&link->dev, "serial_config\n");
627 info->multi = (link->socket->functions > 1);
630 info->manfid = link->manf_id;
631 info->prodid = link->card_id;
647 (link->has_func_id) &&
648 (link->socket->pcmcia_pfc == 0) &&
649 ((link->func_id == CISTPL_FUNCID_MULTI) ||
650 (link->func_id == CISTPL_FUNCID_SERIAL))) {
651 if (pcmcia_loop_config(link, serial_check_for_multi, info))
661 dev_info(&link->dev,
663 link->manf_id, link->card_id,
664 link->socket->pcmcia_pfc, info->multi, info->quirk);
665 if (link->socket->pcmcia_pfc)
666 i = pfc_config(link);
668 i = multi_config(link);
670 i = simple_config(link);
680 if (info->quirk->post(link))
686 dev_warn(&link->dev, "failed to initialize\n");
687 serial_remove(link);