Lines Matching defs:link

268 static int smc91c92_config(struct pcmcia_device *link);
269 static void smc91c92_release(struct pcmcia_device *link);
302 static int smc91c92_probe(struct pcmcia_device *link)
307 dev_dbg(&link->dev, "smc91c92_attach()\n");
314 smc->p_dev = link;
315 link->priv = dev;
330 return smc91c92_config(link);
333 static void smc91c92_detach(struct pcmcia_device *link)
335 struct net_device *dev = link->priv;
337 dev_dbg(&link->dev, "smc91c92_detach\n");
341 smc91c92_release(link);
380 static int mhz_3288_power(struct pcmcia_device *link)
382 struct net_device *dev = link->priv;
395 tmp = readb(smc->base + link->config_base + CISREG_COR);
397 writeb(tmp, smc->base + link->config_base + CISREG_COR);
423 static int mhz_mfc_config(struct pcmcia_device *link)
425 struct net_device *dev = link->priv;
430 link->config_flags |= CONF_ENABLE_SPKR | CONF_ENABLE_IRQ |
435 if (pcmcia_loop_config(link, mhz_mfc_config_check, NULL))
438 dev->base_addr = link->resource[0]->start;
441 link->resource[2]->flags = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE;
442 link->resource[2]->start = link->resource[2]->end = 0;
443 i = pcmcia_request_window(link, link->resource[2], 0);
447 smc->base = ioremap(link->resource[2]->start,
448 resource_size(link->resource[2]));
449 offset = (smc->manfid == MANFID_MOTOROLA) ? link->config_base : 0;
450 i = pcmcia_map_mem_page(link, link->resource[2], offset);
454 mhz_3288_power(link);
478 static int mhz_setup(struct pcmcia_device *link)
480 struct net_device *dev = link->priv;
487 if ((link->prod_id[3]) &&
488 (cvt_ascii_address(dev, link->prod_id[3]) == 0))
493 if (!pcmcia_loop_tuple(link, CISTPL_VERS_1, pcmcia_get_versmac, dev))
498 len = pcmcia_get_tuple(link, 0x81, &buf);
518 static void mot_config(struct pcmcia_device *link)
520 struct net_device *dev = link->priv;
523 unsigned int iouart = link->resource[1]->start;
539 static int mot_setup(struct pcmcia_device *link)
541 struct net_device *dev = link->priv;
584 static int smc_config(struct pcmcia_device *link)
586 struct net_device *dev = link->priv;
589 link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO;
591 i = pcmcia_loop_config(link, smc_configcheck, NULL);
593 dev->base_addr = link->resource[0]->start;
599 static int smc_setup(struct pcmcia_device *link)
601 struct net_device *dev = link->priv;
604 if (!pcmcia_get_mac_from_cis(link, dev))
608 if (link->prod_id[2]) {
609 if (cvt_ascii_address(dev, link->prod_id[2]) == 0)
617 static int osi_config(struct pcmcia_device *link)
619 struct net_device *dev = link->priv;
623 link->config_flags |= CONF_ENABLE_SPKR | CONF_ENABLE_IRQ;
624 link->resource[0]->end = 64;
625 link->resource[1]->flags |= IO_DATA_PATH_WIDTH_8;
626 link->resource[1]->end = 8;
629 link->io_lines = 16;
630 link->config_index = 0x23;
633 link->resource[1]->start = com[j];
634 i = pcmcia_request_io(link);
640 link->config_index = 0x03;
641 link->resource[1]->end = 0;
642 i = pcmcia_request_io(link);
644 dev->base_addr = link->resource[0]->start + 0x10;
648 static int osi_load_firmware(struct pcmcia_device *link)
653 err = request_firmware(&fw, FIRMWARE_NAME, &link->dev);
661 outb(fw->data[i], link->resource[0]->start + 2);
684 static int osi_setup(struct pcmcia_device *link, u_short manfid, u_short cardid)
686 struct net_device *dev = link->priv;
690 if (pcmcia_loop_tuple(link, 0x90, pcmcia_osi_mac, dev))
697 rc = osi_load_firmware(link);
702 set_bits(0x300, link->resource[0]->start + OSITECH_AUI_PWR);
704 set_bits(0x300, link->resource[0]->start + OSITECH_RESET_ISR);
705 dev_dbg(&link->dev, "AUI/PWR: %4.4x RESET/ISR: %4.4x\n",
706 inw(link->resource[0]->start + OSITECH_AUI_PWR),
707 inw(link->resource[0]->start + OSITECH_RESET_ISR));
712 static int smc91c92_suspend(struct pcmcia_device *link)
714 struct net_device *dev = link->priv;
716 if (link->open)
722 static int smc91c92_resume(struct pcmcia_device *link)
724 struct net_device *dev = link->priv;
730 mhz_3288_power(link);
732 mot_config(link);
743 i = osi_load_firmware(link);
749 if (link->open) {
765 static int check_sig(struct pcmcia_device *link)
767 struct net_device *dev = link->priv;
780 width = (link->resource[0]->flags == IO_DATA_PATH_WIDTH_AUTO);
800 smc91c92_suspend(link);
801 pcmcia_fixup_iowidth(link);
802 smc91c92_resume(link);
803 return check_sig(link);
808 static int smc91c92_config(struct pcmcia_device *link)
810 struct net_device *dev = link->priv;
817 dev_dbg(&link->dev, "smc91c92_config\n");
819 smc->manfid = link->manf_id;
820 smc->cardid = link->card_id;
824 i = osi_config(link);
829 i = mhz_mfc_config(link);
831 i = smc_config(link);
836 i = pcmcia_request_irq(link, smc_interrupt);
839 i = pcmcia_enable_device(link);
844 mot_config(link);
846 dev->irq = link->irq;
851 dev_notice(&link->dev, "invalid if_port requested\n");
856 i = osi_setup(link, smc->manfid, smc->cardid); break;
859 i = smc_setup(link); break;
862 i = mhz_setup(link); break;
865 i = mot_setup(link); break;
869 dev_notice(&link->dev, "Unable to find hardware address.\n");
876 rev = check_sig(link);
919 SET_NETDEV_DEV(dev, &link->dev);
922 dev_err(&link->dev, "register_netdev() failed\n");
951 smc91c92_release(link);
956 static void smc91c92_release(struct pcmcia_device *link)
958 dev_dbg(&link->dev, "smc91c92_release\n");
959 if (link->resource[2]->end) {
960 struct net_device *dev = link->priv;
964 pcmcia_disable_device(link);
1053 struct pcmcia_device *link = smc->p_dev;
1055 dev_dbg(&link->dev, "%s: smc_open(%p), ID/Window %4.4x.\n",
1062 if (!pcmcia_dev_present(link))
1065 if (check_sig(link) < 0) {
1069 link->open++;
1087 struct pcmcia_device *link = smc->p_dev;
1090 dev_dbg(&link->dev, "%s: smc_close(), status %4.4x.\n",
1107 link->open--;
1334 /* Clear a link error interrupt. */
1662 Accept link errors, counter and Tx error interrupts. */
1720 u_short link;
1772 link = mdio_read(dev, smc->mii_if.phy_id, 1);
1773 if (!link || (link == 0xffff)) {
1779 link &= 0x0004;
1780 if (link != smc->link_status) {
1782 netdev_info(dev, "%s link beat\n", link ? "found" : "lost");
1785 if (link) {
1792 smc->link_status = link;
1807 netdev_info(dev, "%s link beat\n",