Lines Matching refs:adpt

81 int emac_reinit_locked(struct emac_adapter *adpt)
85 mutex_lock(&adpt->reset_lock);
87 emac_mac_down(adpt);
88 emac_sgmii_reset(adpt);
89 ret = emac_mac_up(adpt);
91 mutex_unlock(&adpt->reset_lock);
101 struct emac_adapter *adpt = netdev_priv(rx_q->netdev);
105 emac_mac_rx_process(adpt, rx_q, &work_done, budget);
111 writel(irq->mask, adpt->base + EMAC_INT_MASK);
121 struct emac_adapter *adpt = netdev_priv(netdev);
123 return emac_mac_tx_buf_send(adpt, &adpt->tx_q, skb);
129 struct emac_adapter *adpt =
131 struct emac_rx_queue *rx_q = &adpt->rx_q;
135 writel(0, adpt->base + EMAC_INT_MASK);
137 isr = readl_relaxed(adpt->base + EMAC_INT_STATUS);
145 adpt->netdev->name, status & ISR_ERROR);
147 schedule_work(&adpt->work_thread);
161 emac_mac_tx_process(adpt, &adpt->tx_q);
165 adpt->netdev->name);
169 writel(irq->mask, adpt->base + EMAC_INT_MASK);
179 struct emac_adapter *adpt = netdev_priv(netdev);
195 return emac_reinit_locked(adpt);
201 struct emac_adapter *adpt = netdev_priv(netdev);
204 emac_mac_mode_config(adpt);
207 emac_mac_multicast_addr_clear(adpt);
209 emac_mac_multicast_addr_set(adpt, ha->addr);
215 struct emac_adapter *adpt = netdev_priv(netdev);
217 netif_dbg(adpt, hw, adpt->netdev,
223 return emac_reinit_locked(adpt);
231 struct emac_adapter *adpt = netdev_priv(netdev);
232 struct emac_irq *irq = &adpt->irq;
237 netdev_err(adpt->netdev, "could not request emac-core0 irq\n");
242 ret = emac_mac_rx_tx_rings_alloc_all(adpt);
244 netdev_err(adpt->netdev, "error allocating rx/tx rings\n");
249 ret = emac_sgmii_open(adpt);
251 emac_mac_rx_tx_rings_free_all(adpt);
256 ret = emac_mac_up(adpt);
258 emac_mac_rx_tx_rings_free_all(adpt);
260 emac_sgmii_close(adpt);
270 struct emac_adapter *adpt = netdev_priv(netdev);
272 mutex_lock(&adpt->reset_lock);
274 emac_sgmii_close(adpt);
275 emac_mac_down(adpt);
276 emac_mac_rx_tx_rings_free_all(adpt);
278 free_irq(adpt->irq.irq, &adpt->irq);
280 mutex_unlock(&adpt->reset_lock);
288 struct emac_adapter *adpt = netdev_priv(netdev);
290 schedule_work(&adpt->work_thread);
295 * @adpt: pointer to adapter struct
297 * Reads the stats registers and write the values to adpt->stats.
299 * adpt->stats.lock must be held while calling this function,
300 * and while reading from adpt->stats.
302 void emac_update_hw_stats(struct emac_adapter *adpt)
304 struct emac_stats *stats = &adpt->stats;
305 u64 *stats_itr = &adpt->stats.rx_ok;
306 void __iomem *base = adpt->base;
338 struct emac_adapter *adpt = netdev_priv(netdev);
339 struct emac_stats *stats = &adpt->stats;
343 emac_update_hw_stats(adpt);
390 struct emac_adapter *adpt =
393 emac_reinit_locked(adpt);
397 static void emac_init_adapter(struct emac_adapter *adpt)
401 adpt->rrd_size = EMAC_RRD_SIZE;
402 adpt->tpd_size = EMAC_TPD_SIZE;
403 adpt->rfd_size = EMAC_RFD_SIZE;
406 adpt->tx_desc_cnt = EMAC_DEF_TX_DESCS;
407 adpt->rx_desc_cnt = EMAC_DEF_RX_DESCS;
410 adpt->dma_order = emac_dma_ord_out;
411 adpt->dmar_block = emac_dma_req_4096;
412 adpt->dmaw_block = emac_dma_req_128;
413 adpt->dmar_dly_cnt = DMAR_DLY_CNT_DEF;
414 adpt->dmaw_dly_cnt = DMAW_DLY_CNT_DEF;
415 adpt->tpd_burst = TXQ0_NUM_TPD_PREF_DEF;
416 adpt->rfd_burst = RXQ0_NUM_RFD_PREF_DEF;
421 adpt->irq_mod = reg;
424 adpt->preamble = EMAC_PREAMBLE_DEF;
427 adpt->automatic = true;
430 adpt->single_pause_mode = false;
435 struct emac_adapter *adpt)
450 adpt->clk[i] = clk;
458 struct emac_adapter *adpt)
468 ret = emac_clks_get(pdev, adpt);
472 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_AXI]);
476 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_CFG_AHB]);
480 ret = clk_set_rate(adpt->clk[EMAC_CLK_HIGH_SPEED], 19200000);
484 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_HIGH_SPEED]);
491 clk_disable_unprepare(adpt->clk[EMAC_CLK_CFG_AHB]);
493 clk_disable_unprepare(adpt->clk[EMAC_CLK_AXI]);
500 struct emac_adapter *adpt)
507 ret = clk_set_rate(adpt->clk[EMAC_CLK_TX], 125000000);
511 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_TX]);
515 ret = clk_set_rate(adpt->clk[EMAC_CLK_HIGH_SPEED], 125000000);
519 ret = clk_set_rate(adpt->clk[EMAC_CLK_MDIO], 25000000);
523 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_MDIO]);
527 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_RX]);
531 return clk_prepare_enable(adpt->clk[EMAC_CLK_SYS]);
534 static void emac_clks_teardown(struct emac_adapter *adpt)
540 clk_disable_unprepare(adpt->clk[i]);
545 struct emac_adapter *adpt)
547 struct net_device *netdev = adpt->netdev;
561 adpt->irq.irq = ret;
564 adpt->base = devm_platform_ioremap_resource(pdev, 0);
565 if (IS_ERR(adpt->base))
566 return PTR_ERR(adpt->base);
569 adpt->csr = devm_platform_ioremap_resource(pdev, 1);
570 if (IS_ERR(adpt->csr))
571 return PTR_ERR(adpt->csr);
573 netdev->base_addr = (unsigned long)adpt->base;
599 struct emac_adapter *adpt;
623 adpt = netdev_priv(netdev);
624 adpt->netdev = netdev;
625 adpt->msg_enable = EMAC_MSG_DEFAULT;
627 phy = &adpt->phy;
630 mutex_init(&adpt->reset_lock);
631 spin_lock_init(&adpt->stats.lock);
633 adpt->irq.mask = RX_PKT_INT0 | IMR_NORMAL_MASK;
635 ret = emac_probe_resources(pdev, adpt);
640 ret = emac_clks_phase1_init(pdev, adpt);
647 netdev->irq = adpt->irq.irq;
651 emac_init_adapter(adpt);
654 ret = emac_phy_config(pdev, adpt);
659 ret = emac_sgmii_config(pdev, adpt);
664 ret = emac_clks_phase2_init(pdev, adpt);
685 INIT_WORK(&adpt->work_thread, emac_work_thread);
688 emac_mac_rx_tx_ring_init_all(pdev, adpt);
690 netif_napi_add(netdev, &adpt->rx_q.napi, emac_napi_rtx,
699 reg = readl_relaxed(adpt->base + EMAC_DMA_MAS_CTRL);
702 reg = readl_relaxed(adpt->base + EMAC_CORE_HW_VERSION);
704 netif_info(adpt, probe, netdev,
714 netif_napi_del(&adpt->rx_q.napi);
716 put_device(&adpt->phydev->mdio.dev);
717 mdiobus_unregister(adpt->mii_bus);
719 emac_clks_teardown(adpt);
729 struct emac_adapter *adpt = netdev_priv(netdev);
735 netif_napi_del(&adpt->rx_q.napi);
737 free_irq(adpt->irq.irq, &adpt->irq);
738 cancel_work_sync(&adpt->work_thread);
740 emac_clks_teardown(adpt);
742 put_device(&adpt->phydev->mdio.dev);
743 mdiobus_unregister(adpt->mii_bus);
745 if (adpt->phy.digital)
746 iounmap(adpt->phy.digital);
747 iounmap(adpt->phy.base);
757 struct emac_adapter *adpt = netdev_priv(netdev);
761 emac_sgmii_close(adpt);
764 emac_mac_reset(adpt);