Lines Matching refs:lp
206 #define SMC_ENABLE_INT(lp, x) do { \ argument
209 spin_lock_irqsave(&lp->lock, smc_enable_flags); \
210 mask = SMC_GET_INT_MASK(lp); \
212 SMC_SET_INT_MASK(lp, mask); \
213 spin_unlock_irqrestore(&lp->lock, smc_enable_flags); \
217 #define SMC_DISABLE_INT(lp, x) do { \ argument
220 spin_lock_irqsave(&lp->lock, smc_disable_flags); \
221 mask = SMC_GET_INT_MASK(lp); \
223 SMC_SET_INT_MASK(lp, mask); \
224 spin_unlock_irqrestore(&lp->lock, smc_disable_flags); \
232 #define SMC_WAIT_MMU_BUSY(lp) do { \ argument
233 if (unlikely(SMC_GET_MMU_CMD(lp) & MC_BUSY)) { \
235 while (SMC_GET_MMU_CMD(lp) & MC_BUSY) { \
252 struct smc_local *lp = netdev_priv(dev); in smc_reset() local
253 void __iomem *ioaddr = lp->base; in smc_reset()
260 spin_lock_irq(&lp->lock); in smc_reset()
261 SMC_SELECT_BANK(lp, 2); in smc_reset()
262 SMC_SET_INT_MASK(lp, 0); in smc_reset()
263 pending_skb = lp->pending_tx_skb; in smc_reset()
264 lp->pending_tx_skb = NULL; in smc_reset()
265 spin_unlock_irq(&lp->lock); in smc_reset()
278 SMC_SELECT_BANK(lp, 0); in smc_reset()
279 SMC_SET_RCR(lp, RCR_SOFTRST); in smc_reset()
286 SMC_SELECT_BANK(lp, 1); in smc_reset()
295 if (lp->cfg.flags & SMC91X_NOWAIT) in smc_reset()
304 SMC_SET_CONFIG(lp, cfg); in smc_reset()
317 SMC_SELECT_BANK(lp, 0); in smc_reset()
318 SMC_SET_RCR(lp, RCR_CLEAR); in smc_reset()
319 SMC_SET_TCR(lp, TCR_CLEAR); in smc_reset()
321 SMC_SELECT_BANK(lp, 1); in smc_reset()
322 ctl = SMC_GET_CTL(lp) | CTL_LE_ENABLE; in smc_reset()
333 SMC_SET_CTL(lp, ctl); in smc_reset()
336 SMC_SELECT_BANK(lp, 2); in smc_reset()
337 SMC_SET_MMU_CMD(lp, MC_RESET); in smc_reset()
338 SMC_WAIT_MMU_BUSY(lp); in smc_reset()
346 struct smc_local *lp = netdev_priv(dev); in smc_enable() local
347 void __iomem *ioaddr = lp->base; in smc_enable()
353 SMC_SELECT_BANK(lp, 0); in smc_enable()
354 SMC_SET_TCR(lp, lp->tcr_cur_mode); in smc_enable()
355 SMC_SET_RCR(lp, lp->rcr_cur_mode); in smc_enable()
357 SMC_SELECT_BANK(lp, 1); in smc_enable()
358 SMC_SET_MAC_ADDR(lp, dev->dev_addr); in smc_enable()
362 if (lp->version >= (CHIP_91100 << 4)) in smc_enable()
364 SMC_SELECT_BANK(lp, 2); in smc_enable()
365 SMC_SET_INT_MASK(lp, mask); in smc_enable()
380 struct smc_local *lp = netdev_priv(dev); in smc_shutdown() local
381 void __iomem *ioaddr = lp->base; in smc_shutdown()
387 spin_lock_irq(&lp->lock); in smc_shutdown()
388 SMC_SELECT_BANK(lp, 2); in smc_shutdown()
389 SMC_SET_INT_MASK(lp, 0); in smc_shutdown()
390 pending_skb = lp->pending_tx_skb; in smc_shutdown()
391 lp->pending_tx_skb = NULL; in smc_shutdown()
392 spin_unlock_irq(&lp->lock); in smc_shutdown()
397 SMC_SELECT_BANK(lp, 0); in smc_shutdown()
398 SMC_SET_RCR(lp, RCR_CLEAR); in smc_shutdown()
399 SMC_SET_TCR(lp, TCR_CLEAR); in smc_shutdown()
403 SMC_SELECT_BANK(lp, 1); in smc_shutdown()
404 SMC_SET_CONFIG(lp, SMC_GET_CONFIG(lp) & ~CONFIG_EPH_POWER_EN); in smc_shutdown()
413 struct smc_local *lp = netdev_priv(dev); in smc_rcv() local
414 void __iomem *ioaddr = lp->base; in smc_rcv()
419 packet_number = SMC_GET_RXFIFO(lp); in smc_rcv()
426 SMC_SET_PTR(lp, PTR_READ | PTR_RCV | PTR_AUTOINC); in smc_rcv()
429 SMC_GET_PKT_HDR(lp, status, packet_len); in smc_rcv()
447 SMC_WAIT_MMU_BUSY(lp); in smc_rcv()
448 SMC_SET_MMU_CMD(lp, MC_RELEASE); in smc_rcv()
475 SMC_WAIT_MMU_BUSY(lp); in smc_rcv()
476 SMC_SET_MMU_CMD(lp, MC_RELEASE); in smc_rcv()
485 if (lp->version == 0x90) in smc_rcv()
495 SMC_PULL_DATA(lp, data, packet_len - 4); in smc_rcv()
497 SMC_WAIT_MMU_BUSY(lp); in smc_rcv()
498 SMC_SET_MMU_CMD(lp, MC_RELEASE); in smc_rcv()
554 struct smc_local *lp = netdev_priv(dev); in smc_hardware_send_pkt() local
555 void __iomem *ioaddr = lp->base; in smc_hardware_send_pkt()
563 if (!smc_special_trylock(&lp->lock, flags)) { in smc_hardware_send_pkt()
565 tasklet_schedule(&lp->tx_task); in smc_hardware_send_pkt()
569 skb = lp->pending_tx_skb; in smc_hardware_send_pkt()
571 smc_special_unlock(&lp->lock, flags); in smc_hardware_send_pkt()
574 lp->pending_tx_skb = NULL; in smc_hardware_send_pkt()
576 packet_no = SMC_GET_AR(lp); in smc_hardware_send_pkt()
581 smc_special_unlock(&lp->lock, flags); in smc_hardware_send_pkt()
586 SMC_SET_PN(lp, packet_no); in smc_hardware_send_pkt()
587 SMC_SET_PTR(lp, PTR_AUTOINC); in smc_hardware_send_pkt()
599 SMC_PUT_PKT_HDR(lp, 0, len + 6); in smc_hardware_send_pkt()
602 SMC_PUSH_DATA(lp, buf, len & ~1); in smc_hardware_send_pkt()
605 SMC_outw(((len & 1) ? (0x2000 | buf[len-1]) : 0), ioaddr, DATA_REG(lp)); in smc_hardware_send_pkt()
619 SMC_SET_MMU_CMD(lp, MC_ENQUEUE); in smc_hardware_send_pkt()
620 smc_special_unlock(&lp->lock, flags); in smc_hardware_send_pkt()
626 SMC_ENABLE_INT(lp, IM_TX_INT | IM_TX_EMPTY_INT); in smc_hardware_send_pkt()
642 struct smc_local *lp = netdev_priv(dev); in smc_hard_start_xmit() local
643 void __iomem *ioaddr = lp->base; in smc_hard_start_xmit()
649 BUG_ON(lp->pending_tx_skb != NULL); in smc_hard_start_xmit()
671 smc_special_lock(&lp->lock, flags); in smc_hard_start_xmit()
674 SMC_SET_MMU_CMD(lp, MC_ALLOC | numPages); in smc_hard_start_xmit()
682 status = SMC_GET_INT(lp); in smc_hard_start_xmit()
684 SMC_ACK_INT(lp, IM_ALLOC_INT); in smc_hard_start_xmit()
689 smc_special_unlock(&lp->lock, flags); in smc_hard_start_xmit()
691 lp->pending_tx_skb = skb; in smc_hard_start_xmit()
696 SMC_ENABLE_INT(lp, IM_ALLOC_INT); in smc_hard_start_xmit()
715 struct smc_local *lp = netdev_priv(dev); in smc_tx() local
716 void __iomem *ioaddr = lp->base; in smc_tx()
722 packet_no = SMC_GET_TXFIFO(lp); in smc_tx()
729 saved_packet = SMC_GET_PN(lp); in smc_tx()
730 SMC_SET_PN(lp, packet_no); in smc_tx()
733 SMC_SET_PTR(lp, PTR_AUTOINC | PTR_READ); in smc_tx()
734 SMC_GET_PKT_HDR(lp, tx_status, pkt_len); in smc_tx()
755 SMC_WAIT_MMU_BUSY(lp); in smc_tx()
756 SMC_SET_MMU_CMD(lp, MC_FREEPKT); in smc_tx()
759 SMC_WAIT_MMU_BUSY(lp); in smc_tx()
760 SMC_SET_PN(lp, saved_packet); in smc_tx()
763 SMC_SELECT_BANK(lp, 0); in smc_tx()
764 SMC_SET_TCR(lp, lp->tcr_cur_mode); in smc_tx()
765 SMC_SELECT_BANK(lp, 2); in smc_tx()
773 struct smc_local *lp = netdev_priv(dev); in smc_mii_out() local
774 void __iomem *ioaddr = lp->base; in smc_mii_out()
777 mii_reg = SMC_GET_MII(lp) & ~(MII_MCLK | MII_MDOE | MII_MDO); in smc_mii_out()
786 SMC_SET_MII(lp, mii_reg); in smc_mii_out()
788 SMC_SET_MII(lp, mii_reg | MII_MCLK); in smc_mii_out()
795 struct smc_local *lp = netdev_priv(dev); in smc_mii_in() local
796 void __iomem *ioaddr = lp->base; in smc_mii_in()
799 mii_reg = SMC_GET_MII(lp) & ~(MII_MCLK | MII_MDOE | MII_MDO); in smc_mii_in()
800 SMC_SET_MII(lp, mii_reg); in smc_mii_in()
803 if (SMC_GET_MII(lp) & MII_MDI) in smc_mii_in()
806 SMC_SET_MII(lp, mii_reg); in smc_mii_in()
808 SMC_SET_MII(lp, mii_reg | MII_MCLK); in smc_mii_in()
820 struct smc_local *lp = netdev_priv(dev); in smc_phy_read() local
821 void __iomem *ioaddr = lp->base; in smc_phy_read()
824 SMC_SELECT_BANK(lp, 3); in smc_phy_read()
836 SMC_SET_MII(lp, SMC_GET_MII(lp) & ~(MII_MCLK|MII_MDOE|MII_MDO)); in smc_phy_read()
841 SMC_SELECT_BANK(lp, 2); in smc_phy_read()
851 struct smc_local *lp = netdev_priv(dev); in smc_phy_write() local
852 void __iomem *ioaddr = lp->base; in smc_phy_write()
854 SMC_SELECT_BANK(lp, 3); in smc_phy_write()
863 SMC_SET_MII(lp, SMC_GET_MII(lp) & ~(MII_MCLK|MII_MDOE|MII_MDO)); in smc_phy_write()
868 SMC_SELECT_BANK(lp, 2); in smc_phy_write()
876 struct smc_local *lp = netdev_priv(dev); in smc_phy_detect() local
881 lp->phy_type = 0; in smc_phy_detect()
901 lp->mii.phy_id = phyaddr & 31; in smc_phy_detect()
902 lp->phy_type = id1 << 16 | id2; in smc_phy_detect()
913 struct smc_local *lp = netdev_priv(dev); in smc_phy_fixed() local
914 void __iomem *ioaddr = lp->base; in smc_phy_fixed()
915 int phyaddr = lp->mii.phy_id; in smc_phy_fixed()
931 if (lp->ctl_rfduplx) in smc_phy_fixed()
934 if (lp->ctl_rspeed == 100) in smc_phy_fixed()
941 SMC_SELECT_BANK(lp, 0); in smc_phy_fixed()
942 SMC_SET_RPC(lp, lp->rpc_cur_mode); in smc_phy_fixed()
943 SMC_SELECT_BANK(lp, 2); in smc_phy_fixed()
963 struct smc_local *lp = netdev_priv(dev); in smc_phy_reset() local
970 spin_unlock_irq(&lp->lock); in smc_phy_reset()
972 spin_lock_irq(&lp->lock); in smc_phy_reset()
990 struct smc_local *lp = netdev_priv(dev); in smc_phy_powerdown() local
992 int phy = lp->mii.phy_id; in smc_phy_powerdown()
994 if (lp->phy_type == 0) in smc_phy_powerdown()
1000 cancel_work_sync(&lp->phy_configure); in smc_phy_powerdown()
1016 struct smc_local *lp = netdev_priv(dev); in smc_phy_check_media() local
1017 void __iomem *ioaddr = lp->base; in smc_phy_check_media()
1019 if (mii_check_media(&lp->mii, netif_msg_link(lp), init)) { in smc_phy_check_media()
1021 if (lp->mii.full_duplex) { in smc_phy_check_media()
1022 lp->tcr_cur_mode |= TCR_SWFDUP; in smc_phy_check_media()
1024 lp->tcr_cur_mode &= ~TCR_SWFDUP; in smc_phy_check_media()
1027 SMC_SELECT_BANK(lp, 0); in smc_phy_check_media()
1028 SMC_SET_TCR(lp, lp->tcr_cur_mode); in smc_phy_check_media()
1043 struct smc_local *lp = in smc_phy_configure() local
1045 struct net_device *dev = lp->dev; in smc_phy_configure()
1046 void __iomem *ioaddr = lp->base; in smc_phy_configure()
1047 int phyaddr = lp->mii.phy_id; in smc_phy_configure()
1054 spin_lock_irq(&lp->lock); in smc_phy_configure()
1059 if (lp->phy_type == 0) in smc_phy_configure()
1077 SMC_SELECT_BANK(lp, 0); in smc_phy_configure()
1078 SMC_SET_RPC(lp, lp->rpc_cur_mode); in smc_phy_configure()
1081 if (lp->mii.force_media) { in smc_phy_configure()
1109 if (lp->ctl_rspeed != 100) in smc_phy_configure()
1112 if (!lp->ctl_rfduplx) in smc_phy_configure()
1117 lp->mii.advertising = my_ad_caps; in smc_phy_configure()
1135 SMC_SELECT_BANK(lp, 2); in smc_phy_configure()
1136 spin_unlock_irq(&lp->lock); in smc_phy_configure()
1147 struct smc_local *lp = netdev_priv(dev); in smc_phy_interrupt() local
1148 int phyaddr = lp->mii.phy_id; in smc_phy_interrupt()
1153 if (lp->phy_type == 0) in smc_phy_interrupt()
1170 struct smc_local *lp = netdev_priv(dev); in smc_10bt_check_media() local
1171 void __iomem *ioaddr = lp->base; in smc_10bt_check_media()
1176 SMC_SELECT_BANK(lp, 0); in smc_10bt_check_media()
1177 new_carrier = (SMC_GET_EPH_STATUS(lp) & ES_LINK_OK) ? 1 : 0; in smc_10bt_check_media()
1178 SMC_SELECT_BANK(lp, 2); in smc_10bt_check_media()
1186 if (netif_msg_link(lp)) in smc_10bt_check_media()
1194 struct smc_local *lp = netdev_priv(dev); in smc_eph_interrupt() local
1195 void __iomem *ioaddr = lp->base; in smc_eph_interrupt()
1200 SMC_SELECT_BANK(lp, 1); in smc_eph_interrupt()
1201 ctl = SMC_GET_CTL(lp); in smc_eph_interrupt()
1202 SMC_SET_CTL(lp, ctl & ~CTL_LE_ENABLE); in smc_eph_interrupt()
1203 SMC_SET_CTL(lp, ctl); in smc_eph_interrupt()
1204 SMC_SELECT_BANK(lp, 2); in smc_eph_interrupt()
1214 struct smc_local *lp = netdev_priv(dev); in smc_interrupt() local
1215 void __iomem *ioaddr = lp->base; in smc_interrupt()
1221 spin_lock(&lp->lock); in smc_interrupt()
1228 saved_pointer = SMC_GET_PTR(lp); in smc_interrupt()
1229 mask = SMC_GET_INT_MASK(lp); in smc_interrupt()
1230 SMC_SET_INT_MASK(lp, 0); in smc_interrupt()
1236 status = SMC_GET_INT(lp); in smc_interrupt()
1240 ({ int meminfo; SMC_SELECT_BANK(lp, 0); in smc_interrupt()
1241 meminfo = SMC_GET_MIR(lp); in smc_interrupt()
1242 SMC_SELECT_BANK(lp, 2); meminfo; }), in smc_interrupt()
1243 SMC_GET_FIFO(lp)); in smc_interrupt()
1253 SMC_ACK_INT(lp, IM_TX_INT); in smc_interrupt()
1261 tasklet_hi_schedule(&lp->tx_task); in smc_interrupt()
1268 SMC_SELECT_BANK(lp, 0); in smc_interrupt()
1269 card_stats = SMC_GET_COUNTER(lp); in smc_interrupt()
1270 SMC_SELECT_BANK(lp, 2); in smc_interrupt()
1280 ({ int eph_st; SMC_SELECT_BANK(lp, 0); in smc_interrupt()
1281 eph_st = SMC_GET_EPH_STATUS(lp); in smc_interrupt()
1282 SMC_SELECT_BANK(lp, 2); eph_st; })); in smc_interrupt()
1283 SMC_ACK_INT(lp, IM_RX_OVRN_INT); in smc_interrupt()
1289 SMC_ACK_INT(lp, IM_MDINT); in smc_interrupt()
1292 SMC_ACK_INT(lp, IM_ERCV_INT); in smc_interrupt()
1298 SMC_SET_PTR(lp, saved_pointer); in smc_interrupt()
1299 SMC_SET_INT_MASK(lp, mask); in smc_interrupt()
1300 spin_unlock(&lp->lock); in smc_interrupt()
1337 struct smc_local *lp = netdev_priv(dev); in smc_timeout() local
1338 void __iomem *ioaddr = lp->base; in smc_timeout()
1343 spin_lock_irq(&lp->lock); in smc_timeout()
1344 status = SMC_GET_INT(lp); in smc_timeout()
1345 mask = SMC_GET_INT_MASK(lp); in smc_timeout()
1346 fifo = SMC_GET_FIFO(lp); in smc_timeout()
1347 SMC_SELECT_BANK(lp, 0); in smc_timeout()
1348 eph_st = SMC_GET_EPH_STATUS(lp); in smc_timeout()
1349 meminfo = SMC_GET_MIR(lp); in smc_timeout()
1350 SMC_SELECT_BANK(lp, 2); in smc_timeout()
1351 spin_unlock_irq(&lp->lock); in smc_timeout()
1363 if (lp->phy_type != 0) in smc_timeout()
1364 schedule_work(&lp->phy_configure); in smc_timeout()
1379 struct smc_local *lp = netdev_priv(dev); in smc_set_multicast_list() local
1380 void __iomem *ioaddr = lp->base; in smc_set_multicast_list()
1388 lp->rcr_cur_mode |= RCR_PRMS; in smc_set_multicast_list()
1403 lp->rcr_cur_mode |= RCR_ALMUL; in smc_set_multicast_list()
1439 lp->rcr_cur_mode &= ~(RCR_PRMS | RCR_ALMUL); in smc_set_multicast_list()
1445 lp->rcr_cur_mode &= ~(RCR_PRMS | RCR_ALMUL); in smc_set_multicast_list()
1455 spin_lock_irq(&lp->lock); in smc_set_multicast_list()
1456 SMC_SELECT_BANK(lp, 0); in smc_set_multicast_list()
1457 SMC_SET_RCR(lp, lp->rcr_cur_mode); in smc_set_multicast_list()
1459 SMC_SELECT_BANK(lp, 3); in smc_set_multicast_list()
1460 SMC_SET_MCAST(lp, multicast_table); in smc_set_multicast_list()
1462 SMC_SELECT_BANK(lp, 2); in smc_set_multicast_list()
1463 spin_unlock_irq(&lp->lock); in smc_set_multicast_list()
1475 struct smc_local *lp = netdev_priv(dev); in smc_open() local
1480 lp->tcr_cur_mode = TCR_DEFAULT; in smc_open()
1481 lp->rcr_cur_mode = RCR_DEFAULT; in smc_open()
1482 lp->rpc_cur_mode = RPC_DEFAULT | in smc_open()
1483 lp->cfg.leda << RPC_LSXA_SHFT | in smc_open()
1484 lp->cfg.ledb << RPC_LSXB_SHFT; in smc_open()
1490 if (lp->phy_type == 0) in smc_open()
1491 lp->tcr_cur_mode |= TCR_MON_CSN; in smc_open()
1498 if (lp->phy_type != 0) in smc_open()
1499 smc_phy_configure(&lp->phy_configure); in smc_open()
1501 spin_lock_irq(&lp->lock); in smc_open()
1503 spin_unlock_irq(&lp->lock); in smc_open()
1519 struct smc_local *lp = netdev_priv(dev); in smc_close() local
1528 tasklet_kill(&lp->tx_task); in smc_close()
1539 struct smc_local *lp = netdev_priv(dev); in smc_ethtool_getsettings() local
1545 if (lp->phy_type != 0) { in smc_ethtool_getsettings()
1546 spin_lock_irq(&lp->lock); in smc_ethtool_getsettings()
1547 ret = mii_ethtool_gset(&lp->mii, cmd); in smc_ethtool_getsettings()
1548 spin_unlock_irq(&lp->lock); in smc_ethtool_getsettings()
1554 if (lp->ctl_rspeed == 10) in smc_ethtool_getsettings()
1556 else if (lp->ctl_rspeed == 100) in smc_ethtool_getsettings()
1562 cmd->duplex = lp->tcr_cur_mode & TCR_SWFDUP ? DUPLEX_FULL : DUPLEX_HALF; in smc_ethtool_getsettings()
1573 struct smc_local *lp = netdev_priv(dev); in smc_ethtool_setsettings() local
1576 if (lp->phy_type != 0) { in smc_ethtool_setsettings()
1577 spin_lock_irq(&lp->lock); in smc_ethtool_setsettings()
1578 ret = mii_ethtool_sset(&lp->mii, cmd); in smc_ethtool_setsettings()
1579 spin_unlock_irq(&lp->lock); in smc_ethtool_setsettings()
1588 lp->ctl_rfduplx = cmd->duplex == DUPLEX_FULL; in smc_ethtool_setsettings()
1610 struct smc_local *lp = netdev_priv(dev); in smc_ethtool_nwayreset() local
1613 if (lp->phy_type != 0) { in smc_ethtool_nwayreset()
1614 spin_lock_irq(&lp->lock); in smc_ethtool_nwayreset()
1615 ret = mii_nway_restart(&lp->mii); in smc_ethtool_nwayreset()
1616 spin_unlock_irq(&lp->lock); in smc_ethtool_nwayreset()
1624 struct smc_local *lp = netdev_priv(dev); in smc_ethtool_getmsglevel() local
1625 return lp->msg_enable; in smc_ethtool_getmsglevel()
1630 struct smc_local *lp = netdev_priv(dev); in smc_ethtool_setmsglevel() local
1631 lp->msg_enable = level; in smc_ethtool_setmsglevel()
1637 struct smc_local *lp = netdev_priv(dev); in smc_write_eeprom_word() local
1638 void __iomem *ioaddr = lp->base; in smc_write_eeprom_word()
1640 spin_lock_irq(&lp->lock); in smc_write_eeprom_word()
1642 SMC_SELECT_BANK(lp, 1); in smc_write_eeprom_word()
1643 SMC_SET_GP(lp, word); in smc_write_eeprom_word()
1645 SMC_SELECT_BANK(lp, 2); in smc_write_eeprom_word()
1646 SMC_SET_PTR(lp, addr); in smc_write_eeprom_word()
1648 SMC_SELECT_BANK(lp, 1); in smc_write_eeprom_word()
1649 ctl = SMC_GET_CTL(lp); in smc_write_eeprom_word()
1650 SMC_SET_CTL(lp, ctl | (CTL_EEPROM_SELECT | CTL_STORE)); in smc_write_eeprom_word()
1654 } while (SMC_GET_CTL(lp) & CTL_STORE); in smc_write_eeprom_word()
1656 SMC_SET_CTL(lp, ctl); in smc_write_eeprom_word()
1657 SMC_SELECT_BANK(lp, 2); in smc_write_eeprom_word()
1658 spin_unlock_irq(&lp->lock); in smc_write_eeprom_word()
1665 struct smc_local *lp = netdev_priv(dev); in smc_read_eeprom_word() local
1666 void __iomem *ioaddr = lp->base; in smc_read_eeprom_word()
1668 spin_lock_irq(&lp->lock); in smc_read_eeprom_word()
1670 SMC_SELECT_BANK(lp, 2); in smc_read_eeprom_word()
1671 SMC_SET_PTR(lp, addr | PTR_READ); in smc_read_eeprom_word()
1673 SMC_SELECT_BANK(lp, 1); in smc_read_eeprom_word()
1674 SMC_SET_GP(lp, 0xffff); /* init to known */ in smc_read_eeprom_word()
1675 ctl = SMC_GET_CTL(lp); in smc_read_eeprom_word()
1676 SMC_SET_CTL(lp, ctl | (CTL_EEPROM_SELECT | CTL_RELOAD)); in smc_read_eeprom_word()
1680 } while (SMC_GET_CTL(lp) & CTL_RELOAD); in smc_read_eeprom_word()
1682 *word = SMC_GET_GP(lp); in smc_read_eeprom_word()
1684 SMC_SET_CTL(lp, ctl); in smc_read_eeprom_word()
1685 SMC_SELECT_BANK(lp, 2); in smc_read_eeprom_word()
1686 spin_unlock_irq(&lp->lock); in smc_read_eeprom_word()
1785 static int smc_findirq(struct smc_local *lp) in smc_findirq() argument
1787 void __iomem *ioaddr = lp->base; in smc_findirq()
1791 DBG(2, lp->dev, "%s: %s\n", CARDNAME, __func__); in smc_findirq()
1801 SMC_SELECT_BANK(lp, 2); in smc_findirq()
1802 SMC_SET_INT_MASK(lp, IM_ALLOC_INT); in smc_findirq()
1808 SMC_SET_MMU_CMD(lp, MC_ALLOC | 1); in smc_findirq()
1816 int_status = SMC_GET_INT(lp); in smc_findirq()
1829 SMC_SET_INT_MASK(lp, 0); in smc_findirq()
1862 struct smc_local *lp = netdev_priv(dev); in smc_probe() local
1870 val = SMC_CURRENT_BANK(lp); in smc_probe()
1887 SMC_SELECT_BANK(lp, 0); in smc_probe()
1888 val = SMC_CURRENT_BANK(lp); in smc_probe()
1900 SMC_SELECT_BANK(lp, 1); in smc_probe()
1901 val = SMC_GET_BASE(lp); in smc_probe()
1913 SMC_SELECT_BANK(lp, 3); in smc_probe()
1914 revision_register = SMC_GET_REV(lp); in smc_probe()
1931 lp->base = ioaddr; in smc_probe()
1932 lp->version = revision_register & 0xff; in smc_probe()
1933 spin_lock_init(&lp->lock); in smc_probe()
1936 SMC_SELECT_BANK(lp, 1); in smc_probe()
1937 SMC_GET_MAC_ADDR(lp, dev->dev_addr); in smc_probe()
1962 dev->irq = smc_findirq(lp); in smc_probe()
1980 tasklet_init(&lp->tx_task, smc_hardware_send_pkt, (unsigned long)dev); in smc_probe()
1981 INIT_WORK(&lp->phy_configure, smc_phy_configure); in smc_probe()
1982 lp->dev = dev; in smc_probe()
1983 lp->mii.phy_id_mask = 0x1f; in smc_probe()
1984 lp->mii.reg_num_mask = 0x1f; in smc_probe()
1985 lp->mii.force_media = 0; in smc_probe()
1986 lp->mii.full_duplex = 0; in smc_probe()
1987 lp->mii.dev = dev; in smc_probe()
1988 lp->mii.mdio_read = smc_phy_read; in smc_probe()
1989 lp->mii.mdio_write = smc_phy_write; in smc_probe()
1994 if (lp->version >= (CHIP_91100 << 4)) in smc_probe()
2002 lp->msg_enable = NETIF_MSG_LINK; in smc_probe()
2003 lp->ctl_rfduplx = 0; in smc_probe()
2004 lp->ctl_rspeed = 10; in smc_probe()
2006 if (lp->version >= (CHIP_91100 << 4)) { in smc_probe()
2007 lp->ctl_rfduplx = 1; in smc_probe()
2008 lp->ctl_rspeed = 100; in smc_probe()
2018 lp->cfg.flags |= SMC91X_USE_DMA; in smc_probe()
2020 if (lp->cfg.flags & SMC91X_USE_DMA) { in smc_probe()
2033 lp->base, dev->irq); in smc_probe()
2039 lp->cfg.flags & SMC91X_NOWAIT ? " [nowait]" : "", in smc_probe()
2050 if (lp->phy_type == 0) { in smc_probe()
2052 } else if ((lp->phy_type & 0xfffffff0) == 0x0016f840) { in smc_probe()
2054 } else if ((lp->phy_type & 0xfffffff0) == 0x02821c50) { in smc_probe()
2070 struct smc_local *lp = netdev_priv(ndev); in smc_enable_device() local
2113 if (!SMC_16BIT(lp)) in smc_enable_device()
2134 struct smc_local *lp __maybe_unused = netdev_priv(ndev); in smc_request_attrib()
2149 struct smc_local *lp __maybe_unused = netdev_priv(ndev); in smc_release_attrib()
2159 struct smc_local *lp = netdev_priv(ndev); in smc_request_datacs() local
2170 lp->datacs = ioremap(res->start, SMC_DATA_EXTENT); in smc_request_datacs()
2177 struct smc_local *lp = netdev_priv(ndev); in smc_release_datacs() local
2180 if (lp->datacs) in smc_release_datacs()
2181 iounmap(lp->datacs); in smc_release_datacs()
2183 lp->datacs = NULL; in smc_release_datacs()
2239 struct smc_local *lp; in smc_drv_probe() local
2258 lp = netdev_priv(ndev); in smc_drv_probe()
2259 lp->cfg.flags = 0; in smc_drv_probe()
2262 memcpy(&lp->cfg, pd, sizeof(lp->cfg)); in smc_drv_probe()
2263 lp->io_shift = SMC91X_IO_SHIFT(lp->cfg.flags); in smc_drv_probe()
2273 ret = try_toggle_control_gpio(&pdev->dev, &lp->power_gpio, in smc_drv_probe()
2282 ret = try_toggle_control_gpio(&pdev->dev, &lp->reset_gpio, in smc_drv_probe()
2291 if (lp->reset_gpio) in smc_drv_probe()
2297 lp->cfg.flags |= SMC91X_USE_8BIT; in smc_drv_probe()
2299 lp->cfg.flags |= SMC91X_USE_16BIT; in smc_drv_probe()
2301 lp->cfg.flags |= SMC91X_USE_32BIT; in smc_drv_probe()
2303 lp->cfg.flags |= SMC91X_USE_16BIT; in smc_drv_probe()
2309 lp->cfg.flags |= (SMC_CAN_USE_8BIT) ? SMC91X_USE_8BIT : 0; in smc_drv_probe()
2310 lp->cfg.flags |= (SMC_CAN_USE_16BIT) ? SMC91X_USE_16BIT : 0; in smc_drv_probe()
2311 lp->cfg.flags |= (SMC_CAN_USE_32BIT) ? SMC91X_USE_32BIT : 0; in smc_drv_probe()
2312 lp->cfg.flags |= (nowait) ? SMC91X_NOWAIT : 0; in smc_drv_probe()
2315 if (!lp->cfg.leda && !lp->cfg.ledb) { in smc_drv_probe()
2316 lp->cfg.leda = RPC_LSA_DEFAULT; in smc_drv_probe()
2317 lp->cfg.ledb = RPC_LSB_DEFAULT; in smc_drv_probe()
2370 struct smc_local *lp = netdev_priv(ndev); in smc_drv_probe() local
2371 lp->device = &pdev->dev; in smc_drv_probe()
2372 lp->physaddr = res->start; in smc_drv_probe()
2401 struct smc_local *lp = netdev_priv(ndev); in smc_drv_remove() local
2412 iounmap(lp->base); in smc_drv_remove()
2448 struct smc_local *lp = netdev_priv(ndev); in smc_drv_resume() local
2453 if (lp->phy_type != 0) in smc_drv_resume()
2454 smc_phy_configure(&lp->phy_configure); in smc_drv_resume()