Lines Matching refs:smc
304 struct smc_private *smc; in smc91c92_probe() local
313 smc = netdev_priv(dev); in smc91c92_probe()
314 smc->p_dev = link; in smc91c92_probe()
317 spin_lock_init(&smc->lock); in smc91c92_probe()
324 smc->mii_if.dev = dev; in smc91c92_probe()
325 smc->mii_if.mdio_read = mdio_read; in smc91c92_probe()
326 smc->mii_if.mdio_write = mdio_write; in smc91c92_probe()
327 smc->mii_if.phy_id_mask = 0x1f; in smc91c92_probe()
328 smc->mii_if.reg_num_mask = 0x1f; in smc91c92_probe()
381 struct smc_private *smc = netdev_priv(dev); in mhz_3288_power() local
385 readb(smc->base+MEGAHERTZ_ISR); in mhz_3288_power()
387 readb(smc->base+MEGAHERTZ_ISR); in mhz_3288_power()
393 tmp = readb(smc->base + link->config_base + CISREG_COR); in mhz_3288_power()
395 writeb(tmp, smc->base + link->config_base + CISREG_COR); in mhz_3288_power()
424 struct smc_private *smc = netdev_priv(dev); in mhz_mfc_config() local
445 smc->base = ioremap(link->resource[2]->start, in mhz_mfc_config()
447 offset = (smc->manfid == MANFID_MOTOROLA) ? link->config_base : 0; in mhz_mfc_config()
450 (smc->manfid == MANFID_MEGAHERTZ) && in mhz_mfc_config()
451 (smc->cardid == PRODID_MEGAHERTZ_EM3288)) in mhz_mfc_config()
519 struct smc_private *smc = netdev_priv(dev); in mot_config() local
524 writeb(iouart & 0xff, smc->base + MOT_UART + CISREG_IOBASE_0); in mot_config()
525 writeb((iouart >> 8) & 0xff, smc->base + MOT_UART + CISREG_IOBASE_1); in mot_config()
526 writeb(MOT_NORMAL, smc->base + MOT_UART + CISREG_COR); in mot_config()
529 writeb(ioaddr & 0xff, smc->base + MOT_LAN + CISREG_IOBASE_0); in mot_config()
530 writeb((ioaddr >> 8) & 0xff, smc->base + MOT_LAN + CISREG_IOBASE_1); in mot_config()
531 writeb(MOT_NORMAL, smc->base + MOT_LAN + CISREG_COR); in mot_config()
722 struct smc_private *smc = netdev_priv(dev); in smc91c92_resume() local
725 if ((smc->manfid == MANFID_MEGAHERTZ) && in smc91c92_resume()
726 (smc->cardid == PRODID_MEGAHERTZ_EM3288)) in smc91c92_resume()
728 if (smc->manfid == MANFID_MOTOROLA) in smc91c92_resume()
730 if ((smc->manfid == MANFID_OSITECH) && in smc91c92_resume()
731 (smc->cardid != PRODID_OSITECH_SEVEN)) { in smc91c92_resume()
736 if (((smc->manfid == MANFID_OSITECH) && in smc91c92_resume()
737 (smc->cardid == PRODID_OSITECH_SEVEN)) || in smc91c92_resume()
738 ((smc->manfid == MANFID_PSION) && in smc91c92_resume()
739 (smc->cardid == PRODID_PSION_NET100))) { in smc91c92_resume()
808 struct smc_private *smc = netdev_priv(dev); in smc91c92_config() local
816 smc->manfid = link->manf_id; in smc91c92_config()
817 smc->cardid = link->card_id; in smc91c92_config()
819 if ((smc->manfid == MANFID_OSITECH) && in smc91c92_config()
820 (smc->cardid != PRODID_OSITECH_SEVEN)) { in smc91c92_config()
822 } else if ((smc->manfid == MANFID_MOTOROLA) || in smc91c92_config()
823 ((smc->manfid == MANFID_MEGAHERTZ) && in smc91c92_config()
824 ((smc->cardid == PRODID_MEGAHERTZ_VARIOUS) || in smc91c92_config()
825 (smc->cardid == PRODID_MEGAHERTZ_EM3288)))) { in smc91c92_config()
840 if (smc->manfid == MANFID_MOTOROLA) in smc91c92_config()
850 switch (smc->manfid) { in smc91c92_config()
853 i = osi_setup(link, smc->manfid, smc->cardid); break; in smc91c92_config()
870 smc->duplex = 0; in smc91c92_config()
871 smc->rx_ovrn = 0; in smc91c92_config()
895 smc->cfg = inw(ioaddr + CONFIG) & ~CFG_AUI_SELECT; in smc91c92_config()
896 smc->cfg |= CFG_NO_WAIT | CFG_16BIT | CFG_STATIC; in smc91c92_config()
897 if (smc->manfid == MANFID_OSITECH) in smc91c92_config()
898 smc->cfg |= CFG_IRQ_SEL_1 | CFG_IRQ_SEL_0; in smc91c92_config()
900 smc->cfg |= CFG_MII_SELECT; in smc91c92_config()
904 if (smc->cfg & CFG_MII_SELECT) { in smc91c92_config()
911 smc->mii_if.phy_id = (i < 32) ? i : -1; in smc91c92_config()
932 (smc->cfg & CFG_MII_SELECT) ? "MII" : if_names[dev->if_port]); in smc91c92_config()
935 if (smc->cfg & CFG_MII_SELECT) { in smc91c92_config()
936 if (smc->mii_if.phy_id != -1) { in smc91c92_config()
938 smc->mii_if.phy_id, j); in smc91c92_config()
958 struct smc_private *smc = netdev_priv(dev); in smc91c92_release() local
959 iounmap(smc->base); in smc91c92_release()
1049 struct smc_private *smc = netdev_priv(dev); in smc_open() local
1050 struct pcmcia_device *link = smc->p_dev; in smc_open()
1069 smc->saved_skb = NULL; in smc_open()
1070 smc->packets_waiting = 0; in smc_open()
1073 setup_timer(&smc->media, media_check, (u_long)dev); in smc_open()
1074 mod_timer(&smc->media, jiffies + HZ); in smc_open()
1083 struct smc_private *smc = netdev_priv(dev); in smc_close() local
1084 struct pcmcia_device *link = smc->p_dev; in smc_close()
1105 del_timer_sync(&smc->media); in smc_close()
1120 struct smc_private *smc = netdev_priv(dev); in smc_hardware_send_packet() local
1121 struct sk_buff *skb = smc->saved_skb; in smc_hardware_send_packet()
1137 smc->saved_skb = NULL; in smc_hardware_send_packet()
1173 smc->saved_skb = NULL; in smc_hardware_send_packet()
1183 struct smc_private *smc = netdev_priv(dev); in smc_tx_timeout() local
1191 smc->saved_skb = NULL; in smc_tx_timeout()
1198 struct smc_private *smc = netdev_priv(dev); in smc_start_xmit() local
1209 if (smc->saved_skb) { in smc_start_xmit()
1215 smc->saved_skb = skb; in smc_start_xmit()
1222 smc->saved_skb = NULL; in smc_start_xmit()
1227 smc->packets_waiting++; in smc_start_xmit()
1229 spin_lock_irqsave(&smc->lock, flags); in smc_start_xmit()
1233 if (smc->rx_ovrn) { in smc_start_xmit()
1235 smc->rx_ovrn = 0; in smc_start_xmit()
1246 spin_unlock_irqrestore(&smc->lock, flags); in smc_start_xmit()
1254 spin_unlock_irqrestore(&smc->lock, flags); in smc_start_xmit()
1267 struct smc_private *smc = netdev_priv(dev); in smc_tx_err() local
1286 smc->tx_err++; in smc_tx_err()
1294 outw(inw(ioaddr + TCR) | TCR_ENABLE | smc->duplex, ioaddr + TCR); in smc_tx_err()
1300 smc->packets_waiting--; in smc_tx_err()
1309 struct smc_private *smc = netdev_priv(dev); in smc_eph_irq() local
1329 outw(inw(ioaddr + TCR) | TCR_ENABLE | smc->duplex, ioaddr + TCR); in smc_eph_irq()
1344 struct smc_private *smc = netdev_priv(dev); in smc_interrupt() local
1358 spin_lock(&smc->lock); in smc_interrupt()
1359 smc->watchdog = 0; in smc_interrupt()
1397 dev->stats.tx_packets += smc->packets_waiting; in smc_interrupt()
1398 smc->packets_waiting = 0; in smc_interrupt()
1415 if (smc->duplex) in smc_interrupt()
1416 smc->rx_ovrn = 1; /* need MC_RESET outside smc_interrupt */ in smc_interrupt()
1435 if ((smc->manfid == MANFID_OSITECH) && in smc_interrupt()
1436 (smc->cardid != PRODID_OSITECH_SEVEN)) { in smc_interrupt()
1441 if (smc->manfid == MANFID_MOTOROLA) { in smc_interrupt()
1443 cor = readb(smc->base + MOT_UART + CISREG_COR); in smc_interrupt()
1444 writeb(cor & ~COR_IREQ_ENA, smc->base + MOT_UART + CISREG_COR); in smc_interrupt()
1445 writeb(cor, smc->base + MOT_UART + CISREG_COR); in smc_interrupt()
1446 cor = readb(smc->base + MOT_LAN + CISREG_COR); in smc_interrupt()
1447 writeb(cor & ~COR_IREQ_ENA, smc->base + MOT_LAN + CISREG_COR); in smc_interrupt()
1448 writeb(cor, smc->base + MOT_LAN + CISREG_COR); in smc_interrupt()
1451 if ((smc->base != NULL) && /* Megahertz MFC's */ in smc_interrupt()
1452 (smc->manfid == MANFID_MEGAHERTZ) && in smc_interrupt()
1453 (smc->cardid == PRODID_MEGAHERTZ_EM3288)) { in smc_interrupt()
1456 tmp = readb(smc->base+MEGAHERTZ_ISR); in smc_interrupt()
1457 tmp = readb(smc->base+MEGAHERTZ_ISR); in smc_interrupt()
1460 writeb(tmp, smc->base + MEGAHERTZ_ISR); in smc_interrupt()
1461 writeb(tmp, smc->base + MEGAHERTZ_ISR); in smc_interrupt()
1464 spin_unlock(&smc->lock); in smc_interrupt()
1545 struct smc_private *smc = netdev_priv(dev); in set_rx_mode() local
1570 spin_lock_irqsave(&smc->lock, flags); in set_rx_mode()
1577 spin_unlock_irqrestore(&smc->lock, flags); in set_rx_mode()
1588 struct smc_private *smc = netdev_priv(dev); in s9k_config() local
1590 if (smc->cfg & CFG_MII_SELECT) in s9k_config()
1613 struct smc_private *smc = netdev_priv(dev); in smc_set_xcvr() local
1620 outw(smc->cfg | CFG_AUI_SELECT, ioaddr + CONFIG); in smc_set_xcvr()
1621 if ((smc->manfid == MANFID_OSITECH) && in smc_set_xcvr()
1622 (smc->cardid != PRODID_OSITECH_SEVEN)) in smc_set_xcvr()
1624 smc->media_status = ((dev->if_port == 0) ? 0x0001 : 0x0002); in smc_set_xcvr()
1626 outw(smc->cfg, ioaddr + CONFIG); in smc_set_xcvr()
1627 if ((smc->manfid == MANFID_OSITECH) && in smc_set_xcvr()
1628 (smc->cardid != PRODID_OSITECH_SEVEN)) in smc_set_xcvr()
1630 smc->media_status = ((dev->if_port == 0) ? 0x0012 : 0x4001); in smc_set_xcvr()
1638 struct smc_private *smc = netdev_priv(dev); in smc_reset() local
1662 if ((smc->manfid == MANFID_OSITECH) && in smc_reset()
1663 (smc->cardid != PRODID_OSITECH_SEVEN)) in smc_reset()
1680 outw(((smc->cfg & CFG_MII_SELECT) ? 0 : TCR_MONCSN) | in smc_reset()
1681 TCR_ENABLE | TCR_PAD_EN | smc->duplex, ioaddr + TCR); in smc_reset()
1684 if (smc->cfg & CFG_MII_SELECT) { in smc_reset()
1688 mdio_write(dev, smc->mii_if.phy_id, 0, 0x8000); in smc_reset()
1691 mdio_write(dev, smc->mii_if.phy_id, 4, 0x01e1); in smc_reset()
1694 mdio_write(dev, smc->mii_if.phy_id, 0, 0x0000); in smc_reset()
1695 mdio_write(dev, smc->mii_if.phy_id, 0, 0x1200); in smc_reset()
1713 struct smc_private *smc = netdev_priv(dev); in media_check() local
1719 spin_lock_irqsave(&smc->lock, flags); in media_check()
1729 if (smc->rx_ovrn) { in media_check()
1731 smc->rx_ovrn = 0; in media_check()
1740 spin_unlock_irqrestore(&smc->lock, flags); in media_check()
1744 if (smc->watchdog++ && ((i>>8) & i)) { in media_check()
1745 if (!smc->fast_poll) in media_check()
1750 smc->fast_poll = HZ; in media_check()
1752 if (smc->fast_poll) { in media_check()
1753 smc->fast_poll--; in media_check()
1754 smc->media.expires = jiffies + HZ/100; in media_check()
1755 add_timer(&smc->media); in media_check()
1759 spin_lock_irqsave(&smc->lock, flags); in media_check()
1763 if (smc->cfg & CFG_MII_SELECT) { in media_check()
1764 if (smc->mii_if.phy_id < 0) in media_check()
1768 link = mdio_read(dev, smc->mii_if.phy_id, 1); in media_check()
1771 smc->mii_if.phy_id = -1; in media_check()
1776 if (link != smc->link_status) { in media_check()
1777 u_short p = mdio_read(dev, smc->mii_if.phy_id, 5); in media_check()
1779 smc->duplex = (((p & 0x0100) || ((p & 0x1c0) == 0x40)) in media_check()
1784 (p & 0x0180) ? 100 : 10, smc->duplex ? 'F' : 'H'); in media_check()
1787 outw(inw(ioaddr + TCR) | smc->duplex, ioaddr + TCR); in media_check()
1788 smc->link_status = link; in media_check()
1795 if (smc->tx_err || (smc->media_status & EPH_16COL)) in media_check()
1798 smc->tx_err = 0; in media_check()
1800 if (media != smc->media_status) { in media_check()
1801 if ((media & smc->media_status & 1) && in media_check()
1802 ((smc->media_status ^ media) & EPH_LINK_OK)) in media_check()
1804 smc->media_status & EPH_LINK_OK ? "lost" : "found"); in media_check()
1805 else if ((media & smc->media_status & 2) && in media_check()
1806 ((smc->media_status ^ media) & EPH_16COL)) in media_check()
1822 smc->media_status = media; in media_check()
1826 smc->media.expires = jiffies + HZ; in media_check()
1827 add_timer(&smc->media); in media_check()
1829 spin_unlock_irqrestore(&smc->lock, flags); in media_check()
1835 struct smc_private *smc = netdev_priv(dev); in smc_link_ok() local
1837 if (smc->cfg & CFG_MII_SELECT) { in smc_link_ok()
1838 return mii_link_ok(&smc->mii_if); in smc_link_ok()
1912 struct smc_private *smc = netdev_priv(dev); in smc_get_settings() local
1918 spin_lock_irqsave(&smc->lock, flags); in smc_get_settings()
1920 if (smc->cfg & CFG_MII_SELECT) in smc_get_settings()
1921 ret = mii_ethtool_gset(&smc->mii_if, ecmd); in smc_get_settings()
1925 spin_unlock_irqrestore(&smc->lock, flags); in smc_get_settings()
1931 struct smc_private *smc = netdev_priv(dev); in smc_set_settings() local
1937 spin_lock_irqsave(&smc->lock, flags); in smc_set_settings()
1939 if (smc->cfg & CFG_MII_SELECT) in smc_set_settings()
1940 ret = mii_ethtool_sset(&smc->mii_if, ecmd); in smc_set_settings()
1944 spin_unlock_irqrestore(&smc->lock, flags); in smc_set_settings()
1950 struct smc_private *smc = netdev_priv(dev); in smc_get_link() local
1956 spin_lock_irqsave(&smc->lock, flags); in smc_get_link()
1960 spin_unlock_irqrestore(&smc->lock, flags); in smc_get_link()
1966 struct smc_private *smc = netdev_priv(dev); in smc_nway_reset() local
1967 if (smc->cfg & CFG_MII_SELECT) { in smc_nway_reset()
1973 res = mii_nway_restart(&smc->mii_if); in smc_nway_reset()
1992 struct smc_private *smc = netdev_priv(dev); in smc_ioctl() local
2002 spin_lock_irqsave(&smc->lock, flags); in smc_ioctl()
2005 rc = generic_mii_ioctl(&smc->mii_if, mii, cmd, NULL); in smc_ioctl()
2007 spin_unlock_irqrestore(&smc->lock, flags); in smc_ioctl()