Lines Matching refs:adpt

89 int emac_reinit_locked(struct emac_adapter *adpt)  in emac_reinit_locked()  argument
93 mutex_lock(&adpt->reset_lock); in emac_reinit_locked()
95 emac_mac_down(adpt); in emac_reinit_locked()
96 emac_sgmii_reset(adpt); in emac_reinit_locked()
97 ret = emac_mac_up(adpt); in emac_reinit_locked()
99 mutex_unlock(&adpt->reset_lock); in emac_reinit_locked()
109 struct emac_adapter *adpt = netdev_priv(rx_q->netdev); in emac_napi_rtx() local
113 emac_mac_rx_process(adpt, rx_q, &work_done, budget); in emac_napi_rtx()
119 writel(irq->mask, adpt->base + EMAC_INT_MASK); in emac_napi_rtx()
128 struct emac_adapter *adpt = netdev_priv(netdev); in emac_start_xmit() local
130 return emac_mac_tx_buf_send(adpt, &adpt->tx_q, skb); in emac_start_xmit()
136 struct emac_adapter *adpt = in emac_isr() local
138 struct emac_rx_queue *rx_q = &adpt->rx_q; in emac_isr()
142 writel(0, adpt->base + EMAC_INT_MASK); in emac_isr()
144 isr = readl_relaxed(adpt->base + EMAC_INT_STATUS); in emac_isr()
152 adpt->netdev->name, status & ISR_ERROR); in emac_isr()
154 schedule_work(&adpt->work_thread); in emac_isr()
168 emac_mac_tx_process(adpt, &adpt->tx_q); in emac_isr()
172 adpt->netdev->name); in emac_isr()
176 writel(irq->mask, adpt->base + EMAC_INT_MASK); in emac_isr()
186 struct emac_adapter *adpt = netdev_priv(netdev); in emac_set_features() local
202 return emac_reinit_locked(adpt); in emac_set_features()
208 struct emac_adapter *adpt = netdev_priv(netdev); in emac_rx_mode_set() local
211 emac_mac_mode_config(adpt); in emac_rx_mode_set()
214 emac_mac_multicast_addr_clear(adpt); in emac_rx_mode_set()
216 emac_mac_multicast_addr_set(adpt, ha->addr); in emac_rx_mode_set()
222 struct emac_adapter *adpt = netdev_priv(netdev); in emac_change_mtu() local
224 netif_info(adpt, hw, adpt->netdev, in emac_change_mtu()
230 return emac_reinit_locked(adpt); in emac_change_mtu()
238 struct emac_adapter *adpt = netdev_priv(netdev); in emac_open() local
239 struct emac_irq *irq = &adpt->irq; in emac_open()
244 netdev_err(adpt->netdev, "could not request emac-core0 irq\n"); in emac_open()
249 ret = emac_mac_rx_tx_rings_alloc_all(adpt); in emac_open()
251 netdev_err(adpt->netdev, "error allocating rx/tx rings\n"); in emac_open()
256 ret = emac_sgmii_open(adpt); in emac_open()
258 emac_mac_rx_tx_rings_free_all(adpt); in emac_open()
263 ret = emac_mac_up(adpt); in emac_open()
265 emac_mac_rx_tx_rings_free_all(adpt); in emac_open()
267 emac_sgmii_close(adpt); in emac_open()
277 struct emac_adapter *adpt = netdev_priv(netdev); in emac_close() local
279 mutex_lock(&adpt->reset_lock); in emac_close()
281 emac_sgmii_close(adpt); in emac_close()
282 emac_mac_down(adpt); in emac_close()
283 emac_mac_rx_tx_rings_free_all(adpt); in emac_close()
285 free_irq(adpt->irq.irq, &adpt->irq); in emac_close()
287 mutex_unlock(&adpt->reset_lock); in emac_close()
295 struct emac_adapter *adpt = netdev_priv(netdev); in emac_tx_timeout() local
297 schedule_work(&adpt->work_thread); in emac_tx_timeout()
320 void emac_update_hw_stats(struct emac_adapter *adpt) in emac_update_hw_stats() argument
322 struct emac_stats *stats = &adpt->stats; in emac_update_hw_stats()
323 u64 *stats_itr = &adpt->stats.rx_ok; in emac_update_hw_stats()
324 void __iomem *base = adpt->base; in emac_update_hw_stats()
356 struct emac_adapter *adpt = netdev_priv(netdev); in emac_get_stats64() local
357 struct emac_stats *stats = &adpt->stats; in emac_get_stats64()
361 emac_update_hw_stats(adpt); in emac_get_stats64()
408 struct emac_adapter *adpt = in emac_work_thread() local
411 emac_reinit_locked(adpt); in emac_work_thread()
415 static void emac_init_adapter(struct emac_adapter *adpt) in emac_init_adapter() argument
419 adpt->rrd_size = EMAC_RRD_SIZE; in emac_init_adapter()
420 adpt->tpd_size = EMAC_TPD_SIZE; in emac_init_adapter()
421 adpt->rfd_size = EMAC_RFD_SIZE; in emac_init_adapter()
424 adpt->tx_desc_cnt = EMAC_DEF_TX_DESCS; in emac_init_adapter()
425 adpt->rx_desc_cnt = EMAC_DEF_RX_DESCS; in emac_init_adapter()
428 adpt->dma_order = emac_dma_ord_out; in emac_init_adapter()
429 adpt->dmar_block = emac_dma_req_4096; in emac_init_adapter()
430 adpt->dmaw_block = emac_dma_req_128; in emac_init_adapter()
431 adpt->dmar_dly_cnt = DMAR_DLY_CNT_DEF; in emac_init_adapter()
432 adpt->dmaw_dly_cnt = DMAW_DLY_CNT_DEF; in emac_init_adapter()
433 adpt->tpd_burst = TXQ0_NUM_TPD_PREF_DEF; in emac_init_adapter()
434 adpt->rfd_burst = RXQ0_NUM_RFD_PREF_DEF; in emac_init_adapter()
439 adpt->irq_mod = reg; in emac_init_adapter()
442 adpt->preamble = EMAC_PREAMBLE_DEF; in emac_init_adapter()
445 adpt->automatic = true; in emac_init_adapter()
448 adpt->single_pause_mode = false; in emac_init_adapter()
453 struct emac_adapter *adpt) in emac_clks_get() argument
468 adpt->clk[i] = clk; in emac_clks_get()
476 struct emac_adapter *adpt) in emac_clks_phase1_init() argument
486 ret = emac_clks_get(pdev, adpt); in emac_clks_phase1_init()
490 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_AXI]); in emac_clks_phase1_init()
494 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_CFG_AHB]); in emac_clks_phase1_init()
498 ret = clk_set_rate(adpt->clk[EMAC_CLK_HIGH_SPEED], 19200000); in emac_clks_phase1_init()
502 return clk_prepare_enable(adpt->clk[EMAC_CLK_HIGH_SPEED]); in emac_clks_phase1_init()
507 struct emac_adapter *adpt) in emac_clks_phase2_init() argument
514 ret = clk_set_rate(adpt->clk[EMAC_CLK_TX], 125000000); in emac_clks_phase2_init()
518 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_TX]); in emac_clks_phase2_init()
522 ret = clk_set_rate(adpt->clk[EMAC_CLK_HIGH_SPEED], 125000000); in emac_clks_phase2_init()
526 ret = clk_set_rate(adpt->clk[EMAC_CLK_MDIO], 25000000); in emac_clks_phase2_init()
530 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_MDIO]); in emac_clks_phase2_init()
534 ret = clk_prepare_enable(adpt->clk[EMAC_CLK_RX]); in emac_clks_phase2_init()
538 return clk_prepare_enable(adpt->clk[EMAC_CLK_SYS]); in emac_clks_phase2_init()
541 static void emac_clks_teardown(struct emac_adapter *adpt) in emac_clks_teardown() argument
547 clk_disable_unprepare(adpt->clk[i]); in emac_clks_teardown()
552 struct emac_adapter *adpt) in emac_probe_resources() argument
554 struct net_device *netdev = adpt->netdev; in emac_probe_resources()
572 adpt->irq.irq = ret; in emac_probe_resources()
576 adpt->base = devm_ioremap_resource(&pdev->dev, res); in emac_probe_resources()
577 if (IS_ERR(adpt->base)) in emac_probe_resources()
578 return PTR_ERR(adpt->base); in emac_probe_resources()
582 adpt->csr = devm_ioremap_resource(&pdev->dev, res); in emac_probe_resources()
583 if (IS_ERR(adpt->csr)) in emac_probe_resources()
584 return PTR_ERR(adpt->csr); in emac_probe_resources()
586 netdev->base_addr = (unsigned long)adpt->base; in emac_probe_resources()
612 struct emac_adapter *adpt; in emac_probe() local
636 adpt = netdev_priv(netdev); in emac_probe()
637 adpt->netdev = netdev; in emac_probe()
638 adpt->msg_enable = EMAC_MSG_DEFAULT; in emac_probe()
640 phy = &adpt->phy; in emac_probe()
643 mutex_init(&adpt->reset_lock); in emac_probe()
644 spin_lock_init(&adpt->stats.lock); in emac_probe()
646 adpt->irq.mask = RX_PKT_INT0 | IMR_NORMAL_MASK; in emac_probe()
648 ret = emac_probe_resources(pdev, adpt); in emac_probe()
653 ret = emac_clks_phase1_init(pdev, adpt); in emac_probe()
660 netdev->irq = adpt->irq.irq; in emac_probe()
664 emac_init_adapter(adpt); in emac_probe()
667 ret = emac_phy_config(pdev, adpt); in emac_probe()
672 ret = emac_sgmii_config(pdev, adpt); in emac_probe()
677 ret = emac_clks_phase2_init(pdev, adpt); in emac_probe()
698 INIT_WORK(&adpt->work_thread, emac_work_thread); in emac_probe()
701 emac_mac_rx_tx_ring_init_all(pdev, adpt); in emac_probe()
703 netif_napi_add(netdev, &adpt->rx_q.napi, emac_napi_rtx, in emac_probe()
712 reg = readl_relaxed(adpt->base + EMAC_DMA_MAS_CTRL); in emac_probe()
715 reg = readl_relaxed(adpt->base + EMAC_CORE_HW_VERSION); in emac_probe()
717 netif_info(adpt, probe, netdev, in emac_probe()
727 netif_napi_del(&adpt->rx_q.napi); in emac_probe()
729 put_device(&adpt->phydev->mdio.dev); in emac_probe()
730 mdiobus_unregister(adpt->mii_bus); in emac_probe()
732 emac_clks_teardown(adpt); in emac_probe()
742 struct emac_adapter *adpt = netdev_priv(netdev); in emac_remove() local
745 netif_napi_del(&adpt->rx_q.napi); in emac_remove()
747 emac_clks_teardown(adpt); in emac_remove()
749 put_device(&adpt->phydev->mdio.dev); in emac_remove()
750 mdiobus_unregister(adpt->mii_bus); in emac_remove()
753 if (adpt->phy.digital) in emac_remove()
754 iounmap(adpt->phy.digital); in emac_remove()
755 iounmap(adpt->phy.base); in emac_remove()
763 struct emac_adapter *adpt = netdev_priv(netdev); in emac_shutdown() local
767 emac_sgmii_close(adpt); in emac_shutdown()
770 emac_mac_reset(adpt); in emac_shutdown()