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
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()
705 status = le16_to_cpu(lp->rx_ring[rx_index].rx_flags); in amd8111e_rx_poll()
717 lp->rx_ring[rx_index].rx_flags &= RESET_RX_FLAGS; in amd8111e_rx_poll()
723 lp->rx_ring[rx_index].rx_flags &= RESET_RX_FLAGS; in amd8111e_rx_poll()
726 pkt_len = le16_to_cpu(lp->rx_ring[rx_index].msg_count) - 4; in amd8111e_rx_poll()
738 lp->rx_ring[rx_index].rx_flags &= RESET_RX_FLAGS; in amd8111e_rx_poll()
739 lp->drv_rx_errors++; in amd8111e_rx_poll()
742 new_skb = netdev_alloc_skb(dev, lp->rx_buff_len); in amd8111e_rx_poll()
747 lp->rx_ring[rx_index].rx_flags &= RESET_RX_FLAGS; in amd8111e_rx_poll()
748 lp->drv_rx_errors++; in amd8111e_rx_poll()
753 skb = lp->rx_skbuff[rx_index]; in amd8111e_rx_poll()
754 pci_unmap_single(lp->pci_dev,lp->rx_dma_addr[rx_index], in amd8111e_rx_poll()
755 lp->rx_buff_len-2, PCI_DMA_FROMDEVICE); in amd8111e_rx_poll()
757 lp->rx_skbuff[rx_index] = new_skb; in amd8111e_rx_poll()
758 lp->rx_dma_addr[rx_index] = pci_map_single(lp->pci_dev, in amd8111e_rx_poll()
760 lp->rx_buff_len-2, in amd8111e_rx_poll()
767 u16 vlan_tag = le16_to_cpu(lp->rx_ring[rx_index].tag_ctrl_info); in amd8111e_rx_poll()
773 lp->coal_conf.rx_packets++; in amd8111e_rx_poll()
774 lp->coal_conf.rx_bytes += pkt_len; in amd8111e_rx_poll()
778 lp->rx_ring[rx_index].buff_phy_addr in amd8111e_rx_poll()
779 = cpu_to_le32(lp->rx_dma_addr[rx_index]); in amd8111e_rx_poll()
780 lp->rx_ring[rx_index].buff_count = in amd8111e_rx_poll()
781 cpu_to_le16(lp->rx_buff_len-2); in amd8111e_rx_poll()
783 lp->rx_ring[rx_index].rx_flags |= cpu_to_le16(OWN_BIT); in amd8111e_rx_poll()
784 rx_index = (++lp->rx_idx) & RX_RING_DR_MOD_MASK; in amd8111e_rx_poll()
791 spin_lock_irqsave(&lp->lock, flags); in amd8111e_rx_poll()
794 spin_unlock_irqrestore(&lp->lock, flags); in amd8111e_rx_poll()
803 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_link_change() local
807 status0 = readl(lp->mmio + STAT0); in amd8111e_link_change()
811 lp->link_config.autoneg = AUTONEG_ENABLE; in amd8111e_link_change()
813 lp->link_config.autoneg = AUTONEG_DISABLE; in amd8111e_link_change()
816 lp->link_config.duplex = DUPLEX_FULL; in amd8111e_link_change()
818 lp->link_config.duplex = DUPLEX_HALF; in amd8111e_link_change()
821 lp->link_config.speed = SPEED_10; in amd8111e_link_change()
823 lp->link_config.speed = SPEED_100; in amd8111e_link_change()
826 (lp->link_config.speed == SPEED_100) ? in amd8111e_link_change()
828 (lp->link_config.duplex == DUPLEX_FULL) ? in amd8111e_link_change()
834 lp->link_config.speed = SPEED_INVALID; in amd8111e_link_change()
835 lp->link_config.duplex = DUPLEX_INVALID; in amd8111e_link_change()
836 lp->link_config.autoneg = AUTONEG_INVALID; in amd8111e_link_change()
867 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_stats() local
868 void __iomem *mmio = lp->mmio; in amd8111e_get_stats()
872 if (!lp->opened) in amd8111e_get_stats()
874 spin_lock_irqsave (&lp->lock, flags); in amd8111e_get_stats()
898 lp->drv_rx_errors; in amd8111e_get_stats()
954 spin_unlock_irqrestore (&lp->lock, flags); in amd8111e_get_stats()
964 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_calc_coalesce() local
965 struct amd8111e_coalesce_conf *coal_conf = &lp->coal_conf; in amd8111e_calc_coalesce()
1097 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_interrupt() local
1098 void __iomem *mmio = lp->mmio; in amd8111e_interrupt()
1105 spin_lock(&lp->lock); in amd8111e_interrupt()
1126 if (napi_schedule_prep(&lp->napi)) { in amd8111e_interrupt()
1130 __napi_schedule(&lp->napi); in amd8111e_interrupt()
1153 spin_unlock(&lp->lock); in amd8111e_interrupt()
1175 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_close() local
1178 napi_disable(&lp->napi); in amd8111e_close()
1180 spin_lock_irq(&lp->lock); in amd8111e_close()
1182 amd8111e_disable_interrupt(lp); in amd8111e_close()
1183 amd8111e_stop_chip(lp); in amd8111e_close()
1186 amd8111e_free_skbs(lp->amd8111e_net_dev); in amd8111e_close()
1188 netif_carrier_off(lp->amd8111e_net_dev); in amd8111e_close()
1191 if(lp->options & OPTION_DYN_IPG_ENABLE) in amd8111e_close()
1192 del_timer_sync(&lp->ipg_data.ipg_timer); in amd8111e_close()
1194 spin_unlock_irq(&lp->lock); in amd8111e_close()
1196 amd8111e_free_ring(lp); in amd8111e_close()
1200 lp->opened = 0; in amd8111e_close()
1209 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_open() local
1215 napi_enable(&lp->napi); in amd8111e_open()
1217 spin_lock_irq(&lp->lock); in amd8111e_open()
1219 amd8111e_init_hw_default(lp); in amd8111e_open()
1222 spin_unlock_irq(&lp->lock); in amd8111e_open()
1223 napi_disable(&lp->napi); in amd8111e_open()
1229 if(lp->options & OPTION_DYN_IPG_ENABLE){ in amd8111e_open()
1230 add_timer(&lp->ipg_data.ipg_timer); in amd8111e_open()
1234 lp->opened = 1; in amd8111e_open()
1236 spin_unlock_irq(&lp->lock); in amd8111e_open()
1246 static int amd8111e_tx_queue_avail(struct amd8111e_priv *lp) in amd8111e_tx_queue_avail() argument
1248 int tx_index = lp->tx_idx & TX_BUFF_MOD_MASK; in amd8111e_tx_queue_avail()
1249 if (lp->tx_skbuff[tx_index]) in amd8111e_tx_queue_avail()
1264 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_start_xmit() local
1268 spin_lock_irqsave(&lp->lock, flags); in amd8111e_start_xmit()
1270 tx_index = lp->tx_idx & TX_RING_DR_MOD_MASK; in amd8111e_start_xmit()
1272 lp->tx_ring[tx_index].buff_count = cpu_to_le16(skb->len); in amd8111e_start_xmit()
1274 lp->tx_skbuff[tx_index] = skb; in amd8111e_start_xmit()
1275 lp->tx_ring[tx_index].tx_flags = 0; in amd8111e_start_xmit()
1279 lp->tx_ring[tx_index].tag_ctrl_cmd |= in amd8111e_start_xmit()
1281 lp->tx_ring[tx_index].tag_ctrl_info = in amd8111e_start_xmit()
1286 lp->tx_dma_addr[tx_index] = in amd8111e_start_xmit()
1287 pci_map_single(lp->pci_dev, skb->data, skb->len, PCI_DMA_TODEVICE); in amd8111e_start_xmit()
1288 lp->tx_ring[tx_index].buff_phy_addr = in amd8111e_start_xmit()
1289 cpu_to_le32(lp->tx_dma_addr[tx_index]); in amd8111e_start_xmit()
1293 lp->tx_ring[tx_index].tx_flags |= in amd8111e_start_xmit()
1296 lp->tx_idx++; in amd8111e_start_xmit()
1299 writel( VAL1 | TDMD0, lp->mmio + CMD0); in amd8111e_start_xmit()
1300 writel( VAL2 | RDMD0,lp->mmio + CMD0); in amd8111e_start_xmit()
1302 if(amd8111e_tx_queue_avail(lp) < 0){ in amd8111e_start_xmit()
1305 spin_unlock_irqrestore(&lp->lock, flags); in amd8111e_start_xmit()
1309 static void amd8111e_read_regs(struct amd8111e_priv *lp, u32 *buf) in amd8111e_read_regs() argument
1311 void __iomem *mmio = lp->mmio; in amd8111e_read_regs()
1335 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_multicast_list() local
1340 writel( VAL2 | PROM, lp->mmio + CMD2); in amd8111e_set_multicast_list()
1344 writel( PROM, lp->mmio + CMD2); in amd8111e_set_multicast_list()
1349 lp->options |= OPTION_MULTICAST_ENABLE; in amd8111e_set_multicast_list()
1350 amd8111e_writeq(*(u64 *)mc_filter, lp->mmio + LADRF); in amd8111e_set_multicast_list()
1356 lp->options &= ~OPTION_MULTICAST_ENABLE; in amd8111e_set_multicast_list()
1357 amd8111e_writeq(*(u64 *)mc_filter, lp->mmio + LADRF); in amd8111e_set_multicast_list()
1359 writel(PROM, lp->mmio + CMD2); in amd8111e_set_multicast_list()
1363 lp->options |= OPTION_MULTICAST_ENABLE; in amd8111e_set_multicast_list()
1369 amd8111e_writeq(*(u64 *)mc_filter, lp->mmio + LADRF); in amd8111e_set_multicast_list()
1372 readl(lp->mmio + CMD2); in amd8111e_set_multicast_list()
1379 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_drvinfo() local
1380 struct pci_dev *pci_dev = lp->pci_dev; in amd8111e_get_drvinfo()
1395 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_regs() local
1397 amd8111e_read_regs(lp, buf); in amd8111e_get_regs()
1403 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_link_ksettings() local
1404 spin_lock_irq(&lp->lock); in amd8111e_get_link_ksettings()
1405 mii_ethtool_get_link_ksettings(&lp->mii_if, cmd); in amd8111e_get_link_ksettings()
1406 spin_unlock_irq(&lp->lock); in amd8111e_get_link_ksettings()
1413 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_link_ksettings() local
1415 spin_lock_irq(&lp->lock); in amd8111e_set_link_ksettings()
1416 res = mii_ethtool_set_link_ksettings(&lp->mii_if, cmd); in amd8111e_set_link_ksettings()
1417 spin_unlock_irq(&lp->lock); in amd8111e_set_link_ksettings()
1423 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_nway_reset() local
1424 return mii_nway_restart(&lp->mii_if); in amd8111e_nway_reset()
1429 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_link() local
1430 return mii_link_ok(&lp->mii_if); in amd8111e_get_link()
1435 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_wol() local
1437 if (lp->options & OPTION_WOL_ENABLE) in amd8111e_get_wol()
1443 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_wol() local
1446 spin_lock_irq(&lp->lock); in amd8111e_set_wol()
1448 lp->options |= in amd8111e_set_wol()
1451 lp->options |= in amd8111e_set_wol()
1454 lp->options &= ~OPTION_WOL_ENABLE; in amd8111e_set_wol()
1455 spin_unlock_irq(&lp->lock); in amd8111e_set_wol()
1478 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_ioctl() local
1484 data->phy_id = lp->ext_phy_addr; in amd8111e_ioctl()
1489 spin_lock_irq(&lp->lock); in amd8111e_ioctl()
1490 err = amd8111e_read_phy(lp, data->phy_id, in amd8111e_ioctl()
1492 spin_unlock_irq(&lp->lock); in amd8111e_ioctl()
1499 spin_lock_irq(&lp->lock); in amd8111e_ioctl()
1500 err = amd8111e_write_phy(lp, data->phy_id, in amd8111e_ioctl()
1502 spin_unlock_irq(&lp->lock); in amd8111e_ioctl()
1514 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_mac_address() local
1519 spin_lock_irq(&lp->lock); in amd8111e_set_mac_address()
1522 writeb( dev->dev_addr[i], lp->mmio + PADR + i ); in amd8111e_set_mac_address()
1524 spin_unlock_irq(&lp->lock); in amd8111e_set_mac_address()
1534 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_change_mtu() local
1545 spin_lock_irq(&lp->lock); in amd8111e_change_mtu()
1548 writel(RUN, lp->mmio + CMD0); in amd8111e_change_mtu()
1553 spin_unlock_irq(&lp->lock); in amd8111e_change_mtu()
1559 static int amd8111e_enable_magicpkt(struct amd8111e_priv *lp) in amd8111e_enable_magicpkt() argument
1561 writel( VAL1|MPPLBA, lp->mmio + CMD3); in amd8111e_enable_magicpkt()
1562 writel( VAL0|MPEN_SW, lp->mmio + CMD7); in amd8111e_enable_magicpkt()
1565 readl(lp->mmio + CMD7); in amd8111e_enable_magicpkt()
1569 static int amd8111e_enable_link_change(struct amd8111e_priv *lp) in amd8111e_enable_link_change() argument
1573 writel(VAL0|LCMODE_SW,lp->mmio + CMD7); in amd8111e_enable_link_change()
1576 readl(lp->mmio + CMD7); in amd8111e_enable_link_change()
1587 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_tx_timeout() local
1592 spin_lock_irq(&lp->lock); in amd8111e_tx_timeout()
1594 spin_unlock_irq(&lp->lock); in amd8111e_tx_timeout()
1601 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_suspend() local
1607 spin_lock_irq(&lp->lock); in amd8111e_suspend()
1608 amd8111e_disable_interrupt(lp); in amd8111e_suspend()
1609 spin_unlock_irq(&lp->lock); in amd8111e_suspend()
1614 spin_lock_irq(&lp->lock); in amd8111e_suspend()
1615 if(lp->options & OPTION_DYN_IPG_ENABLE) in amd8111e_suspend()
1616 del_timer_sync(&lp->ipg_data.ipg_timer); in amd8111e_suspend()
1617 amd8111e_stop_chip(lp); in amd8111e_suspend()
1618 spin_unlock_irq(&lp->lock); in amd8111e_suspend()
1620 if(lp->options & OPTION_WOL_ENABLE){ in amd8111e_suspend()
1622 if(lp->options & OPTION_WAKE_MAGIC_ENABLE) in amd8111e_suspend()
1623 amd8111e_enable_magicpkt(lp); in amd8111e_suspend()
1624 if(lp->options & OPTION_WAKE_PHY_ENABLE) in amd8111e_suspend()
1625 amd8111e_enable_link_change(lp); in amd8111e_suspend()
1644 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_resume() local
1657 spin_lock_irq(&lp->lock); in amd8111e_resume()
1660 if(lp->options & OPTION_DYN_IPG_ENABLE) in amd8111e_resume()
1661 mod_timer(&lp->ipg_data.ipg_timer, in amd8111e_resume()
1663 spin_unlock_irq(&lp->lock); in amd8111e_resume()
1670 struct amd8111e_priv *lp = from_timer(lp, t, ipg_data.ipg_timer); in amd8111e_config_ipg() local
1671 struct ipg_info *ipg_data = &lp->ipg_data; in amd8111e_config_ipg()
1672 void __iomem *mmio = lp->mmio; in amd8111e_config_ipg()
1677 if(lp->link_config.duplex == DUPLEX_FULL){ in amd8111e_config_ipg()
1723 mod_timer(&lp->ipg_data.ipg_timer, jiffies + IPG_CONVERGE_JIFFIES); in amd8111e_config_ipg()
1730 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_probe_ext_phy() local
1736 if (amd8111e_read_phy(lp, i, MII_PHYSID1, &id1)) in amd8111e_probe_ext_phy()
1738 if (amd8111e_read_phy(lp, i, MII_PHYSID2, &id2)) in amd8111e_probe_ext_phy()
1740 lp->ext_phy_id = (id1 << 16) | id2; in amd8111e_probe_ext_phy()
1741 lp->ext_phy_addr = i; in amd8111e_probe_ext_phy()
1744 lp->ext_phy_id = 0; in amd8111e_probe_ext_phy()
1745 lp->ext_phy_addr = 1; in amd8111e_probe_ext_phy()
1769 struct amd8111e_priv *lp; in amd8111e_probe_one() local
1821 lp = netdev_priv(dev); in amd8111e_probe_one()
1822 lp->pci_dev = pdev; in amd8111e_probe_one()
1823 lp->amd8111e_net_dev = dev; in amd8111e_probe_one()
1824 lp->pm_cap = pdev->pm_cap; in amd8111e_probe_one()
1826 spin_lock_init(&lp->lock); in amd8111e_probe_one()
1828 lp->mmio = devm_ioremap(&pdev->dev, reg_addr, reg_len); in amd8111e_probe_one()
1829 if (!lp->mmio) { in amd8111e_probe_one()
1837 dev->dev_addr[i] = readb(lp->mmio + PADR + i); in amd8111e_probe_one()
1840 lp->ext_phy_option = speed_duplex[card_idx]; in amd8111e_probe_one()
1842 lp->options |= OPTION_INTR_COAL_ENABLE; in amd8111e_probe_one()
1844 lp->options |= OPTION_DYN_IPG_ENABLE; in amd8111e_probe_one()
1854 netif_napi_add(dev, &lp->napi, amd8111e_rx_poll, 32); in amd8111e_probe_one()
1863 lp->mii_if.dev = dev; in amd8111e_probe_one()
1864 lp->mii_if.mdio_read = amd8111e_mdio_read; in amd8111e_probe_one()
1865 lp->mii_if.mdio_write = amd8111e_mdio_write; in amd8111e_probe_one()
1866 lp->mii_if.phy_id = lp->ext_phy_addr; in amd8111e_probe_one()
1881 if(lp->options & OPTION_DYN_IPG_ENABLE){ in amd8111e_probe_one()
1882 timer_setup(&lp->ipg_data.ipg_timer, amd8111e_config_ipg, 0); in amd8111e_probe_one()
1883 lp->ipg_data.ipg_timer.expires = jiffies + in amd8111e_probe_one()
1885 lp->ipg_data.ipg = DEFAULT_IPG; in amd8111e_probe_one()
1886 lp->ipg_data.ipg_state = CSTATE; in amd8111e_probe_one()
1890 chip_version = (readl(lp->mmio + CHIPID) & 0xf0000000)>>28; in amd8111e_probe_one()
1894 if (lp->ext_phy_id) in amd8111e_probe_one()
1896 lp->ext_phy_id, lp->ext_phy_addr); in amd8111e_probe_one()