Lines Matching defs:smc

304     struct smc_private *smc;
313 smc = netdev_priv(dev);
314 smc->p_dev = link;
317 spin_lock_init(&smc->lock);
324 smc->mii_if.dev = dev;
325 smc->mii_if.mdio_read = mdio_read;
326 smc->mii_if.mdio_write = mdio_write;
327 smc->mii_if.phy_id_mask = 0x1f;
328 smc->mii_if.reg_num_mask = 0x1f;
381 struct smc_private *smc = netdev_priv(dev);
385 readb(smc->base+MEGAHERTZ_ISR);
387 readb(smc->base+MEGAHERTZ_ISR);
393 tmp = readb(smc->base + link->config_base + CISREG_COR);
395 writeb(tmp, smc->base + link->config_base + CISREG_COR);
424 struct smc_private *smc = netdev_priv(dev);
445 smc->base = ioremap(link->resource[2]->start,
447 offset = (smc->manfid == MANFID_MOTOROLA) ? link->config_base : 0;
450 (smc->manfid == MANFID_MEGAHERTZ) &&
451 (smc->cardid == PRODID_MEGAHERTZ_EM3288))
519 struct smc_private *smc = netdev_priv(dev);
524 writeb(iouart & 0xff, smc->base + MOT_UART + CISREG_IOBASE_0);
525 writeb((iouart >> 8) & 0xff, smc->base + MOT_UART + CISREG_IOBASE_1);
526 writeb(MOT_NORMAL, smc->base + MOT_UART + CISREG_COR);
529 writeb(ioaddr & 0xff, smc->base + MOT_LAN + CISREG_IOBASE_0);
530 writeb((ioaddr >> 8) & 0xff, smc->base + MOT_LAN + CISREG_IOBASE_1);
531 writeb(MOT_NORMAL, smc->base + MOT_LAN + CISREG_COR);
722 struct smc_private *smc = netdev_priv(dev);
725 if ((smc->manfid == MANFID_MEGAHERTZ) &&
726 (smc->cardid == PRODID_MEGAHERTZ_EM3288))
728 if (smc->manfid == MANFID_MOTOROLA)
730 if ((smc->manfid == MANFID_OSITECH) &&
731 (smc->cardid != PRODID_OSITECH_SEVEN)) {
736 if (((smc->manfid == MANFID_OSITECH) &&
737 (smc->cardid == PRODID_OSITECH_SEVEN)) ||
738 ((smc->manfid == MANFID_PSION) &&
739 (smc->cardid == PRODID_PSION_NET100))) {
808 struct smc_private *smc = netdev_priv(dev);
816 smc->manfid = link->manf_id;
817 smc->cardid = link->card_id;
819 if ((smc->manfid == MANFID_OSITECH) &&
820 (smc->cardid != PRODID_OSITECH_SEVEN)) {
822 } else if ((smc->manfid == MANFID_MOTOROLA) ||
823 ((smc->manfid == MANFID_MEGAHERTZ) &&
824 ((smc->cardid == PRODID_MEGAHERTZ_VARIOUS) ||
825 (smc->cardid == PRODID_MEGAHERTZ_EM3288)))) {
840 if (smc->manfid == MANFID_MOTOROLA)
850 switch (smc->manfid) {
853 i = osi_setup(link, smc->manfid, smc->cardid); break;
870 smc->duplex = 0;
871 smc->rx_ovrn = 0;
895 smc->cfg = inw(ioaddr + CONFIG) & ~CFG_AUI_SELECT;
896 smc->cfg |= CFG_NO_WAIT | CFG_16BIT | CFG_STATIC;
897 if (smc->manfid == MANFID_OSITECH)
898 smc->cfg |= CFG_IRQ_SEL_1 | CFG_IRQ_SEL_0;
900 smc->cfg |= CFG_MII_SELECT;
904 if (smc->cfg & CFG_MII_SELECT) {
911 smc->mii_if.phy_id = (i < 32) ? i : -1;
932 (smc->cfg & CFG_MII_SELECT) ? "MII" : if_names[dev->if_port]);
935 if (smc->cfg & CFG_MII_SELECT) {
936 if (smc->mii_if.phy_id != -1) {
938 smc->mii_if.phy_id, j);
958 struct smc_private *smc = netdev_priv(dev);
959 iounmap(smc->base);
1049 struct smc_private *smc = netdev_priv(dev);
1050 struct pcmcia_device *link = smc->p_dev;
1069 smc->saved_skb = NULL;
1070 smc->packets_waiting = 0;
1073 timer_setup(&smc->media, media_check, 0);
1074 mod_timer(&smc->media, jiffies + HZ);
1083 struct smc_private *smc = netdev_priv(dev);
1084 struct pcmcia_device *link = smc->p_dev;
1105 del_timer_sync(&smc->media);
1120 struct smc_private *smc = netdev_priv(dev);
1121 struct sk_buff *skb = smc->saved_skb;
1137 smc->saved_skb = NULL;
1173 smc->saved_skb = NULL;
1183 struct smc_private *smc = netdev_priv(dev);
1191 smc->saved_skb = NULL;
1198 struct smc_private *smc = netdev_priv(dev);
1209 if (smc->saved_skb) {
1215 smc->saved_skb = skb;
1222 smc->saved_skb = NULL;
1227 smc->packets_waiting++;
1229 spin_lock_irqsave(&smc->lock, flags);
1233 if (smc->rx_ovrn) {
1235 smc->rx_ovrn = 0;
1246 spin_unlock_irqrestore(&smc->lock, flags);
1254 spin_unlock_irqrestore(&smc->lock, flags);
1267 struct smc_private *smc = netdev_priv(dev);
1286 smc->tx_err++;
1294 outw(inw(ioaddr + TCR) | TCR_ENABLE | smc->duplex, ioaddr + TCR);
1300 smc->packets_waiting--;
1309 struct smc_private *smc = netdev_priv(dev);
1329 outw(inw(ioaddr + TCR) | TCR_ENABLE | smc->duplex, ioaddr + TCR);
1344 struct smc_private *smc = netdev_priv(dev);
1358 spin_lock(&smc->lock);
1359 smc->watchdog = 0;
1397 dev->stats.tx_packets += smc->packets_waiting;
1398 smc->packets_waiting = 0;
1415 if (smc->duplex)
1416 smc->rx_ovrn = 1; /* need MC_RESET outside smc_interrupt */
1435 if ((smc->manfid == MANFID_OSITECH) &&
1436 (smc->cardid != PRODID_OSITECH_SEVEN)) {
1441 if (smc->manfid == MANFID_MOTOROLA) {
1443 cor = readb(smc->base + MOT_UART + CISREG_COR);
1444 writeb(cor & ~COR_IREQ_ENA, smc->base + MOT_UART + CISREG_COR);
1445 writeb(cor, smc->base + MOT_UART + CISREG_COR);
1446 cor = readb(smc->base + MOT_LAN + CISREG_COR);
1447 writeb(cor & ~COR_IREQ_ENA, smc->base + MOT_LAN + CISREG_COR);
1448 writeb(cor, smc->base + MOT_LAN + CISREG_COR);
1451 if ((smc->base != NULL) && /* Megahertz MFC's */
1452 (smc->manfid == MANFID_MEGAHERTZ) &&
1453 (smc->cardid == PRODID_MEGAHERTZ_EM3288)) {
1456 tmp = readb(smc->base+MEGAHERTZ_ISR);
1457 tmp = readb(smc->base+MEGAHERTZ_ISR);
1460 writeb(tmp, smc->base + MEGAHERTZ_ISR);
1461 writeb(tmp, smc->base + MEGAHERTZ_ISR);
1464 spin_unlock(&smc->lock);
1495 struct smc_private *smc = netdev_priv(dev);
1514 smc->last_rx = jiffies;
1546 struct smc_private *smc = netdev_priv(dev);
1571 spin_lock_irqsave(&smc->lock, flags);
1578 spin_unlock_irqrestore(&smc->lock, flags);
1589 struct smc_private *smc = netdev_priv(dev);
1591 if (smc->cfg & CFG_MII_SELECT)
1614 struct smc_private *smc = netdev_priv(dev);
1621 outw(smc->cfg | CFG_AUI_SELECT, ioaddr + CONFIG);
1622 if ((smc->manfid == MANFID_OSITECH) &&
1623 (smc->cardid != PRODID_OSITECH_SEVEN))
1625 smc->media_status = ((dev->if_port == 0) ? 0x0001 : 0x0002);
1627 outw(smc->cfg, ioaddr + CONFIG);
1628 if ((smc->manfid == MANFID_OSITECH) &&
1629 (smc->cardid != PRODID_OSITECH_SEVEN))
1631 smc->media_status = ((dev->if_port == 0) ? 0x0012 : 0x4001);
1639 struct smc_private *smc = netdev_priv(dev);
1663 if ((smc->manfid == MANFID_OSITECH) &&
1664 (smc->cardid != PRODID_OSITECH_SEVEN))
1681 outw(((smc->cfg & CFG_MII_SELECT) ? 0 : TCR_MONCSN) |
1682 TCR_ENABLE | TCR_PAD_EN | smc->duplex, ioaddr + TCR);
1685 if (smc->cfg & CFG_MII_SELECT) {
1689 mdio_write(dev, smc->mii_if.phy_id, 0, 0x8000);
1692 mdio_write(dev, smc->mii_if.phy_id, 4, 0x01e1);
1695 mdio_write(dev, smc->mii_if.phy_id, 0, 0x0000);
1696 mdio_write(dev, smc->mii_if.phy_id, 0, 0x1200);
1713 struct smc_private *smc = from_timer(smc, t, media);
1714 struct net_device *dev = smc->mii_if.dev;
1720 spin_lock_irqsave(&smc->lock, flags);
1730 if (smc->rx_ovrn) {
1732 smc->rx_ovrn = 0;
1741 spin_unlock_irqrestore(&smc->lock, flags);
1745 if (smc->watchdog++ && ((i>>8) & i)) {
1746 if (!smc->fast_poll)
1751 smc->fast_poll = HZ;
1753 if (smc->fast_poll) {
1754 smc->fast_poll--;
1755 smc->media.expires = jiffies + HZ/100;
1756 add_timer(&smc->media);
1760 spin_lock_irqsave(&smc->lock, flags);
1764 if (smc->cfg & CFG_MII_SELECT) {
1765 if (smc->mii_if.phy_id < 0)
1769 link = mdio_read(dev, smc->mii_if.phy_id, 1);
1772 smc->mii_if.phy_id = -1;
1777 if (link != smc->link_status) {
1778 u_short p = mdio_read(dev, smc->mii_if.phy_id, 5);
1780 smc->duplex = (((p & 0x0100) || ((p & 0x1c0) == 0x40))
1785 (p & 0x0180) ? 100 : 10, smc->duplex ? 'F' : 'H');
1788 outw(inw(ioaddr + TCR) | smc->duplex, ioaddr + TCR);
1789 smc->link_status = link;
1795 if (time_after(jiffies, smc->last_rx + HZ)) {
1796 if (smc->tx_err || (smc->media_status & EPH_16COL))
1799 smc->tx_err = 0;
1801 if (media != smc->media_status) {
1802 if ((media & smc->media_status & 1) &&
1803 ((smc->media_status ^ media) & EPH_LINK_OK))
1805 smc->media_status & EPH_LINK_OK ? "lost" : "found");
1806 else if ((media & smc->media_status & 2) &&
1807 ((smc->media_status ^ media) & EPH_16COL))
1823 smc->media_status = media;
1827 smc->media.expires = jiffies + HZ;
1828 add_timer(&smc->media);
1830 spin_unlock_irqrestore(&smc->lock, flags);
1836 struct smc_private *smc = netdev_priv(dev);
1838 if (smc->cfg & CFG_MII_SELECT) {
1839 return mii_link_ok(&smc->mii_if);
1916 struct smc_private *smc = netdev_priv(dev);
1921 spin_lock_irqsave(&smc->lock, flags);
1923 if (smc->cfg & CFG_MII_SELECT)
1924 mii_ethtool_get_link_ksettings(&smc->mii_if, ecmd);
1928 spin_unlock_irqrestore(&smc->lock, flags);
1935 struct smc_private *smc = netdev_priv(dev);
1941 spin_lock_irqsave(&smc->lock, flags);
1943 if (smc->cfg & CFG_MII_SELECT)
1944 ret = mii_ethtool_set_link_ksettings(&smc->mii_if, ecmd);
1948 spin_unlock_irqrestore(&smc->lock, flags);
1954 struct smc_private *smc = netdev_priv(dev);
1960 spin_lock_irqsave(&smc->lock, flags);
1964 spin_unlock_irqrestore(&smc->lock, flags);
1970 struct smc_private *smc = netdev_priv(dev);
1971 if (smc->cfg & CFG_MII_SELECT) {
1977 res = mii_nway_restart(&smc->mii_if);
1996 struct smc_private *smc = netdev_priv(dev);
2006 spin_lock_irqsave(&smc->lock, flags);
2009 rc = generic_mii_ioctl(&smc->mii_if, mii, cmd, NULL);
2011 spin_unlock_irqrestore(&smc->lock, flags);