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);
233 static int fmvj18x_probe(struct pcmcia_device *link) in fmvj18x_probe() argument
238 dev_dbg(&link->dev, "fmvj18x_attach()\n"); in fmvj18x_probe()
245 link->priv = dev; in fmvj18x_probe()
246 lp->p_dev = link; in fmvj18x_probe()
250 link->resource[0]->end = 32; in fmvj18x_probe()
251 link->resource[0]->flags |= IO_DATA_PATH_WIDTH_AUTO; in fmvj18x_probe()
254 link->config_flags |= CONF_ENABLE_IRQ; in fmvj18x_probe()
261 return fmvj18x_config(link); in fmvj18x_probe()
266 static void fmvj18x_detach(struct pcmcia_device *link) in fmvj18x_detach() argument
268 struct net_device *dev = link->priv; in fmvj18x_detach()
270 dev_dbg(&link->dev, "fmvj18x_detach\n"); in fmvj18x_detach()
274 fmvj18x_release(link); in fmvj18x_detach()
281 static int mfc_try_io_port(struct pcmcia_device *link) in mfc_try_io_port() argument
288 link->resource[1]->start = serial_base[i]; in mfc_try_io_port()
289 link->resource[1]->flags |= IO_DATA_PATH_WIDTH_8; in mfc_try_io_port()
290 if (link->resource[1]->start == 0) { in mfc_try_io_port()
291 link->resource[1]->end = 0; in mfc_try_io_port()
294 ret = pcmcia_request_io(link); in mfc_try_io_port()
301 static int ungermann_try_io_port(struct pcmcia_device *link) in ungermann_try_io_port() argument
310 link->resource[0]->start = ioaddr; in ungermann_try_io_port()
311 ret = pcmcia_request_io(link); in ungermann_try_io_port()
314 link->config_index = in ungermann_try_io_port()
315 ((link->resource[0]->start & 0x0f0) >> 3) | 0x22; in ungermann_try_io_port()
327 static int fmvj18x_config(struct pcmcia_device *link) in fmvj18x_config() argument
329 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()
476 if (pcmcia_get_mac_from_cis(link, dev)) in fmvj18x_config()
499 if (fmvj18x_get_hwinfo(link, buggybuf) == -1) { in fmvj18x_config()
518 SET_NETDEV_DEV(dev, &link->dev); in fmvj18x_config()
533 fmvj18x_release(link); in fmvj18x_config()
538 static int fmvj18x_get_hwinfo(struct pcmcia_device *link, u_char *node_id) in fmvj18x_get_hwinfo() argument
544 link->resource[2]->flags |= WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; in fmvj18x_get_hwinfo()
545 link->resource[2]->start = 0; link->resource[2]->end = 0; in fmvj18x_get_hwinfo()
546 i = pcmcia_request_window(link, link->resource[2], 0); in fmvj18x_get_hwinfo()
550 base = ioremap(link->resource[2]->start, resource_size(link->resource[2])); in fmvj18x_get_hwinfo()
551 pcmcia_map_mem_page(link, link->resource[2], 0); in fmvj18x_get_hwinfo()
576 j = pcmcia_release_window(link, link->resource[2]); in fmvj18x_get_hwinfo()
582 static int fmvj18x_setup_mfc(struct pcmcia_device *link) in fmvj18x_setup_mfc() argument
585 struct net_device *dev = link->priv; in fmvj18x_setup_mfc()
590 link->resource[3]->flags = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; in fmvj18x_setup_mfc()
591 link->resource[3]->start = link->resource[3]->end = 0; in fmvj18x_setup_mfc()
592 i = pcmcia_request_window(link, link->resource[3], 0); in fmvj18x_setup_mfc()
596 lp->base = ioremap(link->resource[3]->start, in fmvj18x_setup_mfc()
597 resource_size(link->resource[3])); in fmvj18x_setup_mfc()
603 i = pcmcia_map_mem_page(link, link->resource[3], 0); in fmvj18x_setup_mfc()
625 static void fmvj18x_release(struct pcmcia_device *link) in fmvj18x_release() argument
628 struct net_device *dev = link->priv; in fmvj18x_release()
632 dev_dbg(&link->dev, "fmvj18x_release\n"); in fmvj18x_release()
640 pcmcia_disable_device(link); in fmvj18x_release()
644 static int fmvj18x_suspend(struct pcmcia_device *link) in fmvj18x_suspend() argument
646 struct net_device *dev = link->priv; in fmvj18x_suspend()
648 if (link->open) in fmvj18x_suspend()
654 static int fmvj18x_resume(struct pcmcia_device *link) in fmvj18x_resume() argument
656 struct net_device *dev = link->priv; in fmvj18x_resume()
658 if (link->open) { in fmvj18x_resume()
1062 struct pcmcia_device *link = lp->p_dev; in fjn_open() local
1066 if (!pcmcia_dev_present(link)) in fjn_open()
1069 link->open++; in fjn_open()
1087 struct pcmcia_device *link = lp->p_dev; in fjn_close() local
1110 link->open--; in fjn_close()