Lines Matching refs:adpt
81 int emac_reinit_locked(struct emac_adapter *adpt) in emac_reinit_locked() argument
85 mutex_lock(&adpt->reset_lock); in emac_reinit_locked()
87 emac_mac_down(adpt); in emac_reinit_locked()
88 emac_sgmii_reset(adpt); in emac_reinit_locked()
89 ret = emac_mac_up(adpt); in emac_reinit_locked()
91 mutex_unlock(&adpt->reset_lock); in emac_reinit_locked()
101 struct emac_adapter *adpt = netdev_priv(rx_q->netdev); in emac_napi_rtx() local
105 emac_mac_rx_process(adpt, rx_q, &work_done, budget); in emac_napi_rtx()
111 writel(irq->mask, adpt->base + EMAC_INT_MASK); in emac_napi_rtx()
121 struct emac_adapter *adpt = netdev_priv(netdev); in emac_start_xmit() local
123 return emac_mac_tx_buf_send(adpt, &adpt->tx_q, skb); in emac_start_xmit()
129 struct emac_adapter *adpt = in emac_isr() local
131 struct emac_rx_queue *rx_q = &adpt->rx_q; in emac_isr()
135 writel(0, adpt->base + EMAC_INT_MASK); in emac_isr()
137 isr = readl_relaxed(adpt->base + EMAC_INT_STATUS); in emac_isr()
145 adpt->netdev->name, status & ISR_ERROR); in emac_isr()
147 schedule_work(&adpt->work_thread); in emac_isr()
161 emac_mac_tx_process(adpt, &adpt->tx_q); in emac_isr()
165 adpt->netdev->name); in emac_isr()
169 writel(irq->mask, adpt->base + EMAC_INT_MASK); in emac_isr()
179 struct emac_adapter *adpt = netdev_priv(netdev); in emac_set_features() local
195 return emac_reinit_locked(adpt); in emac_set_features()
201 struct emac_adapter *adpt = netdev_priv(netdev); in emac_rx_mode_set() local
204 emac_mac_mode_config(adpt); in emac_rx_mode_set()
207 emac_mac_multicast_addr_clear(adpt); in emac_rx_mode_set()
209 emac_mac_multicast_addr_set(adpt, ha->addr); in emac_rx_mode_set()
215 struct emac_adapter *adpt = netdev_priv(netdev); in emac_change_mtu() local
217 netif_dbg(adpt, hw, adpt->netdev, in emac_change_mtu()
223 return emac_reinit_locked(adpt); in emac_change_mtu()
231 struct emac_adapter *adpt = netdev_priv(netdev); in emac_open() local
232 struct emac_irq *irq = &adpt->irq; in emac_open()
237 netdev_err(adpt->netdev, "could not request emac-core0 irq\n"); in emac_open()
242 ret = emac_mac_rx_tx_rings_alloc_all(adpt); in emac_open()
244 netdev_err(adpt->netdev, "error allocating rx/tx rings\n"); in emac_open()
249 ret = emac_sgmii_open(adpt); in emac_open()
251 emac_mac_rx_tx_rings_free_all(adpt); in emac_open()
256 ret = emac_mac_up(adpt); in emac_open()
258 emac_mac_rx_tx_rings_free_all(adpt); in emac_open()
260 emac_sgmii_close(adpt); in emac_open()
270 struct emac_adapter *adpt = netdev_priv(netdev); in emac_close() local
272 mutex_lock(&adpt->reset_lock); in emac_close()
274 emac_sgmii_close(adpt); in emac_close()
275 emac_mac_down(adpt); in emac_close()
276 emac_mac_rx_tx_rings_free_all(adpt); in emac_close()
278 free_irq(adpt->irq.irq, &adpt->irq); in emac_close()
280 mutex_unlock(&adpt->reset_lock); in emac_close()
288 struct emac_adapter *adpt = netdev_priv(netdev); in emac_tx_timeout() local
290 schedule_work(&adpt->work_thread); in emac_tx_timeout()
302 void emac_update_hw_stats(struct emac_adapter *adpt) in emac_update_hw_stats() argument
304 struct emac_stats *stats = &adpt->stats; in emac_update_hw_stats()
305 u64 *stats_itr = &adpt->stats.rx_ok; in emac_update_hw_stats()
306 void __iomem *base = adpt->base; in emac_update_hw_stats()
338 struct emac_adapter *adpt = netdev_priv(netdev); in emac_get_stats64() local
339 struct emac_stats *stats = &adpt->stats; in emac_get_stats64()
343 emac_update_hw_stats(adpt); in emac_get_stats64()
390 struct emac_adapter *adpt = in emac_work_thread() local
393 emac_reinit_locked(adpt); in emac_work_thread()
397 static void emac_init_adapter(struct emac_adapter *adpt) in emac_init_adapter() argument
401 adpt->rrd_size = EMAC_RRD_SIZE; in emac_init_adapter()
402 adpt->tpd_size = EMAC_TPD_SIZE; in emac_init_adapter()
403 adpt->rfd_size = EMAC_RFD_SIZE; in emac_init_adapter()
406 adpt->tx_desc_cnt = EMAC_DEF_TX_DESCS; in emac_init_adapter()
407 adpt->rx_desc_cnt = EMAC_DEF_RX_DESCS; in emac_init_adapter()
410 adpt->dma_order = emac_dma_ord_out; in emac_init_adapter()
411 adpt->dmar_block = emac_dma_req_4096; in emac_init_adapter()
412 adpt->dmaw_block = emac_dma_req_128; in emac_init_adapter()
413 adpt->dmar_dly_cnt = DMAR_DLY_CNT_DEF; in emac_init_adapter()
414 adpt->dmaw_dly_cnt = DMAW_DLY_CNT_DEF; in emac_init_adapter()
415 adpt->tpd_burst = TXQ0_NUM_TPD_PREF_DEF; in emac_init_adapter()
416 adpt->rfd_burst = RXQ0_NUM_RFD_PREF_DEF; in emac_init_adapter()
421 adpt->irq_mod = reg; in emac_init_adapter()
424 adpt->preamble = EMAC_PREAMBLE_DEF; in emac_init_adapter()
427 adpt->automatic = true; in emac_init_adapter()
430 adpt->single_pause_mode = false; in emac_init_adapter()
435 struct emac_adapter *adpt) in emac_clks_get() argument
450 adpt->clk[i] = clk; in emac_clks_get()
458 struct emac_adapter *adpt) in emac_clks_phase1_init() argument
468 ret = emac_clks_get(pdev, adpt); in emac_clks_phase1_init()
472 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_AXI]); in emac_clks_phase1_init()
476 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_CFG_AHB]); in emac_clks_phase1_init()
480 ret = clk_set_rate(adpt->clk[EMAC_CLK_HIGH_SPEED], 19200000); in emac_clks_phase1_init()
484 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_HIGH_SPEED]); in emac_clks_phase1_init()
491 clk_disable_unprepare(adpt->clk[EMAC_CLK_CFG_AHB]); in emac_clks_phase1_init()
493 clk_disable_unprepare(adpt->clk[EMAC_CLK_AXI]); in emac_clks_phase1_init()
500 struct emac_adapter *adpt) in emac_clks_phase2_init() argument
507 ret = clk_set_rate(adpt->clk[EMAC_CLK_TX], 125000000); in emac_clks_phase2_init()
511 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_TX]); in emac_clks_phase2_init()
515 ret = clk_set_rate(adpt->clk[EMAC_CLK_HIGH_SPEED], 125000000); in emac_clks_phase2_init()
519 ret = clk_set_rate(adpt->clk[EMAC_CLK_MDIO], 25000000); in emac_clks_phase2_init()
523 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_MDIO]); in emac_clks_phase2_init()
527 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_RX]); in emac_clks_phase2_init()
531 return clk_prepare_enable(adpt->clk[EMAC_CLK_SYS]); in emac_clks_phase2_init()
534 static void emac_clks_teardown(struct emac_adapter *adpt) in emac_clks_teardown() argument
540 clk_disable_unprepare(adpt->clk[i]); in emac_clks_teardown()
545 struct emac_adapter *adpt) in emac_probe_resources() argument
547 struct net_device *netdev = adpt->netdev; in emac_probe_resources()
558 adpt->irq.irq = ret; in emac_probe_resources()
561 adpt->base = devm_platform_ioremap_resource(pdev, 0); in emac_probe_resources()
562 if (IS_ERR(adpt->base)) in emac_probe_resources()
563 return PTR_ERR(adpt->base); in emac_probe_resources()
566 adpt->csr = devm_platform_ioremap_resource(pdev, 1); in emac_probe_resources()
567 if (IS_ERR(adpt->csr)) in emac_probe_resources()
568 return PTR_ERR(adpt->csr); in emac_probe_resources()
570 netdev->base_addr = (unsigned long)adpt->base; in emac_probe_resources()
596 struct emac_adapter *adpt; in emac_probe() local
620 adpt = netdev_priv(netdev); in emac_probe()
621 adpt->netdev = netdev; in emac_probe()
622 adpt->msg_enable = EMAC_MSG_DEFAULT; in emac_probe()
624 phy = &adpt->phy; in emac_probe()
627 mutex_init(&adpt->reset_lock); in emac_probe()
628 spin_lock_init(&adpt->stats.lock); in emac_probe()
630 adpt->irq.mask = RX_PKT_INT0 | IMR_NORMAL_MASK; in emac_probe()
632 ret = emac_probe_resources(pdev, adpt); in emac_probe()
637 ret = emac_clks_phase1_init(pdev, adpt); in emac_probe()
644 netdev->irq = adpt->irq.irq; in emac_probe()
648 emac_init_adapter(adpt); in emac_probe()
651 ret = emac_phy_config(pdev, adpt); in emac_probe()
656 ret = emac_sgmii_config(pdev, adpt); in emac_probe()
661 ret = emac_clks_phase2_init(pdev, adpt); in emac_probe()
682 INIT_WORK(&adpt->work_thread, emac_work_thread); in emac_probe()
685 emac_mac_rx_tx_ring_init_all(pdev, adpt); in emac_probe()
687 netif_napi_add(netdev, &adpt->rx_q.napi, emac_napi_rtx); in emac_probe()
695 reg = readl_relaxed(adpt->base + EMAC_DMA_MAS_CTRL); in emac_probe()
698 reg = readl_relaxed(adpt->base + EMAC_CORE_HW_VERSION); in emac_probe()
700 netif_info(adpt, probe, netdev, in emac_probe()
710 netif_napi_del(&adpt->rx_q.napi); in emac_probe()
712 put_device(&adpt->phydev->mdio.dev); in emac_probe()
713 mdiobus_unregister(adpt->mii_bus); in emac_probe()
715 emac_clks_teardown(adpt); in emac_probe()
725 struct emac_adapter *adpt = netdev_priv(netdev); in emac_remove() local
728 netif_napi_del(&adpt->rx_q.napi); in emac_remove()
730 emac_clks_teardown(adpt); in emac_remove()
732 put_device(&adpt->phydev->mdio.dev); in emac_remove()
733 mdiobus_unregister(adpt->mii_bus); in emac_remove()
735 if (adpt->phy.digital) in emac_remove()
736 iounmap(adpt->phy.digital); in emac_remove()
737 iounmap(adpt->phy.base); in emac_remove()
747 struct emac_adapter *adpt = netdev_priv(netdev); in emac_shutdown() local
751 emac_sgmii_close(adpt); in emac_shutdown()
754 emac_mac_reset(adpt); in emac_shutdown()