Lines Matching refs:link

78 static int fmvj18x_config(struct pcmcia_device *link);
79 static int fmvj18x_get_hwinfo(struct pcmcia_device *link, u_char *node_id);
80 static int fmvj18x_setup_mfc(struct pcmcia_device *link);
81 static void fmvj18x_release(struct pcmcia_device *link);
232 static int fmvj18x_probe(struct pcmcia_device *link) in fmvj18x_probe() argument
237 dev_dbg(&link->dev, "fmvj18x_attach()\n"); in fmvj18x_probe()
244 link->priv = dev; in fmvj18x_probe()
245 lp->p_dev = link; in fmvj18x_probe()
249 link->resource[0]->end = 32; in fmvj18x_probe()
250 link->resource[0]->flags |= IO_DATA_PATH_WIDTH_AUTO; in fmvj18x_probe()
253 link->config_flags |= CONF_ENABLE_IRQ; in fmvj18x_probe()
260 return fmvj18x_config(link); in fmvj18x_probe()
265 static void fmvj18x_detach(struct pcmcia_device *link) in fmvj18x_detach() argument
267 struct net_device *dev = link->priv; in fmvj18x_detach()
269 dev_dbg(&link->dev, "fmvj18x_detach\n"); in fmvj18x_detach()
273 fmvj18x_release(link); in fmvj18x_detach()
280 static int mfc_try_io_port(struct pcmcia_device *link) in mfc_try_io_port() argument
287 link->resource[1]->start = serial_base[i]; in mfc_try_io_port()
288 link->resource[1]->flags |= IO_DATA_PATH_WIDTH_8; in mfc_try_io_port()
289 if (link->resource[1]->start == 0) { in mfc_try_io_port()
290 link->resource[1]->end = 0; in mfc_try_io_port()
293 ret = pcmcia_request_io(link); in mfc_try_io_port()
300 static int ungermann_try_io_port(struct pcmcia_device *link) in ungermann_try_io_port() argument
309 link->resource[0]->start = ioaddr; in ungermann_try_io_port()
310 ret = pcmcia_request_io(link); in ungermann_try_io_port()
313 link->config_index = in ungermann_try_io_port()
314 ((link->resource[0]->start & 0x0f0) >> 3) | 0x22; in ungermann_try_io_port()
326 static int fmvj18x_config(struct pcmcia_device *link) in fmvj18x_config() argument
328 struct net_device *dev = link->priv; in fmvj18x_config()
339 dev_dbg(&link->dev, "fmvj18x_config\n"); in fmvj18x_config()
341 link->io_lines = 5; in fmvj18x_config()
343 len = pcmcia_get_tuple(link, CISTPL_FUNCE, &buf); in fmvj18x_config()
348 ret = pcmcia_loop_config(link, fmvj18x_ioprobe, NULL); in fmvj18x_config()
352 switch (link->manf_id) { in fmvj18x_config()
355 if (link->card_id == PRODID_TDK_GN3410 || in fmvj18x_config()
356 link->card_id == PRODID_TDK_NP9610 || in fmvj18x_config()
357 link->card_id == PRODID_TDK_MN3200) { in fmvj18x_config()
359 link->config_base = 0x800; in fmvj18x_config()
360 link->config_index = 0x47; in fmvj18x_config()
361 link->resource[1]->end = 8; in fmvj18x_config()
366 link->config_base = 0x800; in fmvj18x_config()
367 link->config_index = 0x47; in fmvj18x_config()
368 link->resource[1]->end = 8; in fmvj18x_config()
372 link->config_base = 0x800; in fmvj18x_config()
373 link->config_index = 0x47; in fmvj18x_config()
374 link->resource[1]->end = 8; in fmvj18x_config()
380 if (link->config_base == 0x0fe0) in fmvj18x_config()
382 else if (link->card_id == PRODID_FUJITSU_MBH10302) in fmvj18x_config()
386 else if (link->card_id == PRODID_FUJITSU_MBH10304) in fmvj18x_config()
396 switch (link->manf_id) { in fmvj18x_config()
398 if (link->card_id == PRODID_FUJITSU_MBH10304) { in fmvj18x_config()
400 link->config_index = 0x20; in fmvj18x_config()
403 link->config_index = 1; in fmvj18x_config()
411 link->config_index = 1; in fmvj18x_config()
415 if (link->resource[1]->end != 0) { in fmvj18x_config()
416 ret = mfc_try_io_port(link); in fmvj18x_config()
419 ret = ungermann_try_io_port(link); in fmvj18x_config()
422 ret = pcmcia_request_io(link); in fmvj18x_config()
426 ret = pcmcia_request_irq(link, fjn_interrupt); in fmvj18x_config()
429 ret = pcmcia_enable_device(link); in fmvj18x_config()
433 dev->irq = link->irq; in fmvj18x_config()
434 dev->base_addr = link->resource[0]->start; in fmvj18x_config()
436 if (resource_size(link->resource[1]) != 0) { in fmvj18x_config()
437 ret = fmvj18x_setup_mfc(link); in fmvj18x_config()
466 len = pcmcia_get_tuple(link, CISTPL_FUNCE, &buf); in fmvj18x_config()
475 if (pcmcia_get_mac_from_cis(link, dev)) in fmvj18x_config()
499 if (fmvj18x_get_hwinfo(link, buggybuf) == -1) { in fmvj18x_config()
517 SET_NETDEV_DEV(dev, &link->dev); in fmvj18x_config()
532 fmvj18x_release(link); in fmvj18x_config()
537 static int fmvj18x_get_hwinfo(struct pcmcia_device *link, u_char *node_id) in fmvj18x_get_hwinfo() argument
543 link->resource[2]->flags |= WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; in fmvj18x_get_hwinfo()
544 link->resource[2]->start = 0; link->resource[2]->end = 0; in fmvj18x_get_hwinfo()
545 i = pcmcia_request_window(link, link->resource[2], 0); in fmvj18x_get_hwinfo()
549 base = ioremap(link->resource[2]->start, resource_size(link->resource[2])); in fmvj18x_get_hwinfo()
551 pcmcia_release_window(link, link->resource[2]); in fmvj18x_get_hwinfo()
555 pcmcia_map_mem_page(link, link->resource[2], 0); in fmvj18x_get_hwinfo()
580 j = pcmcia_release_window(link, link->resource[2]); in fmvj18x_get_hwinfo()
586 static int fmvj18x_setup_mfc(struct pcmcia_device *link) in fmvj18x_setup_mfc() argument
589 struct net_device *dev = link->priv; in fmvj18x_setup_mfc()
594 link->resource[3]->flags = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; in fmvj18x_setup_mfc()
595 link->resource[3]->start = link->resource[3]->end = 0; in fmvj18x_setup_mfc()
596 i = pcmcia_request_window(link, link->resource[3], 0); in fmvj18x_setup_mfc()
600 lp->base = ioremap(link->resource[3]->start, in fmvj18x_setup_mfc()
601 resource_size(link->resource[3])); in fmvj18x_setup_mfc()
607 i = pcmcia_map_mem_page(link, link->resource[3], 0); in fmvj18x_setup_mfc()
629 static void fmvj18x_release(struct pcmcia_device *link) in fmvj18x_release() argument
632 struct net_device *dev = link->priv; in fmvj18x_release()
636 dev_dbg(&link->dev, "fmvj18x_release\n"); in fmvj18x_release()
644 pcmcia_disable_device(link); in fmvj18x_release()
648 static int fmvj18x_suspend(struct pcmcia_device *link) in fmvj18x_suspend() argument
650 struct net_device *dev = link->priv; in fmvj18x_suspend()
652 if (link->open) in fmvj18x_suspend()
658 static int fmvj18x_resume(struct pcmcia_device *link) in fmvj18x_resume() argument
660 struct net_device *dev = link->priv; in fmvj18x_resume()
662 if (link->open) { in fmvj18x_resume()
1066 struct pcmcia_device *link = lp->p_dev; in fjn_open() local
1070 if (!pcmcia_dev_present(link)) in fjn_open()
1073 link->open++; in fjn_open()
1091 struct pcmcia_device *link = lp->p_dev; in fjn_close() local
1114 link->open--; in fjn_close()