Lines Matching refs:priv
85 static inline u32 tse_tx_avail(struct altera_tse_private *priv) in tse_tx_avail() argument
87 return priv->tx_cons + priv->tx_ring_size - priv->tx_prod - 1; in tse_tx_avail()
94 struct net_device *ndev = bus->priv; in altera_tse_mdio_read()
95 struct altera_tse_private *priv = netdev_priv(ndev); in altera_tse_mdio_read() local
98 csrwr32((mii_id & 0x1f), priv->mac_dev, in altera_tse_mdio_read()
102 return csrrd32(priv->mac_dev, in altera_tse_mdio_read()
109 struct net_device *ndev = bus->priv; in altera_tse_mdio_write()
110 struct altera_tse_private *priv = netdev_priv(ndev); in altera_tse_mdio_write() local
113 csrwr32((mii_id & 0x1f), priv->mac_dev, in altera_tse_mdio_write()
117 csrwr32(value, priv->mac_dev, tse_csroffs(mdio_phy1) + regnum * 4); in altera_tse_mdio_write()
123 struct altera_tse_private *priv = netdev_priv(dev); in altera_tse_mdio_create() local
129 for_each_child_of_node(priv->device->of_node, child_node) { in altera_tse_mdio_create()
155 mdio->priv = dev; in altera_tse_mdio_create()
156 mdio->parent = priv->device; in altera_tse_mdio_create()
166 if (netif_msg_drv(priv)) in altera_tse_mdio_create()
169 priv->mdio = mdio; in altera_tse_mdio_create()
181 struct altera_tse_private *priv = netdev_priv(dev); in altera_tse_mdio_destroy() local
183 if (priv->mdio == NULL) in altera_tse_mdio_destroy()
186 if (netif_msg_drv(priv)) in altera_tse_mdio_destroy()
188 priv->mdio->id); in altera_tse_mdio_destroy()
190 mdiobus_unregister(priv->mdio); in altera_tse_mdio_destroy()
191 mdiobus_free(priv->mdio); in altera_tse_mdio_destroy()
192 priv->mdio = NULL; in altera_tse_mdio_destroy()
195 static int tse_init_rx_buffer(struct altera_tse_private *priv, in tse_init_rx_buffer() argument
198 rxbuffer->skb = netdev_alloc_skb_ip_align(priv->dev, len); in tse_init_rx_buffer()
202 rxbuffer->dma_addr = dma_map_single(priv->device, rxbuffer->skb->data, in tse_init_rx_buffer()
206 if (dma_mapping_error(priv->device, rxbuffer->dma_addr)) { in tse_init_rx_buffer()
207 netdev_err(priv->dev, "%s: DMA mapping error\n", __func__); in tse_init_rx_buffer()
216 static void tse_free_rx_buffer(struct altera_tse_private *priv, in tse_free_rx_buffer() argument
224 dma_unmap_single(priv->device, dma_addr, in tse_free_rx_buffer()
235 static void tse_free_tx_buffer(struct altera_tse_private *priv, in tse_free_tx_buffer() argument
240 dma_unmap_page(priv->device, buffer->dma_addr, in tse_free_tx_buffer()
243 dma_unmap_single(priv->device, buffer->dma_addr, in tse_free_tx_buffer()
253 static int alloc_init_skbufs(struct altera_tse_private *priv) in alloc_init_skbufs() argument
255 unsigned int rx_descs = priv->rx_ring_size; in alloc_init_skbufs()
256 unsigned int tx_descs = priv->tx_ring_size; in alloc_init_skbufs()
261 priv->rx_ring = kcalloc(rx_descs, sizeof(struct tse_buffer), in alloc_init_skbufs()
263 if (!priv->rx_ring) in alloc_init_skbufs()
267 priv->tx_ring = kcalloc(tx_descs, sizeof(struct tse_buffer), in alloc_init_skbufs()
269 if (!priv->tx_ring) in alloc_init_skbufs()
272 priv->tx_cons = 0; in alloc_init_skbufs()
273 priv->tx_prod = 0; in alloc_init_skbufs()
277 ret = tse_init_rx_buffer(priv, &priv->rx_ring[i], in alloc_init_skbufs()
278 priv->rx_dma_buf_sz); in alloc_init_skbufs()
283 priv->rx_cons = 0; in alloc_init_skbufs()
284 priv->rx_prod = 0; in alloc_init_skbufs()
289 tse_free_rx_buffer(priv, &priv->rx_ring[i]); in alloc_init_skbufs()
290 kfree(priv->tx_ring); in alloc_init_skbufs()
292 kfree(priv->rx_ring); in alloc_init_skbufs()
299 struct altera_tse_private *priv = netdev_priv(dev); in free_skbufs() local
300 unsigned int rx_descs = priv->rx_ring_size; in free_skbufs()
301 unsigned int tx_descs = priv->tx_ring_size; in free_skbufs()
306 tse_free_rx_buffer(priv, &priv->rx_ring[i]); in free_skbufs()
308 tse_free_tx_buffer(priv, &priv->tx_ring[i]); in free_skbufs()
311 kfree(priv->tx_ring); in free_skbufs()
316 static inline void tse_rx_refill(struct altera_tse_private *priv) in tse_rx_refill() argument
318 unsigned int rxsize = priv->rx_ring_size; in tse_rx_refill()
322 for (; priv->rx_cons - priv->rx_prod > 0; in tse_rx_refill()
323 priv->rx_prod++) { in tse_rx_refill()
324 entry = priv->rx_prod % rxsize; in tse_rx_refill()
325 if (likely(priv->rx_ring[entry].skb == NULL)) { in tse_rx_refill()
326 ret = tse_init_rx_buffer(priv, &priv->rx_ring[entry], in tse_rx_refill()
327 priv->rx_dma_buf_sz); in tse_rx_refill()
330 priv->dmaops->add_rx_desc(priv, &priv->rx_ring[entry]); in tse_rx_refill()
353 static int tse_rx(struct altera_tse_private *priv, int limit) in tse_rx() argument
355 unsigned int entry = priv->rx_cons % priv->rx_ring_size; in tse_rx()
369 ((rxstatus = priv->dmaops->get_rx_status(priv)) != 0)) { in tse_rx()
374 netdev_err(priv->dev, in tse_rx()
385 next_entry = (++priv->rx_cons) % priv->rx_ring_size; in tse_rx()
387 skb = priv->rx_ring[entry].skb; in tse_rx()
389 netdev_err(priv->dev, in tse_rx()
392 priv->dev->stats.rx_dropped++; in tse_rx()
395 priv->rx_ring[entry].skb = NULL; in tse_rx()
399 dma_unmap_single(priv->device, priv->rx_ring[entry].dma_addr, in tse_rx()
400 priv->rx_ring[entry].len, DMA_FROM_DEVICE); in tse_rx()
402 if (netif_msg_pktdata(priv)) { in tse_rx()
403 netdev_info(priv->dev, "frame received %d bytes\n", in tse_rx()
409 tse_rx_vlan(priv->dev, skb); in tse_rx()
411 skb->protocol = eth_type_trans(skb, priv->dev); in tse_rx()
414 napi_gro_receive(&priv->napi, skb); in tse_rx()
416 priv->dev->stats.rx_packets++; in tse_rx()
417 priv->dev->stats.rx_bytes += pktlength; in tse_rx()
421 tse_rx_refill(priv); in tse_rx()
429 static int tse_tx_complete(struct altera_tse_private *priv) in tse_tx_complete() argument
431 unsigned int txsize = priv->tx_ring_size; in tse_tx_complete()
437 spin_lock(&priv->tx_lock); in tse_tx_complete()
439 ready = priv->dmaops->tx_completions(priv); in tse_tx_complete()
442 while (ready && (priv->tx_cons != priv->tx_prod)) { in tse_tx_complete()
443 entry = priv->tx_cons % txsize; in tse_tx_complete()
444 tx_buff = &priv->tx_ring[entry]; in tse_tx_complete()
446 if (netif_msg_tx_done(priv)) in tse_tx_complete()
447 netdev_dbg(priv->dev, "%s: curr %d, dirty %d\n", in tse_tx_complete()
448 __func__, priv->tx_prod, priv->tx_cons); in tse_tx_complete()
451 priv->dev->stats.tx_packets++; in tse_tx_complete()
453 tse_free_tx_buffer(priv, tx_buff); in tse_tx_complete()
454 priv->tx_cons++; in tse_tx_complete()
460 if (unlikely(netif_queue_stopped(priv->dev) && in tse_tx_complete()
461 tse_tx_avail(priv) > TSE_TX_THRESH(priv))) { in tse_tx_complete()
462 if (netif_queue_stopped(priv->dev) && in tse_tx_complete()
463 tse_tx_avail(priv) > TSE_TX_THRESH(priv)) { in tse_tx_complete()
464 if (netif_msg_tx_done(priv)) in tse_tx_complete()
465 netdev_dbg(priv->dev, "%s: restart transmit\n", in tse_tx_complete()
467 netif_wake_queue(priv->dev); in tse_tx_complete()
471 spin_unlock(&priv->tx_lock); in tse_tx_complete()
479 struct altera_tse_private *priv = in tse_poll() local
484 tse_tx_complete(priv); in tse_poll()
486 rxcomplete = tse_rx(priv, budget); in tse_poll()
492 netdev_dbg(priv->dev, in tse_poll()
496 spin_lock_irqsave(&priv->rxdma_irq_lock, flags); in tse_poll()
497 priv->dmaops->enable_rxirq(priv); in tse_poll()
498 priv->dmaops->enable_txirq(priv); in tse_poll()
499 spin_unlock_irqrestore(&priv->rxdma_irq_lock, flags); in tse_poll()
509 struct altera_tse_private *priv; in altera_isr() local
515 priv = netdev_priv(dev); in altera_isr()
517 spin_lock(&priv->rxdma_irq_lock); in altera_isr()
519 priv->dmaops->clear_rxirq(priv); in altera_isr()
520 priv->dmaops->clear_txirq(priv); in altera_isr()
521 spin_unlock(&priv->rxdma_irq_lock); in altera_isr()
523 if (likely(napi_schedule_prep(&priv->napi))) { in altera_isr()
524 spin_lock(&priv->rxdma_irq_lock); in altera_isr()
525 priv->dmaops->disable_rxirq(priv); in altera_isr()
526 priv->dmaops->disable_txirq(priv); in altera_isr()
527 spin_unlock(&priv->rxdma_irq_lock); in altera_isr()
528 __napi_schedule(&priv->napi); in altera_isr()
544 struct altera_tse_private *priv = netdev_priv(dev); in tse_start_xmit() local
546 unsigned int txsize = priv->tx_ring_size; in tse_start_xmit()
553 spin_lock_bh(&priv->tx_lock); in tse_start_xmit()
555 if (unlikely(tse_tx_avail(priv) < nfrags + 1)) { in tse_start_xmit()
559 netdev_err(priv->dev, in tse_start_xmit()
568 entry = priv->tx_prod % txsize; in tse_start_xmit()
569 buffer = &priv->tx_ring[entry]; in tse_start_xmit()
571 dma_addr = dma_map_single(priv->device, skb->data, nopaged_len, in tse_start_xmit()
573 if (dma_mapping_error(priv->device, dma_addr)) { in tse_start_xmit()
574 netdev_err(priv->dev, "%s: DMA mapping error\n", __func__); in tse_start_xmit()
583 priv->dmaops->tx_buffer(priv, buffer); in tse_start_xmit()
587 priv->tx_prod++; in tse_start_xmit()
590 if (unlikely(tse_tx_avail(priv) <= TXQUEUESTOP_THRESHHOLD)) { in tse_start_xmit()
591 if (netif_msg_hw(priv)) in tse_start_xmit()
592 netdev_dbg(priv->dev, "%s: stop transmitted packets\n", in tse_start_xmit()
598 spin_unlock_bh(&priv->tx_lock); in tse_start_xmit()
605 struct altera_tse_private *priv = netdev_priv(dev); in altera_tse_phy_get_addr_mdio_create() local
606 struct device_node *np = priv->device->of_node; in altera_tse_phy_get_addr_mdio_create()
609 ret = of_get_phy_mode(np, &priv->phy_iface); in altera_tse_phy_get_addr_mdio_create()
619 if (of_property_read_u32(priv->device->of_node, "phy-addr", in altera_tse_phy_get_addr_mdio_create()
620 &priv->phy_addr)) { in altera_tse_phy_get_addr_mdio_create()
621 priv->phy_addr = POLL_PHY; in altera_tse_phy_get_addr_mdio_create()
624 if (!((priv->phy_addr == POLL_PHY) || in altera_tse_phy_get_addr_mdio_create()
625 ((priv->phy_addr >= 0) && (priv->phy_addr < PHY_MAX_ADDR)))) { in altera_tse_phy_get_addr_mdio_create()
627 priv->phy_addr); in altera_tse_phy_get_addr_mdio_create()
641 static void tse_update_mac_addr(struct altera_tse_private *priv, const u8 *addr) in tse_update_mac_addr() argument
650 csrwr32(msb, priv->mac_dev, tse_csroffs(mac_addr_0)); in tse_update_mac_addr()
651 csrwr32(lsb, priv->mac_dev, tse_csroffs(mac_addr_1)); in tse_update_mac_addr()
660 static int reset_mac(struct altera_tse_private *priv) in reset_mac() argument
665 dat = csrrd32(priv->mac_dev, tse_csroffs(command_config)); in reset_mac()
668 csrwr32(dat, priv->mac_dev, tse_csroffs(command_config)); in reset_mac()
672 if (tse_bit_is_clear(priv->mac_dev, tse_csroffs(command_config), in reset_mac()
679 dat = csrrd32(priv->mac_dev, tse_csroffs(command_config)); in reset_mac()
681 csrwr32(dat, priv->mac_dev, tse_csroffs(command_config)); in reset_mac()
689 static int init_mac(struct altera_tse_private *priv) in init_mac() argument
695 csrwr32(priv->rx_fifo_depth - ALTERA_TSE_RX_SECTION_EMPTY, in init_mac()
696 priv->mac_dev, tse_csroffs(rx_section_empty)); in init_mac()
698 csrwr32(ALTERA_TSE_RX_SECTION_FULL, priv->mac_dev, in init_mac()
701 csrwr32(ALTERA_TSE_RX_ALMOST_EMPTY, priv->mac_dev, in init_mac()
704 csrwr32(ALTERA_TSE_RX_ALMOST_FULL, priv->mac_dev, in init_mac()
708 csrwr32(priv->tx_fifo_depth - ALTERA_TSE_TX_SECTION_EMPTY, in init_mac()
709 priv->mac_dev, tse_csroffs(tx_section_empty)); in init_mac()
711 csrwr32(ALTERA_TSE_TX_SECTION_FULL, priv->mac_dev, in init_mac()
714 csrwr32(ALTERA_TSE_TX_ALMOST_EMPTY, priv->mac_dev, in init_mac()
717 csrwr32(ALTERA_TSE_TX_ALMOST_FULL, priv->mac_dev, in init_mac()
721 tse_update_mac_addr(priv, priv->dev->dev_addr); in init_mac()
724 frm_length = ETH_HLEN + priv->dev->mtu + ETH_FCS_LEN; in init_mac()
725 csrwr32(frm_length, priv->mac_dev, tse_csroffs(frm_length)); in init_mac()
727 csrwr32(ALTERA_TSE_TX_IPG_LENGTH, priv->mac_dev, in init_mac()
733 tse_set_bit(priv->mac_dev, tse_csroffs(rx_cmd_stat), in init_mac()
736 tse_clear_bit(priv->mac_dev, tse_csroffs(tx_cmd_stat), in init_mac()
741 cmd = csrrd32(priv->mac_dev, tse_csroffs(command_config)); in init_mac()
756 csrwr32(cmd, priv->mac_dev, tse_csroffs(command_config)); in init_mac()
758 csrwr32(ALTERA_TSE_PAUSE_QUANTA, priv->mac_dev, in init_mac()
761 if (netif_msg_hw(priv)) in init_mac()
762 dev_dbg(priv->device, in init_mac()
770 static void tse_set_mac(struct altera_tse_private *priv, bool enable) in tse_set_mac() argument
772 u32 value = csrrd32(priv->mac_dev, tse_csroffs(command_config)); in tse_set_mac()
779 csrwr32(value, priv->mac_dev, tse_csroffs(command_config)); in tse_set_mac()
799 struct altera_tse_private *priv = netdev_priv(dev); in altera_tse_set_mcfilter() local
805 csrwr32(0, priv->mac_dev, tse_csroffs(hash_table) + i * 4); in altera_tse_set_mcfilter()
821 csrwr32(1, priv->mac_dev, tse_csroffs(hash_table) + hash * 4); in altera_tse_set_mcfilter()
828 struct altera_tse_private *priv = netdev_priv(dev); in altera_tse_set_mcfilterall() local
833 csrwr32(1, priv->mac_dev, tse_csroffs(hash_table) + i * 4); in altera_tse_set_mcfilterall()
840 struct altera_tse_private *priv = netdev_priv(dev); in tse_set_rx_mode_hashfilter() local
842 spin_lock(&priv->mac_cfg_lock); in tse_set_rx_mode_hashfilter()
845 tse_set_bit(priv->mac_dev, tse_csroffs(command_config), in tse_set_rx_mode_hashfilter()
853 spin_unlock(&priv->mac_cfg_lock); in tse_set_rx_mode_hashfilter()
860 struct altera_tse_private *priv = netdev_priv(dev); in tse_set_rx_mode() local
862 spin_lock(&priv->mac_cfg_lock); in tse_set_rx_mode()
866 tse_set_bit(priv->mac_dev, tse_csroffs(command_config), in tse_set_rx_mode()
869 tse_clear_bit(priv->mac_dev, tse_csroffs(command_config), in tse_set_rx_mode()
872 spin_unlock(&priv->mac_cfg_lock); in tse_set_rx_mode()
879 struct altera_tse_private *priv = netdev_priv(dev); in tse_open() local
885 ret = priv->dmaops->init_dma(priv); in tse_open()
891 if (netif_msg_ifup(priv)) in tse_open()
895 if ((priv->revision < 0xd00) || (priv->revision > 0xe00)) in tse_open()
896 netdev_warn(dev, "TSE revision %x\n", priv->revision); in tse_open()
898 spin_lock(&priv->mac_cfg_lock); in tse_open()
900 ret = reset_mac(priv); in tse_open()
908 ret = init_mac(priv); in tse_open()
909 spin_unlock(&priv->mac_cfg_lock); in tse_open()
915 priv->dmaops->reset_dma(priv); in tse_open()
918 priv->rx_ring_size = dma_rx_num; in tse_open()
919 priv->tx_ring_size = dma_tx_num; in tse_open()
920 ret = alloc_init_skbufs(priv); in tse_open()
928 ret = request_irq(priv->rx_irq, altera_isr, IRQF_SHARED, in tse_open()
932 priv->rx_irq); in tse_open()
937 ret = request_irq(priv->tx_irq, altera_isr, IRQF_SHARED, in tse_open()
941 priv->tx_irq); in tse_open()
946 spin_lock_irqsave(&priv->rxdma_irq_lock, flags); in tse_open()
947 priv->dmaops->enable_rxirq(priv); in tse_open()
948 priv->dmaops->enable_txirq(priv); in tse_open()
951 for (i = 0; i < priv->rx_ring_size; i++) in tse_open()
952 priv->dmaops->add_rx_desc(priv, &priv->rx_ring[i]); in tse_open()
954 spin_unlock_irqrestore(&priv->rxdma_irq_lock, flags); in tse_open()
956 ret = phylink_of_phy_connect(priv->phylink, priv->device->of_node, 0); in tse_open()
961 phylink_start(priv->phylink); in tse_open()
963 napi_enable(&priv->napi); in tse_open()
966 priv->dmaops->start_rxdma(priv); in tse_open()
969 spin_lock(&priv->mac_cfg_lock); in tse_open()
970 tse_set_mac(priv, true); in tse_open()
971 spin_unlock(&priv->mac_cfg_lock); in tse_open()
976 free_irq(priv->rx_irq, dev); in tse_open()
988 struct altera_tse_private *priv = netdev_priv(dev); in tse_shutdown() local
992 phylink_stop(priv->phylink); in tse_shutdown()
993 phylink_disconnect_phy(priv->phylink); in tse_shutdown()
995 napi_disable(&priv->napi); in tse_shutdown()
998 spin_lock_irqsave(&priv->rxdma_irq_lock, flags); in tse_shutdown()
999 priv->dmaops->disable_rxirq(priv); in tse_shutdown()
1000 priv->dmaops->disable_txirq(priv); in tse_shutdown()
1001 spin_unlock_irqrestore(&priv->rxdma_irq_lock, flags); in tse_shutdown()
1004 free_irq(priv->rx_irq, dev); in tse_shutdown()
1005 free_irq(priv->tx_irq, dev); in tse_shutdown()
1008 spin_lock(&priv->mac_cfg_lock); in tse_shutdown()
1009 spin_lock(&priv->tx_lock); in tse_shutdown()
1011 ret = reset_mac(priv); in tse_shutdown()
1018 priv->dmaops->reset_dma(priv); in tse_shutdown()
1021 spin_unlock(&priv->tx_lock); in tse_shutdown()
1022 spin_unlock(&priv->mac_cfg_lock); in tse_shutdown()
1024 priv->dmaops->uninit_dma(priv); in tse_shutdown()
1047 struct altera_tse_private *priv = netdev_priv(ndev); in alt_tse_mac_config() local
1049 spin_lock(&priv->mac_cfg_lock); in alt_tse_mac_config()
1050 reset_mac(priv); in alt_tse_mac_config()
1051 tse_set_mac(priv, true); in alt_tse_mac_config()
1052 spin_unlock(&priv->mac_cfg_lock); in alt_tse_mac_config()
1066 struct altera_tse_private *priv = netdev_priv(ndev); in alt_tse_mac_link_up() local
1069 ctrl = csrrd32(priv->mac_dev, tse_csroffs(command_config)); in alt_tse_mac_link_up()
1080 spin_lock(&priv->mac_cfg_lock); in alt_tse_mac_link_up()
1081 csrwr32(ctrl, priv->mac_dev, tse_csroffs(command_config)); in alt_tse_mac_link_up()
1082 spin_unlock(&priv->mac_cfg_lock); in alt_tse_mac_link_up()
1089 struct altera_tse_private *priv = netdev_priv(ndev); in alt_tse_select_pcs() local
1093 return priv->pcs; in alt_tse_select_pcs()
1141 struct altera_tse_private *priv; in altera_tse_probe() local
1158 priv = netdev_priv(ndev); in altera_tse_probe()
1159 priv->device = &pdev->dev; in altera_tse_probe()
1160 priv->dev = ndev; in altera_tse_probe()
1161 priv->msg_enable = netif_msg_init(debug, default_msg_level); in altera_tse_probe()
1166 priv->dmaops = (struct altera_dmaops *)of_id->data; in altera_tse_probe()
1169 if (priv->dmaops && in altera_tse_probe()
1170 priv->dmaops->altera_dtype == ALTERA_DTYPE_SGDMA) { in altera_tse_probe()
1177 priv->tx_dma_desc = descmap; in altera_tse_probe()
1180 priv->txdescmem = resource_size(dma_res)/2; in altera_tse_probe()
1182 priv->txdescmem_busaddr = (dma_addr_t)dma_res->start; in altera_tse_probe()
1184 priv->rx_dma_desc = (void __iomem *)((uintptr_t)(descmap + in altera_tse_probe()
1185 priv->txdescmem)); in altera_tse_probe()
1186 priv->rxdescmem = resource_size(dma_res)/2; in altera_tse_probe()
1187 priv->rxdescmem_busaddr = dma_res->start; in altera_tse_probe()
1188 priv->rxdescmem_busaddr += priv->txdescmem; in altera_tse_probe()
1190 if (upper_32_bits(priv->rxdescmem_busaddr)) { in altera_tse_probe()
1191 dev_dbg(priv->device, in altera_tse_probe()
1196 if (upper_32_bits(priv->txdescmem_busaddr)) { in altera_tse_probe()
1197 dev_dbg(priv->device, in altera_tse_probe()
1202 } else if (priv->dmaops && in altera_tse_probe()
1203 priv->dmaops->altera_dtype == ALTERA_DTYPE_MSGDMA) { in altera_tse_probe()
1205 &priv->rx_dma_resp); in altera_tse_probe()
1210 &priv->tx_dma_desc); in altera_tse_probe()
1214 priv->txdescmem = resource_size(dma_res); in altera_tse_probe()
1215 priv->txdescmem_busaddr = dma_res->start; in altera_tse_probe()
1218 &priv->rx_dma_desc); in altera_tse_probe()
1222 priv->rxdescmem = resource_size(dma_res); in altera_tse_probe()
1223 priv->rxdescmem_busaddr = dma_res->start; in altera_tse_probe()
1230 if (!dma_set_mask(priv->device, DMA_BIT_MASK(priv->dmaops->dmamask))) { in altera_tse_probe()
1231 dma_set_coherent_mask(priv->device, in altera_tse_probe()
1232 DMA_BIT_MASK(priv->dmaops->dmamask)); in altera_tse_probe()
1233 } else if (!dma_set_mask(priv->device, DMA_BIT_MASK(32))) { in altera_tse_probe()
1234 dma_set_coherent_mask(priv->device, DMA_BIT_MASK(32)); in altera_tse_probe()
1242 (void __iomem **)&priv->mac_dev); in altera_tse_probe()
1248 &priv->rx_dma_csr); in altera_tse_probe()
1255 &priv->tx_dma_csr); in altera_tse_probe()
1265 &priv->pcs_base); in altera_tse_probe()
1267 priv->pcs_base = priv->mac_dev + tse_csroffs(mdio_phy0); in altera_tse_probe()
1272 priv->rx_irq = platform_get_irq_byname(pdev, "rx_irq"); in altera_tse_probe()
1273 if (priv->rx_irq == -ENXIO) { in altera_tse_probe()
1280 priv->tx_irq = platform_get_irq_byname(pdev, "tx_irq"); in altera_tse_probe()
1281 if (priv->tx_irq == -ENXIO) { in altera_tse_probe()
1289 &priv->rx_fifo_depth)) { in altera_tse_probe()
1296 &priv->tx_fifo_depth)) { in altera_tse_probe()
1303 priv->hash_filter = in altera_tse_probe()
1310 priv->hash_filter = 0; in altera_tse_probe()
1313 priv->added_unicast = in altera_tse_probe()
1317 priv->dev->min_mtu = ETH_ZLEN + ETH_FCS_LEN; in altera_tse_probe()
1319 priv->dev->max_mtu = ETH_DATA_LEN; in altera_tse_probe()
1326 &priv->dev->max_mtu); in altera_tse_probe()
1331 priv->rx_dma_buf_sz = ALTERA_RXDMABUFFER_SIZE; in altera_tse_probe()
1352 if (priv->hash_filter) in altera_tse_probe()
1369 netif_napi_add(ndev, &priv->napi, tse_poll); in altera_tse_probe()
1371 spin_lock_init(&priv->mac_cfg_lock); in altera_tse_probe()
1372 spin_lock_init(&priv->tx_lock); in altera_tse_probe()
1373 spin_lock_init(&priv->rxdma_irq_lock); in altera_tse_probe()
1384 priv->revision = ioread32(&priv->mac_dev->megacore_revision); in altera_tse_probe()
1386 if (netif_msg_probe(priv)) in altera_tse_probe()
1388 (priv->revision >> 8) & 0xff, in altera_tse_probe()
1389 priv->revision & 0xff, in altera_tse_probe()
1390 (unsigned long) control_port->start, priv->rx_irq, in altera_tse_probe()
1391 priv->tx_irq); in altera_tse_probe()
1393 priv->pcs = alt_tse_pcs_create(ndev, priv->pcs_base, pcs_reg_width); in altera_tse_probe()
1395 priv->phylink_config.dev = &ndev->dev; in altera_tse_probe()
1396 priv->phylink_config.type = PHYLINK_NETDEV; in altera_tse_probe()
1397 priv->phylink_config.mac_capabilities = MAC_SYM_PAUSE | MAC_10 | in altera_tse_probe()
1400 phy_interface_set_rgmii(priv->phylink_config.supported_interfaces); in altera_tse_probe()
1402 priv->phylink_config.supported_interfaces); in altera_tse_probe()
1404 priv->phylink_config.supported_interfaces); in altera_tse_probe()
1406 priv->phylink_config.supported_interfaces); in altera_tse_probe()
1408 priv->phylink_config.supported_interfaces); in altera_tse_probe()
1410 priv->phylink = phylink_create(&priv->phylink_config, in altera_tse_probe()
1411 of_fwnode_handle(priv->device->of_node), in altera_tse_probe()
1412 priv->phy_iface, &alt_tse_phylink_ops); in altera_tse_probe()
1413 if (IS_ERR(priv->phylink)) { in altera_tse_probe()
1415 ret = PTR_ERR(priv->phylink); in altera_tse_probe()
1424 netif_napi_del(&priv->napi); in altera_tse_probe()
1436 struct altera_tse_private *priv = netdev_priv(ndev); in altera_tse_remove() local
1441 phylink_destroy(priv->phylink); in altera_tse_remove()