Lines Matching refs:priv

45 static inline u8 nb8800_readb(struct nb8800_priv *priv, int reg)  in nb8800_readb()  argument
47 return readb_relaxed(priv->base + reg); in nb8800_readb()
50 static inline u32 nb8800_readl(struct nb8800_priv *priv, int reg) in nb8800_readl() argument
52 return readl_relaxed(priv->base + reg); in nb8800_readl()
55 static inline void nb8800_writeb(struct nb8800_priv *priv, int reg, u8 val) in nb8800_writeb() argument
57 writeb_relaxed(val, priv->base + reg); in nb8800_writeb()
60 static inline void nb8800_writew(struct nb8800_priv *priv, int reg, u16 val) in nb8800_writew() argument
62 writew_relaxed(val, priv->base + reg); in nb8800_writew()
65 static inline void nb8800_writel(struct nb8800_priv *priv, int reg, u32 val) in nb8800_writel() argument
67 writel_relaxed(val, priv->base + reg); in nb8800_writel()
70 static inline void nb8800_maskb(struct nb8800_priv *priv, int reg, in nb8800_maskb() argument
73 u32 old = nb8800_readb(priv, reg); in nb8800_maskb()
77 nb8800_writeb(priv, reg, new); in nb8800_maskb()
80 static inline void nb8800_maskl(struct nb8800_priv *priv, int reg, in nb8800_maskl() argument
83 u32 old = nb8800_readl(priv, reg); in nb8800_maskl()
87 nb8800_writel(priv, reg, new); in nb8800_maskl()
90 static inline void nb8800_modb(struct nb8800_priv *priv, int reg, u8 bits, in nb8800_modb() argument
93 nb8800_maskb(priv, reg, bits, set ? bits : 0); in nb8800_modb()
96 static inline void nb8800_setb(struct nb8800_priv *priv, int reg, u8 bits) in nb8800_setb() argument
98 nb8800_maskb(priv, reg, bits, bits); in nb8800_setb()
101 static inline void nb8800_clearb(struct nb8800_priv *priv, int reg, u8 bits) in nb8800_clearb() argument
103 nb8800_maskb(priv, reg, bits, 0); in nb8800_clearb()
106 static inline void nb8800_modl(struct nb8800_priv *priv, int reg, u32 bits, in nb8800_modl() argument
109 nb8800_maskl(priv, reg, bits, set ? bits : 0); in nb8800_modl()
112 static inline void nb8800_setl(struct nb8800_priv *priv, int reg, u32 bits) in nb8800_setl() argument
114 nb8800_maskl(priv, reg, bits, bits); in nb8800_setl()
117 static inline void nb8800_clearl(struct nb8800_priv *priv, int reg, u32 bits) in nb8800_clearl() argument
119 nb8800_maskl(priv, reg, bits, 0); in nb8800_clearl()
124 struct nb8800_priv *priv = bus->priv; in nb8800_mdio_wait() local
127 return readl_poll_timeout_atomic(priv->base + NB8800_MDIO_CMD, in nb8800_mdio_wait()
133 struct nb8800_priv *priv = bus->priv; in nb8800_mdio_cmd() local
140 nb8800_writel(priv, NB8800_MDIO_CMD, cmd); in nb8800_mdio_cmd()
142 nb8800_writel(priv, NB8800_MDIO_CMD, cmd | MDIO_CMD_GO); in nb8800_mdio_cmd()
149 struct nb8800_priv *priv = bus->priv; in nb8800_mdio_read() local
157 val = nb8800_readl(priv, NB8800_MDIO_STS); in nb8800_mdio_read()
174 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_mac_tx() local
176 while (nb8800_readl(priv, NB8800_TXC_CR) & TCR_EN) in nb8800_mac_tx()
179 nb8800_modb(priv, NB8800_TX_CTL1, TX_EN, enable); in nb8800_mac_tx()
199 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_alloc_rx() local
200 struct nb8800_rx_desc *rxd = &priv->rx_descs[i]; in nb8800_alloc_rx()
201 struct nb8800_rx_buf *rxb = &priv->rx_bufs[i]; in nb8800_alloc_rx()
233 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_receive() local
234 struct nb8800_rx_desc *rxd = &priv->rx_descs[i]; in nb8800_receive()
235 struct page *page = priv->rx_bufs[i].page; in nb8800_receive()
236 int offset = priv->rx_bufs[i].offset; in nb8800_receive()
245 skb = napi_alloc_skb(&priv->napi, size); in nb8800_receive()
273 napi_gro_receive(&priv->napi, skb); in nb8800_receive()
296 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_poll() local
298 unsigned int last = priv->rx_eoc; in nb8800_poll()
311 rxb = &priv->rx_bufs[next]; in nb8800_poll()
312 rxd = &priv->rx_descs[next]; in nb8800_poll()
336 priv->rx_descs[last].desc.config |= DESC_EOC; in nb8800_poll()
338 priv->rx_descs[priv->rx_eoc].desc.config &= ~DESC_EOC; in nb8800_poll()
339 priv->rx_eoc = last; in nb8800_poll()
344 nb8800_writel(priv, NB8800_RX_ITR, priv->rx_itr_irq); in nb8800_poll()
350 if (priv->rx_descs[next].report) in nb8800_poll()
361 struct nb8800_priv *priv = netdev_priv(dev); in __nb8800_tx_dma_start() local
365 txb = &priv->tx_bufs[priv->tx_queue]; in __nb8800_tx_dma_start()
369 txc_cr = nb8800_readl(priv, NB8800_TXC_CR); in __nb8800_tx_dma_start()
373 nb8800_writel(priv, NB8800_TX_DESC_ADDR, txb->dma_desc); in __nb8800_tx_dma_start()
375 nb8800_writel(priv, NB8800_TXC_CR, txc_cr | TCR_EN); in __nb8800_tx_dma_start()
377 priv->tx_queue = (priv->tx_queue + txb->chain_len) % TX_DESC_COUNT; in __nb8800_tx_dma_start()
382 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_tx_dma_start() local
384 spin_lock_irq(&priv->tx_lock); in nb8800_tx_dma_start()
386 spin_unlock_irq(&priv->tx_lock); in nb8800_tx_dma_start()
391 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_tx_dma_start_irq() local
393 spin_lock(&priv->tx_lock); in nb8800_tx_dma_start_irq()
395 spin_unlock(&priv->tx_lock); in nb8800_tx_dma_start_irq()
400 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_xmit() local
409 if (atomic_read(&priv->tx_free) <= NB8800_DESC_LOW) { in nb8800_xmit()
427 if (atomic_dec_return(&priv->tx_free) <= NB8800_DESC_LOW) { in nb8800_xmit()
432 next = priv->tx_next; in nb8800_xmit()
433 txb = &priv->tx_bufs[next]; in nb8800_xmit()
434 txd = &priv->tx_descs[next]; in nb8800_xmit()
451 desc->n_addr = priv->tx_bufs[next].dma_desc; in nb8800_xmit()
461 if (!priv->tx_chain) { in nb8800_xmit()
463 priv->tx_chain = txb; in nb8800_xmit()
465 priv->tx_chain->chain_len++; in nb8800_xmit()
470 priv->tx_next = next; in nb8800_xmit()
474 priv->tx_chain->ready = true; in nb8800_xmit()
475 priv->tx_chain = NULL; in nb8800_xmit()
498 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_tx_done() local
499 unsigned int limit = priv->tx_next; in nb8800_tx_done()
500 unsigned int done = priv->tx_done; in nb8800_tx_done()
505 struct nb8800_tx_desc *txd = &priv->tx_descs[done]; in nb8800_tx_done()
506 struct nb8800_tx_buf *txb = &priv->tx_bufs[done]; in nb8800_tx_done()
539 atomic_add(packets, &priv->tx_free); in nb8800_tx_done()
542 priv->tx_done = done; in nb8800_tx_done()
549 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_irq() local
554 val = nb8800_readl(priv, NB8800_TXC_SR); in nb8800_irq()
556 nb8800_writel(priv, NB8800_TXC_SR, val); in nb8800_irq()
562 napi_schedule_irqoff(&priv->napi); in nb8800_irq()
575 val = nb8800_readl(priv, NB8800_RXC_SR); in nb8800_irq()
577 nb8800_writel(priv, NB8800_RXC_SR, val); in nb8800_irq()
580 nb8800_writel(priv, NB8800_RX_ITR, priv->rx_itr_poll); in nb8800_irq()
581 napi_schedule_irqoff(&priv->napi); in nb8800_irq()
599 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_mac_config() local
600 bool gigabit = priv->speed == SPEED_1000; in nb8800_mac_config()
607 if (!priv->duplex) in nb8800_mac_config()
611 if (priv->phy_mode == PHY_INTERFACE_MODE_RGMII) in nb8800_mac_config()
624 ict = DIV_ROUND_UP(phy_clk, clk_get_rate(priv->clk)); in nb8800_mac_config()
626 nb8800_writeb(priv, NB8800_IC_THRESHOLD, ict); in nb8800_mac_config()
627 nb8800_writeb(priv, NB8800_SLOT_TIME, slot_time); in nb8800_mac_config()
628 nb8800_maskb(priv, NB8800_MAC_MODE, mac_mode_mask, mac_mode); in nb8800_mac_config()
633 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_pause_config() local
634 struct phy_device *phydev = priv->phydev; in nb8800_pause_config()
637 if (priv->pause_aneg) { in nb8800_pause_config()
641 priv->pause_rx = phydev->pause; in nb8800_pause_config()
642 priv->pause_tx = phydev->pause ^ phydev->asym_pause; in nb8800_pause_config()
645 nb8800_modb(priv, NB8800_RX_CTL, RX_PAUSE_EN, priv->pause_rx); in nb8800_pause_config()
647 rxcr = nb8800_readl(priv, NB8800_RXC_CR); in nb8800_pause_config()
648 if (!!(rxcr & RCR_FL) == priv->pause_tx) in nb8800_pause_config()
652 napi_disable(&priv->napi); in nb8800_pause_config()
655 nb8800_modl(priv, NB8800_RXC_CR, RCR_FL, priv->pause_tx); in nb8800_pause_config()
658 napi_enable(&priv->napi); in nb8800_pause_config()
660 nb8800_modl(priv, NB8800_RXC_CR, RCR_FL, priv->pause_tx); in nb8800_pause_config()
666 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_link_reconfigure() local
667 struct phy_device *phydev = priv->phydev; in nb8800_link_reconfigure()
671 if (phydev->speed != priv->speed) { in nb8800_link_reconfigure()
672 priv->speed = phydev->speed; in nb8800_link_reconfigure()
676 if (phydev->duplex != priv->duplex) { in nb8800_link_reconfigure()
677 priv->duplex = phydev->duplex; in nb8800_link_reconfigure()
687 if (phydev->link != priv->link) { in nb8800_link_reconfigure()
688 priv->link = phydev->link; in nb8800_link_reconfigure()
693 phy_print_status(priv->phydev); in nb8800_link_reconfigure()
698 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_update_mac_addr() local
702 nb8800_writeb(priv, NB8800_SRC_ADDR(i), dev->dev_addr[i]); in nb8800_update_mac_addr()
705 nb8800_writeb(priv, NB8800_UC_ADDR(i), dev->dev_addr[i]); in nb8800_update_mac_addr()
723 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_mc_init() local
725 nb8800_writeb(priv, NB8800_MC_INIT, val); in nb8800_mc_init()
726 readb_poll_timeout_atomic(priv->base + NB8800_MC_INIT, val, !val, in nb8800_mc_init()
732 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_set_rx_mode() local
746 nb8800_writeb(priv, NB8800_MC_ADDR(i), ha->addr[i]); in nb8800_set_rx_mode()
757 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_dma_free() local
760 if (priv->rx_bufs) { in nb8800_dma_free()
762 if (priv->rx_bufs[i].page) in nb8800_dma_free()
763 put_page(priv->rx_bufs[i].page); in nb8800_dma_free()
765 kfree(priv->rx_bufs); in nb8800_dma_free()
766 priv->rx_bufs = NULL; in nb8800_dma_free()
769 if (priv->tx_bufs) { in nb8800_dma_free()
771 kfree_skb(priv->tx_bufs[i].skb); in nb8800_dma_free()
773 kfree(priv->tx_bufs); in nb8800_dma_free()
774 priv->tx_bufs = NULL; in nb8800_dma_free()
777 if (priv->rx_descs) { in nb8800_dma_free()
778 dma_free_coherent(dev->dev.parent, RX_DESC_SIZE, priv->rx_descs, in nb8800_dma_free()
779 priv->rx_desc_dma); in nb8800_dma_free()
780 priv->rx_descs = NULL; in nb8800_dma_free()
783 if (priv->tx_descs) { in nb8800_dma_free()
784 dma_free_coherent(dev->dev.parent, TX_DESC_SIZE, priv->tx_descs, in nb8800_dma_free()
785 priv->tx_desc_dma); in nb8800_dma_free()
786 priv->tx_descs = NULL; in nb8800_dma_free()
792 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_dma_reset() local
798 dma_addr_t rx_dma = priv->rx_desc_dma + i * sizeof(*rxd); in nb8800_dma_reset()
800 rxd = &priv->rx_descs[i]; in nb8800_dma_reset()
804 rxd->desc.config = priv->rx_dma_config; in nb8800_dma_reset()
808 rxd->desc.n_addr = priv->rx_desc_dma; in nb8800_dma_reset()
811 priv->rx_eoc = RX_DESC_COUNT - 1; in nb8800_dma_reset()
814 struct nb8800_tx_buf *txb = &priv->tx_bufs[i]; in nb8800_dma_reset()
818 txd = &priv->tx_descs[i]; in nb8800_dma_reset()
824 priv->tx_next = 0; in nb8800_dma_reset()
825 priv->tx_queue = 0; in nb8800_dma_reset()
826 priv->tx_done = 0; in nb8800_dma_reset()
827 atomic_set(&priv->tx_free, TX_DESC_COUNT); in nb8800_dma_reset()
829 nb8800_writel(priv, NB8800_RX_DESC_ADDR, priv->rx_desc_dma); in nb8800_dma_reset()
836 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_dma_init() local
842 priv->rx_descs = dma_alloc_coherent(dev->dev.parent, RX_DESC_SIZE, in nb8800_dma_init()
843 &priv->rx_desc_dma, GFP_KERNEL); in nb8800_dma_init()
844 if (!priv->rx_descs) in nb8800_dma_init()
847 priv->rx_bufs = kcalloc(n_rx, sizeof(*priv->rx_bufs), GFP_KERNEL); in nb8800_dma_init()
848 if (!priv->rx_bufs) in nb8800_dma_init()
857 priv->tx_descs = dma_alloc_coherent(dev->dev.parent, TX_DESC_SIZE, in nb8800_dma_init()
858 &priv->tx_desc_dma, GFP_KERNEL); in nb8800_dma_init()
859 if (!priv->tx_descs) in nb8800_dma_init()
862 priv->tx_bufs = kcalloc(n_tx, sizeof(*priv->tx_bufs), GFP_KERNEL); in nb8800_dma_init()
863 if (!priv->tx_bufs) in nb8800_dma_init()
867 priv->tx_bufs[i].dma_desc = in nb8800_dma_init()
868 priv->tx_desc_dma + i * sizeof(struct nb8800_tx_desc); in nb8800_dma_init()
882 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_dma_stop() local
883 struct nb8800_tx_buf *txb = &priv->tx_bufs[0]; in nb8800_dma_stop()
884 struct nb8800_tx_desc *txd = &priv->tx_descs[0]; in nb8800_dma_stop()
892 err = readl_poll_timeout_atomic(priv->base + NB8800_TXC_CR, txcr, in nb8800_dma_stop()
894 priv->tx_done == priv->tx_next, in nb8800_dma_stop()
908 priv->rx_descs[i].desc.config |= DESC_EOC; in nb8800_dma_stop()
916 nb8800_setb(priv, NB8800_MAC_MODE, LOOPBACK_EN); in nb8800_dma_stop()
919 nb8800_writel(priv, NB8800_TX_DESC_ADDR, txb->dma_desc); in nb8800_dma_stop()
921 nb8800_writel(priv, NB8800_TXC_CR, txcr | TCR_EN); in nb8800_dma_stop()
923 err = readl_poll_timeout_atomic(priv->base + NB8800_RXC_CR, in nb8800_dma_stop()
929 nb8800_clearb(priv, NB8800_MAC_MODE, LOOPBACK_EN); in nb8800_dma_stop()
937 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_pause_adv() local
940 if (!priv->phydev) in nb8800_pause_adv()
943 if (priv->pause_rx) in nb8800_pause_adv()
945 if (priv->pause_tx) in nb8800_pause_adv()
948 priv->phydev->supported |= adv; in nb8800_pause_adv()
949 priv->phydev->advertising |= adv; in nb8800_pause_adv()
954 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_open() local
958 nb8800_writel(priv, NB8800_RXC_SR, 0xf); in nb8800_open()
959 nb8800_writel(priv, NB8800_TXC_SR, 0xf); in nb8800_open()
972 priv->phydev = of_phy_connect(dev, priv->phy_node, in nb8800_open()
974 priv->phy_mode); in nb8800_open()
975 if (!priv->phydev) in nb8800_open()
981 napi_enable(&priv->napi); in nb8800_open()
985 phy_start(priv->phydev); in nb8800_open()
999 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_stop() local
1001 phy_stop(priv->phydev); in nb8800_stop()
1004 napi_disable(&priv->napi); in nb8800_stop()
1010 phy_disconnect(priv->phydev); in nb8800_stop()
1011 priv->phydev = NULL; in nb8800_stop()
1022 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_ioctl() local
1024 return phy_mii_ioctl(priv->phydev, rq, cmd); in nb8800_ioctl()
1040 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_get_settings() local
1042 if (!priv->phydev) in nb8800_get_settings()
1045 return phy_ethtool_gset(priv->phydev, cmd); in nb8800_get_settings()
1050 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_set_settings() local
1052 if (!priv->phydev) in nb8800_set_settings()
1055 return phy_ethtool_sset(priv->phydev, cmd); in nb8800_set_settings()
1060 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_nway_reset() local
1062 if (!priv->phydev) in nb8800_nway_reset()
1065 return genphy_restart_aneg(priv->phydev); in nb8800_nway_reset()
1071 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_get_pauseparam() local
1073 pp->autoneg = priv->pause_aneg; in nb8800_get_pauseparam()
1074 pp->rx_pause = priv->pause_rx; in nb8800_get_pauseparam()
1075 pp->tx_pause = priv->pause_tx; in nb8800_get_pauseparam()
1081 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_set_pauseparam() local
1083 priv->pause_aneg = pp->autoneg; in nb8800_set_pauseparam()
1084 priv->pause_rx = pp->rx_pause; in nb8800_set_pauseparam()
1085 priv->pause_tx = pp->tx_pause; in nb8800_set_pauseparam()
1089 if (!priv->pause_aneg) in nb8800_set_pauseparam()
1091 else if (priv->phydev) in nb8800_set_pauseparam()
1092 phy_start_aneg(priv->phydev); in nb8800_set_pauseparam()
1163 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_read_stat() local
1165 nb8800_writeb(priv, NB8800_STAT_INDEX, index); in nb8800_read_stat()
1167 return nb8800_readl(priv, NB8800_STAT_DATA); in nb8800_read_stat()
1198 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_hw_init() local
1202 nb8800_writeb(priv, NB8800_TX_CTL1, val); in nb8800_hw_init()
1205 nb8800_writeb(priv, NB8800_TX_CTL2, 5); in nb8800_hw_init()
1208 nb8800_writeb(priv, NB8800_RX_CTL, val); in nb8800_hw_init()
1211 nb8800_writeb(priv, NB8800_RANDOM_SEED, 4); in nb8800_hw_init()
1214 nb8800_writeb(priv, NB8800_TX_SDP, 12); in nb8800_hw_init()
1221 nb8800_writeb(priv, NB8800_PE_THRESHOLD, 0); in nb8800_hw_init()
1224 nb8800_writeb(priv, NB8800_PF_THRESHOLD, 255); in nb8800_hw_init()
1227 nb8800_writeb(priv, NB8800_TX_BUFSIZE, 64); in nb8800_hw_init()
1231 val = nb8800_readl(priv, NB8800_TXC_CR); in nb8800_hw_init()
1238 nb8800_writel(priv, NB8800_TXC_CR, val); in nb8800_hw_init()
1241 val = clk_get_rate(priv->clk) / 100; in nb8800_hw_init()
1242 nb8800_writel(priv, NB8800_TX_ITR, val); in nb8800_hw_init()
1246 val = nb8800_readl(priv, NB8800_RXC_CR); in nb8800_hw_init()
1253 nb8800_writel(priv, NB8800_RXC_CR, val); in nb8800_hw_init()
1258 priv->rx_itr_irq = clk_get_rate(priv->clk) / 20000; in nb8800_hw_init()
1263 priv->rx_itr_poll = clk_get_rate(priv->clk) / 100; in nb8800_hw_init()
1265 nb8800_writel(priv, NB8800_RX_ITR, priv->rx_itr_irq); in nb8800_hw_init()
1267 priv->rx_dma_config = RX_BUF_SIZE | DESC_BTS(2) | DESC_DS | DESC_EOF; in nb8800_hw_init()
1273 nb8800_writeb(priv, NB8800_PQ1, val >> 8); in nb8800_hw_init()
1274 nb8800_writeb(priv, NB8800_PQ2, val & 0xff); in nb8800_hw_init()
1277 priv->pause_aneg = true; in nb8800_hw_init()
1278 priv->pause_rx = true; in nb8800_hw_init()
1279 priv->pause_tx = true; in nb8800_hw_init()
1288 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_tangox_init() local
1291 switch (priv->phy_mode) { in nb8800_tangox_init()
1307 phy_modes(priv->phy_mode)); in nb8800_tangox_init()
1311 nb8800_writeb(priv, NB8800_TANGOX_PAD_MODE, pad_mode); in nb8800_tangox_init()
1318 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_tangox_reset() local
1321 nb8800_writeb(priv, NB8800_TANGOX_RESET, 0); in nb8800_tangox_reset()
1323 nb8800_writeb(priv, NB8800_TANGOX_RESET, 1); in nb8800_tangox_reset()
1327 clk_div = DIV_ROUND_UP(clk_get_rate(priv->clk), 2 * MAX_MDC_CLOCK); in nb8800_tangox_reset()
1328 nb8800_writew(priv, NB8800_TANGOX_MDIO_CLKDIV, clk_div); in nb8800_tangox_reset()
1340 struct nb8800_priv *priv = netdev_priv(dev); in nb8800_tango4_init() local
1352 nb8800_clearl(priv, NB8800_RXC_CR, RCR_RFI(7)); in nb8800_tango4_init()
1355 priv->rx_dma_config |= DESC_ID; in nb8800_tango4_init()
1384 struct nb8800_priv *priv; in nb8800_probe() local
1410 dev = alloc_etherdev(sizeof(*priv)); in nb8800_probe()
1417 priv = netdev_priv(dev); in nb8800_probe()
1418 priv->base = base; in nb8800_probe()
1420 priv->phy_mode = of_get_phy_mode(pdev->dev.of_node); in nb8800_probe()
1421 if (priv->phy_mode < 0) in nb8800_probe()
1422 priv->phy_mode = PHY_INTERFACE_MODE_RGMII; in nb8800_probe()
1424 priv->clk = devm_clk_get(&pdev->dev, NULL); in nb8800_probe()
1425 if (IS_ERR(priv->clk)) { in nb8800_probe()
1427 ret = PTR_ERR(priv->clk); in nb8800_probe()
1431 ret = clk_prepare_enable(priv->clk); in nb8800_probe()
1435 spin_lock_init(&priv->tx_lock); in nb8800_probe()
1455 bus->priv = priv; in nb8800_probe()
1463 priv->phy_node = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0); in nb8800_probe()
1464 if (!priv->phy_node) { in nb8800_probe()
1470 priv->mii_bus = bus; in nb8800_probe()
1504 netif_napi_add(dev, &priv->napi, nb8800_poll, NAPI_POLL_WEIGHT); in nb8800_probe()
1515 clk_disable_unprepare(priv->clk); in nb8800_probe()
1525 struct nb8800_priv *priv = netdev_priv(ndev); in nb8800_remove() local
1529 mdiobus_unregister(priv->mii_bus); in nb8800_remove()
1531 clk_disable_unprepare(priv->clk); in nb8800_remove()