Lines Matching refs:lp
112 static int amd8111e_read_phy(struct amd8111e_priv *lp, in amd8111e_read_phy() argument
115 void __iomem *mmio = lp->mmio; in amd8111e_read_phy()
141 static int amd8111e_write_phy(struct amd8111e_priv *lp, in amd8111e_write_phy() argument
145 void __iomem *mmio = lp->mmio; in amd8111e_write_phy()
173 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_mdio_read() local
176 amd8111e_read_phy(lp,phy_id,reg_num,®_val); in amd8111e_mdio_read()
185 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_mdio_write() local
187 amd8111e_write_phy(lp, phy_id, reg_num, val); in amd8111e_mdio_write()
195 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_ext_phy() local
199 advert = amd8111e_mdio_read(dev, lp->ext_phy_addr, MII_ADVERTISE); in amd8111e_set_ext_phy()
201 switch (lp->ext_phy_option){ in amd8111e_set_ext_phy()
223 amd8111e_mdio_write(dev, lp->ext_phy_addr, MII_ADVERTISE, tmp); in amd8111e_set_ext_phy()
225 bmcr = amd8111e_mdio_read(dev, lp->ext_phy_addr, MII_BMCR); in amd8111e_set_ext_phy()
227 amd8111e_mdio_write(dev, lp->ext_phy_addr, MII_BMCR, bmcr); in amd8111e_set_ext_phy()
236 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_free_skbs() local
242 if(lp->tx_skbuff[i]){ in amd8111e_free_skbs()
243 pci_unmap_single(lp->pci_dev,lp->tx_dma_addr[i], lp->tx_skbuff[i]->len,PCI_DMA_TODEVICE); in amd8111e_free_skbs()
244 dev_kfree_skb (lp->tx_skbuff[i]); in amd8111e_free_skbs()
245 lp->tx_skbuff[i] = NULL; in amd8111e_free_skbs()
246 lp->tx_dma_addr[i] = 0; in amd8111e_free_skbs()
251 rx_skbuff = lp->rx_skbuff[i]; in amd8111e_free_skbs()
253 pci_unmap_single(lp->pci_dev,lp->rx_dma_addr[i], in amd8111e_free_skbs()
254 lp->rx_buff_len - 2,PCI_DMA_FROMDEVICE); in amd8111e_free_skbs()
255 dev_kfree_skb(lp->rx_skbuff[i]); in amd8111e_free_skbs()
256 lp->rx_skbuff[i] = NULL; in amd8111e_free_skbs()
257 lp->rx_dma_addr[i] = 0; in amd8111e_free_skbs()
269 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_rx_buff_len() local
276 lp->rx_buff_len = mtu + ETH_HLEN + 10; in amd8111e_set_rx_buff_len()
277 lp->options |= OPTION_JUMBO_ENABLE; in amd8111e_set_rx_buff_len()
279 lp->rx_buff_len = PKT_BUFF_SZ; in amd8111e_set_rx_buff_len()
280 lp->options &= ~OPTION_JUMBO_ENABLE; in amd8111e_set_rx_buff_len()
291 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_init_ring() local
294 lp->rx_idx = lp->tx_idx = 0; in amd8111e_init_ring()
295 lp->tx_complete_idx = 0; in amd8111e_init_ring()
296 lp->tx_ring_idx = 0; in amd8111e_init_ring()
299 if(lp->opened) in amd8111e_init_ring()
305 if((lp->tx_ring = pci_alloc_consistent(lp->pci_dev, in amd8111e_init_ring()
307 &lp->tx_ring_dma_addr)) == NULL) in amd8111e_init_ring()
311 if((lp->rx_ring = pci_alloc_consistent(lp->pci_dev, in amd8111e_init_ring()
313 &lp->rx_ring_dma_addr)) == NULL) in amd8111e_init_ring()
324 lp->rx_skbuff[i] = netdev_alloc_skb(dev, lp->rx_buff_len); in amd8111e_init_ring()
325 if (!lp->rx_skbuff[i]) { in amd8111e_init_ring()
328 dev_kfree_skb(lp->rx_skbuff[i]); in amd8111e_init_ring()
331 skb_reserve(lp->rx_skbuff[i],2); in amd8111e_init_ring()
335 lp->rx_dma_addr[i] = pci_map_single(lp->pci_dev, in amd8111e_init_ring()
336 lp->rx_skbuff[i]->data,lp->rx_buff_len-2, PCI_DMA_FROMDEVICE); in amd8111e_init_ring()
338 lp->rx_ring[i].buff_phy_addr = cpu_to_le32(lp->rx_dma_addr[i]); in amd8111e_init_ring()
339 lp->rx_ring[i].buff_count = cpu_to_le16(lp->rx_buff_len-2); in amd8111e_init_ring()
341 lp->rx_ring[i].rx_flags = cpu_to_le16(OWN_BIT); in amd8111e_init_ring()
346 lp->tx_ring[i].buff_phy_addr = 0; in amd8111e_init_ring()
347 lp->tx_ring[i].tx_flags = 0; in amd8111e_init_ring()
348 lp->tx_ring[i].buff_count = 0; in amd8111e_init_ring()
355 pci_free_consistent(lp->pci_dev, in amd8111e_init_ring()
356 sizeof(struct amd8111e_rx_dr)*NUM_RX_RING_DR,lp->rx_ring, in amd8111e_init_ring()
357 lp->rx_ring_dma_addr); in amd8111e_init_ring()
361 pci_free_consistent(lp->pci_dev, in amd8111e_init_ring()
362 sizeof(struct amd8111e_tx_dr)*NUM_TX_RING_DR,lp->tx_ring, in amd8111e_init_ring()
363 lp->tx_ring_dma_addr); in amd8111e_init_ring()
377 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_coalesce() local
378 void __iomem *mmio = lp->mmio; in amd8111e_set_coalesce()
379 struct amd8111e_coalesce_conf *coal_conf = &lp->coal_conf; in amd8111e_set_coalesce()
433 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_restart() local
434 void __iomem *mmio = lp->mmio; in amd8111e_restart()
462 writel((u32)lp->tx_ring_dma_addr,mmio + XMT_RING_BASE_ADDR0); in amd8111e_restart()
463 writel((u32)lp->rx_ring_dma_addr,mmio+ RCV_RING_BASE_ADDR0); in amd8111e_restart()
472 if(lp->options & OPTION_JUMBO_ENABLE){ in amd8111e_restart()
493 if(lp->options & OPTION_INTR_COAL_ENABLE){ in amd8111e_restart()
508 static void amd8111e_init_hw_default(struct amd8111e_priv *lp) in amd8111e_init_hw_default() argument
512 void __iomem *mmio = lp->mmio; in amd8111e_init_hw_default()
519 writew( 0x8100 | lp->ext_phy_addr, mmio + AUTOPOLL0); in amd8111e_init_hw_default()
583 if(lp->options & OPTION_JUMBO_ENABLE) in amd8111e_init_hw_default()
599 static void amd8111e_disable_interrupt(struct amd8111e_priv *lp) in amd8111e_disable_interrupt() argument
604 writel(INTREN, lp->mmio + CMD0); in amd8111e_disable_interrupt()
607 intr0 = readl(lp->mmio + INT0); in amd8111e_disable_interrupt()
608 writel(intr0, lp->mmio + INT0); in amd8111e_disable_interrupt()
611 readl(lp->mmio + INT0); in amd8111e_disable_interrupt()
616 static void amd8111e_stop_chip(struct amd8111e_priv *lp) in amd8111e_stop_chip() argument
618 writel(RUN, lp->mmio + CMD0); in amd8111e_stop_chip()
621 readl(lp->mmio + CMD0); in amd8111e_stop_chip()
625 static void amd8111e_free_ring(struct amd8111e_priv *lp) in amd8111e_free_ring() argument
628 if(lp->rx_ring){ in amd8111e_free_ring()
629 pci_free_consistent(lp->pci_dev, in amd8111e_free_ring()
631 lp->rx_ring, lp->rx_ring_dma_addr); in amd8111e_free_ring()
632 lp->rx_ring = NULL; in amd8111e_free_ring()
635 if(lp->tx_ring){ in amd8111e_free_ring()
636 pci_free_consistent(lp->pci_dev, in amd8111e_free_ring()
638 lp->tx_ring, lp->tx_ring_dma_addr); in amd8111e_free_ring()
640 lp->tx_ring = NULL; in amd8111e_free_ring()
651 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_tx() local
652 int tx_index = lp->tx_complete_idx & TX_RING_DR_MOD_MASK; in amd8111e_tx()
655 while (lp->tx_complete_idx != lp->tx_idx){ in amd8111e_tx()
656 tx_index = lp->tx_complete_idx & TX_RING_DR_MOD_MASK; in amd8111e_tx()
657 status = le16_to_cpu(lp->tx_ring[tx_index].tx_flags); in amd8111e_tx()
662 lp->tx_ring[tx_index].buff_phy_addr = 0; in amd8111e_tx()
665 if (lp->tx_skbuff[tx_index]) { in amd8111e_tx()
666 pci_unmap_single(lp->pci_dev, lp->tx_dma_addr[tx_index], in amd8111e_tx()
667 lp->tx_skbuff[tx_index]->len, in amd8111e_tx()
669 dev_kfree_skb_irq (lp->tx_skbuff[tx_index]); in amd8111e_tx()
670 lp->tx_skbuff[tx_index] = NULL; in amd8111e_tx()
671 lp->tx_dma_addr[tx_index] = 0; in amd8111e_tx()
673 lp->tx_complete_idx++; in amd8111e_tx()
675 lp->coal_conf.tx_packets++; in amd8111e_tx()
676 lp->coal_conf.tx_bytes += in amd8111e_tx()
677 le16_to_cpu(lp->tx_ring[tx_index].buff_count); in amd8111e_tx()
680 lp->tx_complete_idx > lp->tx_idx - NUM_TX_BUFFERS +2){ in amd8111e_tx()
692 struct amd8111e_priv *lp = container_of(napi, struct amd8111e_priv, napi); in amd8111e_rx_poll() local
693 struct net_device *dev = lp->amd8111e_net_dev; in amd8111e_rx_poll()
694 int rx_index = lp->rx_idx & RX_RING_DR_MOD_MASK; in amd8111e_rx_poll()
695 void __iomem *mmio = lp->mmio; in amd8111e_rx_poll()
715 status = le16_to_cpu(lp->rx_ring[rx_index].rx_flags); in amd8111e_rx_poll()
727 lp->rx_ring[rx_index].rx_flags &= RESET_RX_FLAGS; in amd8111e_rx_poll()
733 lp->rx_ring[rx_index].rx_flags &= RESET_RX_FLAGS; in amd8111e_rx_poll()
736 pkt_len = le16_to_cpu(lp->rx_ring[rx_index].msg_count) - 4; in amd8111e_rx_poll()
748 lp->rx_ring[rx_index].rx_flags &= RESET_RX_FLAGS; in amd8111e_rx_poll()
749 lp->drv_rx_errors++; in amd8111e_rx_poll()
754 new_skb = netdev_alloc_skb(dev, lp->rx_buff_len); in amd8111e_rx_poll()
759 lp->rx_ring[rx_index].rx_flags &= RESET_RX_FLAGS; in amd8111e_rx_poll()
760 lp->drv_rx_errors++; in amd8111e_rx_poll()
765 skb = lp->rx_skbuff[rx_index]; in amd8111e_rx_poll()
766 pci_unmap_single(lp->pci_dev,lp->rx_dma_addr[rx_index], in amd8111e_rx_poll()
767 lp->rx_buff_len-2, PCI_DMA_FROMDEVICE); in amd8111e_rx_poll()
769 lp->rx_skbuff[rx_index] = new_skb; in amd8111e_rx_poll()
770 lp->rx_dma_addr[rx_index] = pci_map_single(lp->pci_dev, in amd8111e_rx_poll()
772 lp->rx_buff_len-2, in amd8111e_rx_poll()
779 u16 vlan_tag = le16_to_cpu(lp->rx_ring[rx_index].tag_ctrl_info); in amd8111e_rx_poll()
785 lp->coal_conf.rx_packets++; in amd8111e_rx_poll()
786 lp->coal_conf.rx_bytes += pkt_len; in amd8111e_rx_poll()
790 lp->rx_ring[rx_index].buff_phy_addr in amd8111e_rx_poll()
791 = cpu_to_le32(lp->rx_dma_addr[rx_index]); in amd8111e_rx_poll()
792 lp->rx_ring[rx_index].buff_count = in amd8111e_rx_poll()
793 cpu_to_le16(lp->rx_buff_len-2); in amd8111e_rx_poll()
795 lp->rx_ring[rx_index].rx_flags |= cpu_to_le16(OWN_BIT); in amd8111e_rx_poll()
796 rx_index = (++lp->rx_idx) & RX_RING_DR_MOD_MASK; in amd8111e_rx_poll()
809 spin_lock_irqsave(&lp->lock, flags); in amd8111e_rx_poll()
813 spin_unlock_irqrestore(&lp->lock, flags); in amd8111e_rx_poll()
823 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_link_change() local
827 status0 = readl(lp->mmio + STAT0); in amd8111e_link_change()
831 lp->link_config.autoneg = AUTONEG_ENABLE; in amd8111e_link_change()
833 lp->link_config.autoneg = AUTONEG_DISABLE; in amd8111e_link_change()
836 lp->link_config.duplex = DUPLEX_FULL; in amd8111e_link_change()
838 lp->link_config.duplex = DUPLEX_HALF; in amd8111e_link_change()
841 lp->link_config.speed = SPEED_10; in amd8111e_link_change()
843 lp->link_config.speed = SPEED_100; in amd8111e_link_change()
846 (lp->link_config.speed == SPEED_100) ? in amd8111e_link_change()
848 (lp->link_config.duplex == DUPLEX_FULL) ? in amd8111e_link_change()
854 lp->link_config.speed = SPEED_INVALID; in amd8111e_link_change()
855 lp->link_config.duplex = DUPLEX_INVALID; in amd8111e_link_change()
856 lp->link_config.autoneg = AUTONEG_INVALID; in amd8111e_link_change()
887 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_stats() local
888 void __iomem *mmio = lp->mmio; in amd8111e_get_stats()
892 if (!lp->opened) in amd8111e_get_stats()
894 spin_lock_irqsave (&lp->lock, flags); in amd8111e_get_stats()
918 lp->drv_rx_errors; in amd8111e_get_stats()
974 spin_unlock_irqrestore (&lp->lock, flags); in amd8111e_get_stats()
984 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_calc_coalesce() local
985 struct amd8111e_coalesce_conf *coal_conf = &lp->coal_conf; in amd8111e_calc_coalesce()
1121 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_interrupt() local
1122 void __iomem *mmio = lp->mmio; in amd8111e_interrupt()
1129 spin_lock(&lp->lock); in amd8111e_interrupt()
1150 if (napi_schedule_prep(&lp->napi)) { in amd8111e_interrupt()
1154 __napi_schedule(&lp->napi); in amd8111e_interrupt()
1177 spin_unlock(&lp->lock); in amd8111e_interrupt()
1199 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_close() local
1202 napi_disable(&lp->napi); in amd8111e_close()
1204 spin_lock_irq(&lp->lock); in amd8111e_close()
1206 amd8111e_disable_interrupt(lp); in amd8111e_close()
1207 amd8111e_stop_chip(lp); in amd8111e_close()
1210 amd8111e_free_skbs(lp->amd8111e_net_dev); in amd8111e_close()
1212 netif_carrier_off(lp->amd8111e_net_dev); in amd8111e_close()
1215 if(lp->options & OPTION_DYN_IPG_ENABLE) in amd8111e_close()
1216 del_timer_sync(&lp->ipg_data.ipg_timer); in amd8111e_close()
1218 spin_unlock_irq(&lp->lock); in amd8111e_close()
1220 amd8111e_free_ring(lp); in amd8111e_close()
1224 lp->opened = 0; in amd8111e_close()
1233 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_open() local
1239 napi_enable(&lp->napi); in amd8111e_open()
1241 spin_lock_irq(&lp->lock); in amd8111e_open()
1243 amd8111e_init_hw_default(lp); in amd8111e_open()
1246 spin_unlock_irq(&lp->lock); in amd8111e_open()
1247 napi_disable(&lp->napi); in amd8111e_open()
1253 if(lp->options & OPTION_DYN_IPG_ENABLE){ in amd8111e_open()
1254 add_timer(&lp->ipg_data.ipg_timer); in amd8111e_open()
1258 lp->opened = 1; in amd8111e_open()
1260 spin_unlock_irq(&lp->lock); in amd8111e_open()
1270 static int amd8111e_tx_queue_avail(struct amd8111e_priv *lp) in amd8111e_tx_queue_avail() argument
1272 int tx_index = lp->tx_idx & TX_BUFF_MOD_MASK; in amd8111e_tx_queue_avail()
1273 if (lp->tx_skbuff[tx_index]) in amd8111e_tx_queue_avail()
1288 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_start_xmit() local
1292 spin_lock_irqsave(&lp->lock, flags); in amd8111e_start_xmit()
1294 tx_index = lp->tx_idx & TX_RING_DR_MOD_MASK; in amd8111e_start_xmit()
1296 lp->tx_ring[tx_index].buff_count = cpu_to_le16(skb->len); in amd8111e_start_xmit()
1298 lp->tx_skbuff[tx_index] = skb; in amd8111e_start_xmit()
1299 lp->tx_ring[tx_index].tx_flags = 0; in amd8111e_start_xmit()
1303 lp->tx_ring[tx_index].tag_ctrl_cmd |= in amd8111e_start_xmit()
1305 lp->tx_ring[tx_index].tag_ctrl_info = in amd8111e_start_xmit()
1310 lp->tx_dma_addr[tx_index] = in amd8111e_start_xmit()
1311 pci_map_single(lp->pci_dev, skb->data, skb->len, PCI_DMA_TODEVICE); in amd8111e_start_xmit()
1312 lp->tx_ring[tx_index].buff_phy_addr = in amd8111e_start_xmit()
1313 cpu_to_le32(lp->tx_dma_addr[tx_index]); in amd8111e_start_xmit()
1317 lp->tx_ring[tx_index].tx_flags |= in amd8111e_start_xmit()
1320 lp->tx_idx++; in amd8111e_start_xmit()
1323 writel( VAL1 | TDMD0, lp->mmio + CMD0); in amd8111e_start_xmit()
1324 writel( VAL2 | RDMD0,lp->mmio + CMD0); in amd8111e_start_xmit()
1326 if(amd8111e_tx_queue_avail(lp) < 0){ in amd8111e_start_xmit()
1329 spin_unlock_irqrestore(&lp->lock, flags); in amd8111e_start_xmit()
1333 static void amd8111e_read_regs(struct amd8111e_priv *lp, u32 *buf) in amd8111e_read_regs() argument
1335 void __iomem *mmio = lp->mmio; in amd8111e_read_regs()
1359 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_multicast_list() local
1364 writel( VAL2 | PROM, lp->mmio + CMD2); in amd8111e_set_multicast_list()
1368 writel( PROM, lp->mmio + CMD2); in amd8111e_set_multicast_list()
1373 lp->options |= OPTION_MULTICAST_ENABLE; in amd8111e_set_multicast_list()
1374 amd8111e_writeq(*(u64 *)mc_filter, lp->mmio + LADRF); in amd8111e_set_multicast_list()
1380 lp->options &= ~OPTION_MULTICAST_ENABLE; in amd8111e_set_multicast_list()
1381 amd8111e_writeq(*(u64 *)mc_filter, lp->mmio + LADRF); in amd8111e_set_multicast_list()
1383 writel(PROM, lp->mmio + CMD2); in amd8111e_set_multicast_list()
1387 lp->options |= OPTION_MULTICAST_ENABLE; in amd8111e_set_multicast_list()
1393 amd8111e_writeq(*(u64 *)mc_filter, lp->mmio + LADRF); in amd8111e_set_multicast_list()
1396 readl(lp->mmio + CMD2); in amd8111e_set_multicast_list()
1403 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_drvinfo() local
1404 struct pci_dev *pci_dev = lp->pci_dev; in amd8111e_get_drvinfo()
1419 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_regs() local
1421 amd8111e_read_regs(lp, buf); in amd8111e_get_regs()
1426 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_settings() local
1427 spin_lock_irq(&lp->lock); in amd8111e_get_settings()
1428 mii_ethtool_gset(&lp->mii_if, ecmd); in amd8111e_get_settings()
1429 spin_unlock_irq(&lp->lock); in amd8111e_get_settings()
1435 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_settings() local
1437 spin_lock_irq(&lp->lock); in amd8111e_set_settings()
1438 res = mii_ethtool_sset(&lp->mii_if, ecmd); in amd8111e_set_settings()
1439 spin_unlock_irq(&lp->lock); in amd8111e_set_settings()
1445 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_nway_reset() local
1446 return mii_nway_restart(&lp->mii_if); in amd8111e_nway_reset()
1451 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_link() local
1452 return mii_link_ok(&lp->mii_if); in amd8111e_get_link()
1457 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_wol() local
1459 if (lp->options & OPTION_WOL_ENABLE) in amd8111e_get_wol()
1465 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_wol() local
1468 spin_lock_irq(&lp->lock); in amd8111e_set_wol()
1470 lp->options |= in amd8111e_set_wol()
1473 lp->options |= in amd8111e_set_wol()
1476 lp->options &= ~OPTION_WOL_ENABLE; in amd8111e_set_wol()
1477 spin_unlock_irq(&lp->lock); in amd8111e_set_wol()
1500 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_ioctl() local
1506 data->phy_id = lp->ext_phy_addr; in amd8111e_ioctl()
1511 spin_lock_irq(&lp->lock); in amd8111e_ioctl()
1512 err = amd8111e_read_phy(lp, data->phy_id, in amd8111e_ioctl()
1514 spin_unlock_irq(&lp->lock); in amd8111e_ioctl()
1521 spin_lock_irq(&lp->lock); in amd8111e_ioctl()
1522 err = amd8111e_write_phy(lp, data->phy_id, in amd8111e_ioctl()
1524 spin_unlock_irq(&lp->lock); in amd8111e_ioctl()
1536 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_mac_address() local
1541 spin_lock_irq(&lp->lock); in amd8111e_set_mac_address()
1544 writeb( dev->dev_addr[i], lp->mmio + PADR + i ); in amd8111e_set_mac_address()
1546 spin_unlock_irq(&lp->lock); in amd8111e_set_mac_address()
1556 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_change_mtu() local
1570 spin_lock_irq(&lp->lock); in amd8111e_change_mtu()
1573 writel(RUN, lp->mmio + CMD0); in amd8111e_change_mtu()
1578 spin_unlock_irq(&lp->lock); in amd8111e_change_mtu()
1584 static int amd8111e_enable_magicpkt(struct amd8111e_priv *lp) in amd8111e_enable_magicpkt() argument
1586 writel( VAL1|MPPLBA, lp->mmio + CMD3); in amd8111e_enable_magicpkt()
1587 writel( VAL0|MPEN_SW, lp->mmio + CMD7); in amd8111e_enable_magicpkt()
1590 readl(lp->mmio + CMD7); in amd8111e_enable_magicpkt()
1594 static int amd8111e_enable_link_change(struct amd8111e_priv *lp) in amd8111e_enable_link_change() argument
1598 writel(VAL0|LCMODE_SW,lp->mmio + CMD7); in amd8111e_enable_link_change()
1601 readl(lp->mmio + CMD7); in amd8111e_enable_link_change()
1612 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_tx_timeout() local
1617 spin_lock_irq(&lp->lock); in amd8111e_tx_timeout()
1619 spin_unlock_irq(&lp->lock); in amd8111e_tx_timeout()
1626 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_suspend() local
1632 spin_lock_irq(&lp->lock); in amd8111e_suspend()
1633 amd8111e_disable_interrupt(lp); in amd8111e_suspend()
1634 spin_unlock_irq(&lp->lock); in amd8111e_suspend()
1639 spin_lock_irq(&lp->lock); in amd8111e_suspend()
1640 if(lp->options & OPTION_DYN_IPG_ENABLE) in amd8111e_suspend()
1641 del_timer_sync(&lp->ipg_data.ipg_timer); in amd8111e_suspend()
1642 amd8111e_stop_chip(lp); in amd8111e_suspend()
1643 spin_unlock_irq(&lp->lock); in amd8111e_suspend()
1645 if(lp->options & OPTION_WOL_ENABLE){ in amd8111e_suspend()
1647 if(lp->options & OPTION_WAKE_MAGIC_ENABLE) in amd8111e_suspend()
1648 amd8111e_enable_magicpkt(lp); in amd8111e_suspend()
1649 if(lp->options & OPTION_WAKE_PHY_ENABLE) in amd8111e_suspend()
1650 amd8111e_enable_link_change(lp); in amd8111e_suspend()
1669 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_resume() local
1682 spin_lock_irq(&lp->lock); in amd8111e_resume()
1685 if(lp->options & OPTION_DYN_IPG_ENABLE) in amd8111e_resume()
1686 mod_timer(&lp->ipg_data.ipg_timer, in amd8111e_resume()
1688 spin_unlock_irq(&lp->lock); in amd8111e_resume()
1695 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_config_ipg() local
1696 struct ipg_info *ipg_data = &lp->ipg_data; in amd8111e_config_ipg()
1697 void __iomem *mmio = lp->mmio; in amd8111e_config_ipg()
1702 if(lp->link_config.duplex == DUPLEX_FULL){ in amd8111e_config_ipg()
1748 mod_timer(&lp->ipg_data.ipg_timer, jiffies + IPG_CONVERGE_JIFFIES); in amd8111e_config_ipg()
1755 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_probe_ext_phy() local
1761 if (amd8111e_read_phy(lp, i, MII_PHYSID1, &id1)) in amd8111e_probe_ext_phy()
1763 if (amd8111e_read_phy(lp, i, MII_PHYSID2, &id2)) in amd8111e_probe_ext_phy()
1765 lp->ext_phy_id = (id1 << 16) | id2; in amd8111e_probe_ext_phy()
1766 lp->ext_phy_addr = i; in amd8111e_probe_ext_phy()
1769 lp->ext_phy_id = 0; in amd8111e_probe_ext_phy()
1770 lp->ext_phy_addr = 1; in amd8111e_probe_ext_phy()
1794 struct amd8111e_priv *lp; in amd8111e_probe_one() local
1846 lp = netdev_priv(dev); in amd8111e_probe_one()
1847 lp->pci_dev = pdev; in amd8111e_probe_one()
1848 lp->amd8111e_net_dev = dev; in amd8111e_probe_one()
1849 lp->pm_cap = pdev->pm_cap; in amd8111e_probe_one()
1851 spin_lock_init(&lp->lock); in amd8111e_probe_one()
1853 lp->mmio = devm_ioremap(&pdev->dev, reg_addr, reg_len); in amd8111e_probe_one()
1854 if (!lp->mmio) { in amd8111e_probe_one()
1862 dev->dev_addr[i] = readb(lp->mmio + PADR + i); in amd8111e_probe_one()
1865 lp->ext_phy_option = speed_duplex[card_idx]; in amd8111e_probe_one()
1867 lp->options |= OPTION_INTR_COAL_ENABLE; in amd8111e_probe_one()
1869 lp->options |= OPTION_DYN_IPG_ENABLE; in amd8111e_probe_one()
1877 netif_napi_add(dev, &lp->napi, amd8111e_rx_poll, 32); in amd8111e_probe_one()
1886 lp->mii_if.dev = dev; in amd8111e_probe_one()
1887 lp->mii_if.mdio_read = amd8111e_mdio_read; in amd8111e_probe_one()
1888 lp->mii_if.mdio_write = amd8111e_mdio_write; in amd8111e_probe_one()
1889 lp->mii_if.phy_id = lp->ext_phy_addr; in amd8111e_probe_one()
1904 if(lp->options & OPTION_DYN_IPG_ENABLE){ in amd8111e_probe_one()
1905 init_timer(&lp->ipg_data.ipg_timer); in amd8111e_probe_one()
1906 lp->ipg_data.ipg_timer.data = (unsigned long) dev; in amd8111e_probe_one()
1907 lp->ipg_data.ipg_timer.function = (void *)&amd8111e_config_ipg; in amd8111e_probe_one()
1908 lp->ipg_data.ipg_timer.expires = jiffies + in amd8111e_probe_one()
1910 lp->ipg_data.ipg = DEFAULT_IPG; in amd8111e_probe_one()
1911 lp->ipg_data.ipg_state = CSTATE; in amd8111e_probe_one()
1915 chip_version = (readl(lp->mmio + CHIPID) & 0xf0000000)>>28; in amd8111e_probe_one()
1919 if (lp->ext_phy_id) in amd8111e_probe_one()
1921 lp->ext_phy_id, lp->ext_phy_addr); in amd8111e_probe_one()