Lines Matching refs:priv

36 static inline int arc_emac_tx_avail(struct arc_emac_priv *priv)  in arc_emac_tx_avail()  argument
38 return (priv->txbd_dirty + TX_BD_NUM - priv->txbd_curr - 1) % TX_BD_NUM; in arc_emac_tx_avail()
50 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_adjust_link() local
51 struct phy_device *phy_dev = priv->phy_dev; in arc_emac_adjust_link()
54 if (priv->link != phy_dev->link) { in arc_emac_adjust_link()
55 priv->link = phy_dev->link; in arc_emac_adjust_link()
59 if (priv->speed != phy_dev->speed) { in arc_emac_adjust_link()
60 priv->speed = phy_dev->speed; in arc_emac_adjust_link()
62 if (priv->set_mac_speed) in arc_emac_adjust_link()
63 priv->set_mac_speed(priv, priv->speed); in arc_emac_adjust_link()
66 if (priv->duplex != phy_dev->duplex) { in arc_emac_adjust_link()
67 reg = arc_reg_get(priv, R_CTRL); in arc_emac_adjust_link()
74 arc_reg_set(priv, R_CTRL, reg); in arc_emac_adjust_link()
75 priv->duplex = phy_dev->duplex; in arc_emac_adjust_link()
96 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_get_settings() local
98 return phy_ethtool_gset(priv->phy_dev, cmd); in arc_emac_get_settings()
115 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_set_settings() local
120 return phy_ethtool_sset(priv->phy_dev, cmd); in arc_emac_set_settings()
134 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_get_drvinfo() local
136 strlcpy(info->driver, priv->drv_name, sizeof(info->driver)); in arc_emac_get_drvinfo()
137 strlcpy(info->version, priv->drv_version, sizeof(info->version)); in arc_emac_get_drvinfo()
155 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_tx_clean() local
160 unsigned int *txbd_dirty = &priv->txbd_dirty; in arc_emac_tx_clean()
161 struct arc_emac_bd *txbd = &priv->txbd[*txbd_dirty]; in arc_emac_tx_clean()
162 struct buffer_state *tx_buff = &priv->tx_buff[*txbd_dirty]; in arc_emac_tx_clean()
203 if (netif_queue_stopped(ndev) && arc_emac_tx_avail(priv)) in arc_emac_tx_clean()
218 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_rx() local
222 unsigned int *last_rx_bd = &priv->last_rx_bd; in arc_emac_rx()
224 struct buffer_state *rx_buff = &priv->rx_buff[*last_rx_bd]; in arc_emac_rx()
225 struct arc_emac_bd *rxbd = &priv->rxbd[*last_rx_bd]; in arc_emac_rx()
311 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_poll() local
319 arc_reg_or(priv, R_ENABLE, RXINT_MASK | TXINT_MASK); in arc_emac_poll()
338 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_intr() local
342 status = arc_reg_get(priv, R_STATUS); in arc_emac_intr()
346 arc_reg_set(priv, R_STATUS, status); in arc_emac_intr()
349 if (likely(napi_schedule_prep(&priv->napi))) { in arc_emac_intr()
350 arc_reg_clr(priv, R_ENABLE, RXINT_MASK | TXINT_MASK); in arc_emac_intr()
351 __napi_schedule(&priv->napi); in arc_emac_intr()
405 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_open() local
406 struct phy_device *phy_dev = priv->phy_dev; in arc_emac_open()
414 priv->last_rx_bd = 0; in arc_emac_open()
419 unsigned int *last_rx_bd = &priv->last_rx_bd; in arc_emac_open()
420 struct arc_emac_bd *rxbd = &priv->rxbd[*last_rx_bd]; in arc_emac_open()
421 struct buffer_state *rx_buff = &priv->rx_buff[*last_rx_bd]; in arc_emac_open()
450 memset(priv->txbd, 0, TX_RING_SZ); in arc_emac_open()
453 arc_reg_set(priv, R_LAFL, 0); in arc_emac_open()
454 arc_reg_set(priv, R_LAFH, 0); in arc_emac_open()
457 arc_reg_set(priv, R_RX_RING, (unsigned int)priv->rxbd_dma); in arc_emac_open()
458 arc_reg_set(priv, R_TX_RING, (unsigned int)priv->txbd_dma); in arc_emac_open()
461 arc_reg_set(priv, R_ENABLE, RXINT_MASK | TXINT_MASK | ERR_MASK); in arc_emac_open()
464 arc_reg_set(priv, R_CTRL, in arc_emac_open()
469 napi_enable(&priv->napi); in arc_emac_open()
472 arc_reg_or(priv, R_CTRL, EN_MASK); in arc_emac_open()
474 phy_start_aneg(priv->phy_dev); in arc_emac_open()
490 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_set_rx_mode() local
493 arc_reg_or(priv, R_CTRL, PROM_MASK); in arc_emac_set_rx_mode()
495 arc_reg_clr(priv, R_CTRL, PROM_MASK); in arc_emac_set_rx_mode()
498 arc_reg_set(priv, R_LAFL, ~0); in arc_emac_set_rx_mode()
499 arc_reg_set(priv, R_LAFH, ~0); in arc_emac_set_rx_mode()
510 arc_reg_set(priv, R_LAFL, filter[0]); in arc_emac_set_rx_mode()
511 arc_reg_set(priv, R_LAFH, filter[1]); in arc_emac_set_rx_mode()
526 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_stop() local
528 napi_disable(&priv->napi); in arc_emac_stop()
532 arc_reg_clr(priv, R_ENABLE, RXINT_MASK | TXINT_MASK | ERR_MASK); in arc_emac_stop()
535 arc_reg_clr(priv, R_CTRL, EN_MASK); in arc_emac_stop()
549 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_stats() local
554 rxerr = arc_reg_get(priv, R_RXERR); in arc_emac_stats()
555 miss = arc_reg_get(priv, R_MISS); in arc_emac_stats()
584 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_tx() local
585 unsigned int len, *txbd_curr = &priv->txbd_curr; in arc_emac_tx()
587 __le32 *info = &priv->txbd[*txbd_curr].info; in arc_emac_tx()
595 if (unlikely(!arc_emac_tx_avail(priv))) { in arc_emac_tx()
610 dma_unmap_addr_set(&priv->tx_buff[*txbd_curr], addr, addr); in arc_emac_tx()
611 dma_unmap_len_set(&priv->tx_buff[*txbd_curr], len, len); in arc_emac_tx()
613 priv->tx_buff[*txbd_curr].skb = skb; in arc_emac_tx()
614 priv->txbd[*txbd_curr].data = cpu_to_le32(addr); in arc_emac_tx()
632 if (!arc_emac_tx_avail(priv)) { in arc_emac_tx()
636 if (arc_emac_tx_avail(priv)) in arc_emac_tx()
640 arc_reg_set(priv, R_STATUS, TXPL_MASK); in arc_emac_tx()
647 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_set_address_internal() local
653 arc_reg_set(priv, R_ADDRL, addr_low); in arc_emac_set_address_internal()
654 arc_reg_set(priv, R_ADDRH, addr_hi); in arc_emac_set_address_internal()
702 struct arc_emac_priv *priv; in arc_emac_probe() local
736 priv = netdev_priv(ndev); in arc_emac_probe()
737 priv->dev = dev; in arc_emac_probe()
739 priv->regs = devm_ioremap_resource(dev, &res_regs); in arc_emac_probe()
740 if (IS_ERR(priv->regs)) { in arc_emac_probe()
741 return PTR_ERR(priv->regs); in arc_emac_probe()
743 dev_dbg(dev, "Registers base address is 0x%p\n", priv->regs); in arc_emac_probe()
745 if (priv->clk) { in arc_emac_probe()
746 err = clk_prepare_enable(priv->clk); in arc_emac_probe()
752 clock_frequency = clk_get_rate(priv->clk); in arc_emac_probe()
762 id = arc_reg_get(priv, R_ID); in arc_emac_probe()
773 arc_reg_set(priv, R_POLLRATE, clock_frequency / 1000000); in arc_emac_probe()
798 priv->rxbd = dmam_alloc_coherent(dev, RX_RING_SZ + TX_RING_SZ, in arc_emac_probe()
799 &priv->rxbd_dma, GFP_KERNEL); in arc_emac_probe()
801 if (!priv->rxbd) { in arc_emac_probe()
807 priv->txbd = priv->rxbd + RX_BD_NUM; in arc_emac_probe()
809 priv->txbd_dma = priv->rxbd_dma + RX_RING_SZ; in arc_emac_probe()
811 (unsigned int)priv->rxbd_dma, (unsigned int)priv->txbd_dma); in arc_emac_probe()
813 err = arc_mdio_probe(priv); in arc_emac_probe()
819 priv->phy_dev = of_phy_connect(ndev, phy_node, arc_emac_adjust_link, 0, in arc_emac_probe()
821 if (!priv->phy_dev) { in arc_emac_probe()
828 priv->phy_dev->drv->name, priv->phy_dev->phy_id); in arc_emac_probe()
830 netif_napi_add(ndev, &priv->napi, arc_emac_poll, ARC_EMAC_NAPI_WEIGHT); in arc_emac_probe()
841 netif_napi_del(&priv->napi); in arc_emac_probe()
842 phy_disconnect(priv->phy_dev); in arc_emac_probe()
843 priv->phy_dev = NULL; in arc_emac_probe()
845 arc_mdio_remove(priv); in arc_emac_probe()
847 if (priv->clk) in arc_emac_probe()
848 clk_disable_unprepare(priv->clk); in arc_emac_probe()
855 struct arc_emac_priv *priv = netdev_priv(ndev); in arc_emac_remove() local
857 phy_disconnect(priv->phy_dev); in arc_emac_remove()
858 priv->phy_dev = NULL; in arc_emac_remove()
859 arc_mdio_remove(priv); in arc_emac_remove()
861 netif_napi_del(&priv->napi); in arc_emac_remove()
863 if (!IS_ERR(priv->clk)) { in arc_emac_remove()
864 clk_disable_unprepare(priv->clk); in arc_emac_remove()