Lines Matching refs:lp
99 static int amd8111e_read_phy(struct amd8111e_priv *lp, in amd8111e_read_phy() argument
102 void __iomem *mmio = lp->mmio; in amd8111e_read_phy()
128 static int amd8111e_write_phy(struct amd8111e_priv *lp, in amd8111e_write_phy() argument
132 void __iomem *mmio = lp->mmio; in amd8111e_write_phy()
160 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_mdio_read() local
163 amd8111e_read_phy(lp,phy_id,reg_num,®_val); in amd8111e_mdio_read()
172 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_mdio_write() local
174 amd8111e_write_phy(lp, phy_id, reg_num, val); in amd8111e_mdio_write()
182 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_ext_phy() local
186 advert = amd8111e_mdio_read(dev, lp->ext_phy_addr, MII_ADVERTISE); in amd8111e_set_ext_phy()
188 switch (lp->ext_phy_option){ in amd8111e_set_ext_phy()
210 amd8111e_mdio_write(dev, lp->ext_phy_addr, MII_ADVERTISE, tmp); in amd8111e_set_ext_phy()
212 bmcr = amd8111e_mdio_read(dev, lp->ext_phy_addr, MII_BMCR); in amd8111e_set_ext_phy()
214 amd8111e_mdio_write(dev, lp->ext_phy_addr, MII_BMCR, bmcr); in amd8111e_set_ext_phy()
223 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_free_skbs() local
229 if(lp->tx_skbuff[i]){ in amd8111e_free_skbs()
230 pci_unmap_single(lp->pci_dev,lp->tx_dma_addr[i], lp->tx_skbuff[i]->len,PCI_DMA_TODEVICE); in amd8111e_free_skbs()
231 dev_kfree_skb (lp->tx_skbuff[i]); in amd8111e_free_skbs()
232 lp->tx_skbuff[i] = NULL; in amd8111e_free_skbs()
233 lp->tx_dma_addr[i] = 0; in amd8111e_free_skbs()
238 rx_skbuff = lp->rx_skbuff[i]; in amd8111e_free_skbs()
240 pci_unmap_single(lp->pci_dev,lp->rx_dma_addr[i], in amd8111e_free_skbs()
241 lp->rx_buff_len - 2,PCI_DMA_FROMDEVICE); in amd8111e_free_skbs()
242 dev_kfree_skb(lp->rx_skbuff[i]); in amd8111e_free_skbs()
243 lp->rx_skbuff[i] = NULL; in amd8111e_free_skbs()
244 lp->rx_dma_addr[i] = 0; in amd8111e_free_skbs()
256 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_rx_buff_len() local
263 lp->rx_buff_len = mtu + ETH_HLEN + 10; in amd8111e_set_rx_buff_len()
264 lp->options |= OPTION_JUMBO_ENABLE; in amd8111e_set_rx_buff_len()
266 lp->rx_buff_len = PKT_BUFF_SZ; in amd8111e_set_rx_buff_len()
267 lp->options &= ~OPTION_JUMBO_ENABLE; in amd8111e_set_rx_buff_len()
278 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_init_ring() local
281 lp->rx_idx = lp->tx_idx = 0; in amd8111e_init_ring()
282 lp->tx_complete_idx = 0; in amd8111e_init_ring()
283 lp->tx_ring_idx = 0; in amd8111e_init_ring()
286 if(lp->opened) in amd8111e_init_ring()
292 if((lp->tx_ring = pci_alloc_consistent(lp->pci_dev, in amd8111e_init_ring()
294 &lp->tx_ring_dma_addr)) == NULL) in amd8111e_init_ring()
298 if((lp->rx_ring = pci_alloc_consistent(lp->pci_dev, in amd8111e_init_ring()
300 &lp->rx_ring_dma_addr)) == NULL) in amd8111e_init_ring()
311 lp->rx_skbuff[i] = netdev_alloc_skb(dev, lp->rx_buff_len); in amd8111e_init_ring()
312 if (!lp->rx_skbuff[i]) { in amd8111e_init_ring()
315 dev_kfree_skb(lp->rx_skbuff[i]); in amd8111e_init_ring()
318 skb_reserve(lp->rx_skbuff[i],2); in amd8111e_init_ring()
322 lp->rx_dma_addr[i] = pci_map_single(lp->pci_dev, in amd8111e_init_ring()
323 lp->rx_skbuff[i]->data,lp->rx_buff_len-2, PCI_DMA_FROMDEVICE); in amd8111e_init_ring()
325 lp->rx_ring[i].buff_phy_addr = cpu_to_le32(lp->rx_dma_addr[i]); in amd8111e_init_ring()
326 lp->rx_ring[i].buff_count = cpu_to_le16(lp->rx_buff_len-2); in amd8111e_init_ring()
328 lp->rx_ring[i].rx_flags = cpu_to_le16(OWN_BIT); in amd8111e_init_ring()
333 lp->tx_ring[i].buff_phy_addr = 0; in amd8111e_init_ring()
334 lp->tx_ring[i].tx_flags = 0; in amd8111e_init_ring()
335 lp->tx_ring[i].buff_count = 0; in amd8111e_init_ring()
342 pci_free_consistent(lp->pci_dev, in amd8111e_init_ring()
343 sizeof(struct amd8111e_rx_dr)*NUM_RX_RING_DR,lp->rx_ring, in amd8111e_init_ring()
344 lp->rx_ring_dma_addr); in amd8111e_init_ring()
348 pci_free_consistent(lp->pci_dev, in amd8111e_init_ring()
349 sizeof(struct amd8111e_tx_dr)*NUM_TX_RING_DR,lp->tx_ring, in amd8111e_init_ring()
350 lp->tx_ring_dma_addr); in amd8111e_init_ring()
364 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_coalesce() local
365 void __iomem *mmio = lp->mmio; in amd8111e_set_coalesce()
366 struct amd8111e_coalesce_conf *coal_conf = &lp->coal_conf; in amd8111e_set_coalesce()
420 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_restart() local
421 void __iomem *mmio = lp->mmio; in amd8111e_restart()
449 writel((u32)lp->tx_ring_dma_addr,mmio + XMT_RING_BASE_ADDR0); in amd8111e_restart()
450 writel((u32)lp->rx_ring_dma_addr,mmio+ RCV_RING_BASE_ADDR0); in amd8111e_restart()
459 if(lp->options & OPTION_JUMBO_ENABLE){ in amd8111e_restart()
480 if(lp->options & OPTION_INTR_COAL_ENABLE){ in amd8111e_restart()
495 static void amd8111e_init_hw_default(struct amd8111e_priv *lp) in amd8111e_init_hw_default() argument
499 void __iomem *mmio = lp->mmio; in amd8111e_init_hw_default()
506 writew( 0x8100 | lp->ext_phy_addr, mmio + AUTOPOLL0); in amd8111e_init_hw_default()
570 if(lp->options & OPTION_JUMBO_ENABLE) in amd8111e_init_hw_default()
586 static void amd8111e_disable_interrupt(struct amd8111e_priv *lp) in amd8111e_disable_interrupt() argument
591 writel(INTREN, lp->mmio + CMD0); in amd8111e_disable_interrupt()
594 intr0 = readl(lp->mmio + INT0); in amd8111e_disable_interrupt()
595 writel(intr0, lp->mmio + INT0); in amd8111e_disable_interrupt()
598 readl(lp->mmio + INT0); in amd8111e_disable_interrupt()
603 static void amd8111e_stop_chip(struct amd8111e_priv *lp) in amd8111e_stop_chip() argument
605 writel(RUN, lp->mmio + CMD0); in amd8111e_stop_chip()
608 readl(lp->mmio + CMD0); in amd8111e_stop_chip()
612 static void amd8111e_free_ring(struct amd8111e_priv *lp) in amd8111e_free_ring() argument
615 if(lp->rx_ring){ in amd8111e_free_ring()
616 pci_free_consistent(lp->pci_dev, in amd8111e_free_ring()
618 lp->rx_ring, lp->rx_ring_dma_addr); in amd8111e_free_ring()
619 lp->rx_ring = NULL; in amd8111e_free_ring()
622 if(lp->tx_ring){ in amd8111e_free_ring()
623 pci_free_consistent(lp->pci_dev, in amd8111e_free_ring()
625 lp->tx_ring, lp->tx_ring_dma_addr); in amd8111e_free_ring()
627 lp->tx_ring = NULL; in amd8111e_free_ring()
638 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_tx() local
642 while (lp->tx_complete_idx != lp->tx_idx){ in amd8111e_tx()
643 tx_index = lp->tx_complete_idx & TX_RING_DR_MOD_MASK; in amd8111e_tx()
644 status = le16_to_cpu(lp->tx_ring[tx_index].tx_flags); in amd8111e_tx()
649 lp->tx_ring[tx_index].buff_phy_addr = 0; in amd8111e_tx()
652 if (lp->tx_skbuff[tx_index]) { in amd8111e_tx()
653 pci_unmap_single(lp->pci_dev, lp->tx_dma_addr[tx_index], in amd8111e_tx()
654 lp->tx_skbuff[tx_index]->len, in amd8111e_tx()
656 dev_consume_skb_irq(lp->tx_skbuff[tx_index]); in amd8111e_tx()
657 lp->tx_skbuff[tx_index] = NULL; in amd8111e_tx()
658 lp->tx_dma_addr[tx_index] = 0; in amd8111e_tx()
660 lp->tx_complete_idx++; in amd8111e_tx()
662 lp->coal_conf.tx_packets++; in amd8111e_tx()
663 lp->coal_conf.tx_bytes += in amd8111e_tx()
664 le16_to_cpu(lp->tx_ring[tx_index].buff_count); in amd8111e_tx()
667 lp->tx_complete_idx > lp->tx_idx - NUM_TX_BUFFERS +2){ in amd8111e_tx()
679 struct amd8111e_priv *lp = container_of(napi, struct amd8111e_priv, napi); in amd8111e_rx_poll() local
680 struct net_device *dev = lp->amd8111e_net_dev; in amd8111e_rx_poll()
681 int rx_index = lp->rx_idx & RX_RING_DR_MOD_MASK; in amd8111e_rx_poll()
682 void __iomem *mmio = lp->mmio; in amd8111e_rx_poll()
692 status = le16_to_cpu(lp->rx_ring[rx_index].rx_flags); in amd8111e_rx_poll()
704 lp->rx_ring[rx_index].rx_flags &= RESET_RX_FLAGS; in amd8111e_rx_poll()
710 lp->rx_ring[rx_index].rx_flags &= RESET_RX_FLAGS; in amd8111e_rx_poll()
713 pkt_len = le16_to_cpu(lp->rx_ring[rx_index].msg_count) - 4; in amd8111e_rx_poll()
725 lp->rx_ring[rx_index].rx_flags &= RESET_RX_FLAGS; in amd8111e_rx_poll()
726 lp->drv_rx_errors++; in amd8111e_rx_poll()
729 new_skb = netdev_alloc_skb(dev, lp->rx_buff_len); in amd8111e_rx_poll()
734 lp->rx_ring[rx_index].rx_flags &= RESET_RX_FLAGS; in amd8111e_rx_poll()
735 lp->drv_rx_errors++; in amd8111e_rx_poll()
740 skb = lp->rx_skbuff[rx_index]; in amd8111e_rx_poll()
741 pci_unmap_single(lp->pci_dev,lp->rx_dma_addr[rx_index], in amd8111e_rx_poll()
742 lp->rx_buff_len-2, PCI_DMA_FROMDEVICE); in amd8111e_rx_poll()
744 lp->rx_skbuff[rx_index] = new_skb; in amd8111e_rx_poll()
745 lp->rx_dma_addr[rx_index] = pci_map_single(lp->pci_dev, in amd8111e_rx_poll()
747 lp->rx_buff_len-2, in amd8111e_rx_poll()
754 u16 vlan_tag = le16_to_cpu(lp->rx_ring[rx_index].tag_ctrl_info); in amd8111e_rx_poll()
760 lp->coal_conf.rx_packets++; in amd8111e_rx_poll()
761 lp->coal_conf.rx_bytes += pkt_len; in amd8111e_rx_poll()
765 lp->rx_ring[rx_index].buff_phy_addr in amd8111e_rx_poll()
766 = cpu_to_le32(lp->rx_dma_addr[rx_index]); in amd8111e_rx_poll()
767 lp->rx_ring[rx_index].buff_count = in amd8111e_rx_poll()
768 cpu_to_le16(lp->rx_buff_len-2); in amd8111e_rx_poll()
770 lp->rx_ring[rx_index].rx_flags |= cpu_to_le16(OWN_BIT); in amd8111e_rx_poll()
771 rx_index = (++lp->rx_idx) & RX_RING_DR_MOD_MASK; in amd8111e_rx_poll()
778 spin_lock_irqsave(&lp->lock, flags); in amd8111e_rx_poll()
781 spin_unlock_irqrestore(&lp->lock, flags); in amd8111e_rx_poll()
790 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_link_change() local
794 status0 = readl(lp->mmio + STAT0); in amd8111e_link_change()
798 lp->link_config.autoneg = AUTONEG_ENABLE; in amd8111e_link_change()
800 lp->link_config.autoneg = AUTONEG_DISABLE; in amd8111e_link_change()
803 lp->link_config.duplex = DUPLEX_FULL; in amd8111e_link_change()
805 lp->link_config.duplex = DUPLEX_HALF; in amd8111e_link_change()
808 lp->link_config.speed = SPEED_10; in amd8111e_link_change()
810 lp->link_config.speed = SPEED_100; in amd8111e_link_change()
813 (lp->link_config.speed == SPEED_100) ? in amd8111e_link_change()
815 (lp->link_config.duplex == DUPLEX_FULL) ? in amd8111e_link_change()
821 lp->link_config.speed = SPEED_INVALID; in amd8111e_link_change()
822 lp->link_config.duplex = DUPLEX_INVALID; in amd8111e_link_change()
823 lp->link_config.autoneg = AUTONEG_INVALID; in amd8111e_link_change()
854 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_stats() local
855 void __iomem *mmio = lp->mmio; in amd8111e_get_stats()
859 if (!lp->opened) in amd8111e_get_stats()
861 spin_lock_irqsave (&lp->lock, flags); in amd8111e_get_stats()
885 lp->drv_rx_errors; in amd8111e_get_stats()
941 spin_unlock_irqrestore (&lp->lock, flags); in amd8111e_get_stats()
951 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_calc_coalesce() local
952 struct amd8111e_coalesce_conf *coal_conf = &lp->coal_conf; in amd8111e_calc_coalesce()
1084 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_interrupt() local
1085 void __iomem *mmio = lp->mmio; in amd8111e_interrupt()
1092 spin_lock(&lp->lock); in amd8111e_interrupt()
1113 if (napi_schedule_prep(&lp->napi)) { in amd8111e_interrupt()
1117 __napi_schedule(&lp->napi); in amd8111e_interrupt()
1140 spin_unlock(&lp->lock); in amd8111e_interrupt()
1162 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_close() local
1165 napi_disable(&lp->napi); in amd8111e_close()
1167 spin_lock_irq(&lp->lock); in amd8111e_close()
1169 amd8111e_disable_interrupt(lp); in amd8111e_close()
1170 amd8111e_stop_chip(lp); in amd8111e_close()
1173 amd8111e_free_skbs(lp->amd8111e_net_dev); in amd8111e_close()
1175 netif_carrier_off(lp->amd8111e_net_dev); in amd8111e_close()
1178 if(lp->options & OPTION_DYN_IPG_ENABLE) in amd8111e_close()
1179 del_timer_sync(&lp->ipg_data.ipg_timer); in amd8111e_close()
1181 spin_unlock_irq(&lp->lock); in amd8111e_close()
1183 amd8111e_free_ring(lp); in amd8111e_close()
1187 lp->opened = 0; in amd8111e_close()
1196 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_open() local
1202 napi_enable(&lp->napi); in amd8111e_open()
1204 spin_lock_irq(&lp->lock); in amd8111e_open()
1206 amd8111e_init_hw_default(lp); in amd8111e_open()
1209 spin_unlock_irq(&lp->lock); in amd8111e_open()
1210 napi_disable(&lp->napi); in amd8111e_open()
1216 if(lp->options & OPTION_DYN_IPG_ENABLE){ in amd8111e_open()
1217 add_timer(&lp->ipg_data.ipg_timer); in amd8111e_open()
1221 lp->opened = 1; in amd8111e_open()
1223 spin_unlock_irq(&lp->lock); in amd8111e_open()
1233 static int amd8111e_tx_queue_avail(struct amd8111e_priv *lp) in amd8111e_tx_queue_avail() argument
1235 int tx_index = lp->tx_idx & TX_BUFF_MOD_MASK; in amd8111e_tx_queue_avail()
1236 if (lp->tx_skbuff[tx_index]) in amd8111e_tx_queue_avail()
1251 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_start_xmit() local
1255 spin_lock_irqsave(&lp->lock, flags); in amd8111e_start_xmit()
1257 tx_index = lp->tx_idx & TX_RING_DR_MOD_MASK; in amd8111e_start_xmit()
1259 lp->tx_ring[tx_index].buff_count = cpu_to_le16(skb->len); in amd8111e_start_xmit()
1261 lp->tx_skbuff[tx_index] = skb; in amd8111e_start_xmit()
1262 lp->tx_ring[tx_index].tx_flags = 0; in amd8111e_start_xmit()
1266 lp->tx_ring[tx_index].tag_ctrl_cmd |= in amd8111e_start_xmit()
1268 lp->tx_ring[tx_index].tag_ctrl_info = in amd8111e_start_xmit()
1273 lp->tx_dma_addr[tx_index] = in amd8111e_start_xmit()
1274 pci_map_single(lp->pci_dev, skb->data, skb->len, PCI_DMA_TODEVICE); in amd8111e_start_xmit()
1275 lp->tx_ring[tx_index].buff_phy_addr = in amd8111e_start_xmit()
1276 cpu_to_le32(lp->tx_dma_addr[tx_index]); in amd8111e_start_xmit()
1280 lp->tx_ring[tx_index].tx_flags |= in amd8111e_start_xmit()
1283 lp->tx_idx++; in amd8111e_start_xmit()
1286 writel( VAL1 | TDMD0, lp->mmio + CMD0); in amd8111e_start_xmit()
1287 writel( VAL2 | RDMD0,lp->mmio + CMD0); in amd8111e_start_xmit()
1289 if(amd8111e_tx_queue_avail(lp) < 0){ in amd8111e_start_xmit()
1292 spin_unlock_irqrestore(&lp->lock, flags); in amd8111e_start_xmit()
1296 static void amd8111e_read_regs(struct amd8111e_priv *lp, u32 *buf) in amd8111e_read_regs() argument
1298 void __iomem *mmio = lp->mmio; in amd8111e_read_regs()
1322 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_multicast_list() local
1327 writel( VAL2 | PROM, lp->mmio + CMD2); in amd8111e_set_multicast_list()
1331 writel( PROM, lp->mmio + CMD2); in amd8111e_set_multicast_list()
1336 lp->options |= OPTION_MULTICAST_ENABLE; in amd8111e_set_multicast_list()
1337 amd8111e_writeq(*(u64 *)mc_filter, lp->mmio + LADRF); in amd8111e_set_multicast_list()
1343 lp->options &= ~OPTION_MULTICAST_ENABLE; in amd8111e_set_multicast_list()
1344 amd8111e_writeq(*(u64 *)mc_filter, lp->mmio + LADRF); in amd8111e_set_multicast_list()
1346 writel(PROM, lp->mmio + CMD2); in amd8111e_set_multicast_list()
1350 lp->options |= OPTION_MULTICAST_ENABLE; in amd8111e_set_multicast_list()
1356 amd8111e_writeq(*(u64 *)mc_filter, lp->mmio + LADRF); in amd8111e_set_multicast_list()
1359 readl(lp->mmio + CMD2); in amd8111e_set_multicast_list()
1366 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_drvinfo() local
1367 struct pci_dev *pci_dev = lp->pci_dev; in amd8111e_get_drvinfo()
1382 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_regs() local
1384 amd8111e_read_regs(lp, buf); in amd8111e_get_regs()
1390 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_link_ksettings() local
1391 spin_lock_irq(&lp->lock); in amd8111e_get_link_ksettings()
1392 mii_ethtool_get_link_ksettings(&lp->mii_if, cmd); in amd8111e_get_link_ksettings()
1393 spin_unlock_irq(&lp->lock); in amd8111e_get_link_ksettings()
1400 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_link_ksettings() local
1402 spin_lock_irq(&lp->lock); in amd8111e_set_link_ksettings()
1403 res = mii_ethtool_set_link_ksettings(&lp->mii_if, cmd); in amd8111e_set_link_ksettings()
1404 spin_unlock_irq(&lp->lock); in amd8111e_set_link_ksettings()
1410 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_nway_reset() local
1411 return mii_nway_restart(&lp->mii_if); in amd8111e_nway_reset()
1416 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_link() local
1417 return mii_link_ok(&lp->mii_if); in amd8111e_get_link()
1422 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_get_wol() local
1424 if (lp->options & OPTION_WOL_ENABLE) in amd8111e_get_wol()
1430 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_wol() local
1433 spin_lock_irq(&lp->lock); in amd8111e_set_wol()
1435 lp->options |= in amd8111e_set_wol()
1438 lp->options |= in amd8111e_set_wol()
1441 lp->options &= ~OPTION_WOL_ENABLE; in amd8111e_set_wol()
1442 spin_unlock_irq(&lp->lock); in amd8111e_set_wol()
1465 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_ioctl() local
1471 data->phy_id = lp->ext_phy_addr; in amd8111e_ioctl()
1476 spin_lock_irq(&lp->lock); in amd8111e_ioctl()
1477 err = amd8111e_read_phy(lp, data->phy_id, in amd8111e_ioctl()
1479 spin_unlock_irq(&lp->lock); in amd8111e_ioctl()
1486 spin_lock_irq(&lp->lock); in amd8111e_ioctl()
1487 err = amd8111e_write_phy(lp, data->phy_id, in amd8111e_ioctl()
1489 spin_unlock_irq(&lp->lock); in amd8111e_ioctl()
1501 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_set_mac_address() local
1506 spin_lock_irq(&lp->lock); in amd8111e_set_mac_address()
1509 writeb( dev->dev_addr[i], lp->mmio + PADR + i ); in amd8111e_set_mac_address()
1511 spin_unlock_irq(&lp->lock); in amd8111e_set_mac_address()
1521 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_change_mtu() local
1532 spin_lock_irq(&lp->lock); in amd8111e_change_mtu()
1535 writel(RUN, lp->mmio + CMD0); in amd8111e_change_mtu()
1540 spin_unlock_irq(&lp->lock); in amd8111e_change_mtu()
1546 static int amd8111e_enable_magicpkt(struct amd8111e_priv *lp) in amd8111e_enable_magicpkt() argument
1548 writel( VAL1|MPPLBA, lp->mmio + CMD3); in amd8111e_enable_magicpkt()
1549 writel( VAL0|MPEN_SW, lp->mmio + CMD7); in amd8111e_enable_magicpkt()
1552 readl(lp->mmio + CMD7); in amd8111e_enable_magicpkt()
1556 static int amd8111e_enable_link_change(struct amd8111e_priv *lp) in amd8111e_enable_link_change() argument
1560 writel(VAL0|LCMODE_SW,lp->mmio + CMD7); in amd8111e_enable_link_change()
1563 readl(lp->mmio + CMD7); in amd8111e_enable_link_change()
1574 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_tx_timeout() local
1579 spin_lock_irq(&lp->lock); in amd8111e_tx_timeout()
1581 spin_unlock_irq(&lp->lock); in amd8111e_tx_timeout()
1588 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_suspend() local
1594 spin_lock_irq(&lp->lock); in amd8111e_suspend()
1595 amd8111e_disable_interrupt(lp); in amd8111e_suspend()
1596 spin_unlock_irq(&lp->lock); in amd8111e_suspend()
1601 spin_lock_irq(&lp->lock); in amd8111e_suspend()
1602 if(lp->options & OPTION_DYN_IPG_ENABLE) in amd8111e_suspend()
1603 del_timer_sync(&lp->ipg_data.ipg_timer); in amd8111e_suspend()
1604 amd8111e_stop_chip(lp); in amd8111e_suspend()
1605 spin_unlock_irq(&lp->lock); in amd8111e_suspend()
1607 if(lp->options & OPTION_WOL_ENABLE){ in amd8111e_suspend()
1609 if(lp->options & OPTION_WAKE_MAGIC_ENABLE) in amd8111e_suspend()
1610 amd8111e_enable_magicpkt(lp); in amd8111e_suspend()
1611 if(lp->options & OPTION_WAKE_PHY_ENABLE) in amd8111e_suspend()
1612 amd8111e_enable_link_change(lp); in amd8111e_suspend()
1631 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_resume() local
1644 spin_lock_irq(&lp->lock); in amd8111e_resume()
1647 if(lp->options & OPTION_DYN_IPG_ENABLE) in amd8111e_resume()
1648 mod_timer(&lp->ipg_data.ipg_timer, in amd8111e_resume()
1650 spin_unlock_irq(&lp->lock); in amd8111e_resume()
1657 struct amd8111e_priv *lp = from_timer(lp, t, ipg_data.ipg_timer); in amd8111e_config_ipg() local
1658 struct ipg_info *ipg_data = &lp->ipg_data; in amd8111e_config_ipg()
1659 void __iomem *mmio = lp->mmio; in amd8111e_config_ipg()
1664 if(lp->link_config.duplex == DUPLEX_FULL){ in amd8111e_config_ipg()
1710 mod_timer(&lp->ipg_data.ipg_timer, jiffies + IPG_CONVERGE_JIFFIES); in amd8111e_config_ipg()
1717 struct amd8111e_priv *lp = netdev_priv(dev); in amd8111e_probe_ext_phy() local
1723 if (amd8111e_read_phy(lp, i, MII_PHYSID1, &id1)) in amd8111e_probe_ext_phy()
1725 if (amd8111e_read_phy(lp, i, MII_PHYSID2, &id2)) in amd8111e_probe_ext_phy()
1727 lp->ext_phy_id = (id1 << 16) | id2; in amd8111e_probe_ext_phy()
1728 lp->ext_phy_addr = i; in amd8111e_probe_ext_phy()
1731 lp->ext_phy_id = 0; in amd8111e_probe_ext_phy()
1732 lp->ext_phy_addr = 1; in amd8111e_probe_ext_phy()
1756 struct amd8111e_priv *lp; in amd8111e_probe_one() local
1808 lp = netdev_priv(dev); in amd8111e_probe_one()
1809 lp->pci_dev = pdev; in amd8111e_probe_one()
1810 lp->amd8111e_net_dev = dev; in amd8111e_probe_one()
1811 lp->pm_cap = pdev->pm_cap; in amd8111e_probe_one()
1813 spin_lock_init(&lp->lock); in amd8111e_probe_one()
1815 lp->mmio = devm_ioremap(&pdev->dev, reg_addr, reg_len); in amd8111e_probe_one()
1816 if (!lp->mmio) { in amd8111e_probe_one()
1824 dev->dev_addr[i] = readb(lp->mmio + PADR + i); in amd8111e_probe_one()
1827 lp->ext_phy_option = speed_duplex[card_idx]; in amd8111e_probe_one()
1829 lp->options |= OPTION_INTR_COAL_ENABLE; in amd8111e_probe_one()
1831 lp->options |= OPTION_DYN_IPG_ENABLE; in amd8111e_probe_one()
1841 netif_napi_add(dev, &lp->napi, amd8111e_rx_poll, 32); in amd8111e_probe_one()
1850 lp->mii_if.dev = dev; in amd8111e_probe_one()
1851 lp->mii_if.mdio_read = amd8111e_mdio_read; in amd8111e_probe_one()
1852 lp->mii_if.mdio_write = amd8111e_mdio_write; in amd8111e_probe_one()
1853 lp->mii_if.phy_id = lp->ext_phy_addr; in amd8111e_probe_one()
1868 if(lp->options & OPTION_DYN_IPG_ENABLE){ in amd8111e_probe_one()
1869 timer_setup(&lp->ipg_data.ipg_timer, amd8111e_config_ipg, 0); in amd8111e_probe_one()
1870 lp->ipg_data.ipg_timer.expires = jiffies + in amd8111e_probe_one()
1872 lp->ipg_data.ipg = DEFAULT_IPG; in amd8111e_probe_one()
1873 lp->ipg_data.ipg_state = CSTATE; in amd8111e_probe_one()
1877 chip_version = (readl(lp->mmio + CHIPID) & 0xf0000000)>>28; in amd8111e_probe_one()
1881 if (lp->ext_phy_id) in amd8111e_probe_one()
1883 lp->ext_phy_id, lp->ext_phy_addr); in amd8111e_probe_one()