Lines Matching refs:greth
120 static inline void greth_enable_tx(struct greth_private *greth) in greth_enable_tx() argument
123 GRETH_REGORIN(greth->regs->control, GRETH_TXEN); in greth_enable_tx()
126 static inline void greth_enable_tx_and_irq(struct greth_private *greth) in greth_enable_tx_and_irq() argument
129 GRETH_REGORIN(greth->regs->control, GRETH_TXEN | GRETH_TXI); in greth_enable_tx_and_irq()
132 static inline void greth_disable_tx(struct greth_private *greth) in greth_disable_tx() argument
134 GRETH_REGANDIN(greth->regs->control, ~GRETH_TXEN); in greth_disable_tx()
137 static inline void greth_enable_rx(struct greth_private *greth) in greth_enable_rx() argument
140 GRETH_REGORIN(greth->regs->control, GRETH_RXEN); in greth_enable_rx()
143 static inline void greth_disable_rx(struct greth_private *greth) in greth_disable_rx() argument
145 GRETH_REGANDIN(greth->regs->control, ~GRETH_RXEN); in greth_disable_rx()
148 static inline void greth_enable_irqs(struct greth_private *greth) in greth_enable_irqs() argument
150 GRETH_REGORIN(greth->regs->control, GRETH_RXI | GRETH_TXI); in greth_enable_irqs()
153 static inline void greth_disable_irqs(struct greth_private *greth) in greth_disable_irqs() argument
155 GRETH_REGANDIN(greth->regs->control, ~(GRETH_RXI|GRETH_TXI)); in greth_disable_irqs()
168 static void greth_clean_rings(struct greth_private *greth) in greth_clean_rings() argument
171 struct greth_bd *rx_bdp = greth->rx_bd_base; in greth_clean_rings()
172 struct greth_bd *tx_bdp = greth->tx_bd_base; in greth_clean_rings()
174 if (greth->gbit_mac) { in greth_clean_rings()
178 if (greth->rx_skbuff[i] != NULL) { in greth_clean_rings()
179 dev_kfree_skb(greth->rx_skbuff[i]); in greth_clean_rings()
180 dma_unmap_single(greth->dev, in greth_clean_rings()
188 while (greth->tx_free < GRETH_TXBD_NUM) { in greth_clean_rings()
190 struct sk_buff *skb = greth->tx_skbuff[greth->tx_last]; in greth_clean_rings()
192 tx_bdp = greth->tx_bd_base + greth->tx_last; in greth_clean_rings()
193 greth->tx_last = NEXT_TX(greth->tx_last); in greth_clean_rings()
195 dma_unmap_single(greth->dev, in greth_clean_rings()
202 tx_bdp = greth->tx_bd_base + greth->tx_last; in greth_clean_rings()
204 dma_unmap_page(greth->dev, in greth_clean_rings()
209 greth->tx_last = NEXT_TX(greth->tx_last); in greth_clean_rings()
211 greth->tx_free += nr_frags+1; in greth_clean_rings()
219 kfree(greth->rx_bufs[i]); in greth_clean_rings()
220 dma_unmap_single(greth->dev, in greth_clean_rings()
226 kfree(greth->tx_bufs[i]); in greth_clean_rings()
227 dma_unmap_single(greth->dev, in greth_clean_rings()
235 static int greth_init_rings(struct greth_private *greth) in greth_init_rings() argument
242 rx_bd = greth->rx_bd_base; in greth_init_rings()
243 tx_bd = greth->tx_bd_base; in greth_init_rings()
246 if (greth->gbit_mac) { in greth_init_rings()
249 skb = netdev_alloc_skb(greth->netdev, MAX_FRAME_SIZE+NET_IP_ALIGN); in greth_init_rings()
251 if (netif_msg_ifup(greth)) in greth_init_rings()
252 dev_err(greth->dev, "Error allocating DMA ring.\n"); in greth_init_rings()
256 dma_addr = dma_map_single(greth->dev, in greth_init_rings()
261 if (dma_mapping_error(greth->dev, dma_addr)) { in greth_init_rings()
262 if (netif_msg_ifup(greth)) in greth_init_rings()
263 dev_err(greth->dev, "Could not create initial DMA mapping\n"); in greth_init_rings()
266 greth->rx_skbuff[i] = skb; in greth_init_rings()
276 greth->rx_bufs[i] = kmalloc(MAX_FRAME_SIZE, GFP_KERNEL); in greth_init_rings()
278 if (greth->rx_bufs[i] == NULL) { in greth_init_rings()
279 if (netif_msg_ifup(greth)) in greth_init_rings()
280 dev_err(greth->dev, "Error allocating DMA ring.\n"); in greth_init_rings()
284 dma_addr = dma_map_single(greth->dev, in greth_init_rings()
285 greth->rx_bufs[i], in greth_init_rings()
289 if (dma_mapping_error(greth->dev, dma_addr)) { in greth_init_rings()
290 if (netif_msg_ifup(greth)) in greth_init_rings()
291 dev_err(greth->dev, "Could not create initial DMA mapping\n"); in greth_init_rings()
299 greth->tx_bufs[i] = kmalloc(MAX_FRAME_SIZE, GFP_KERNEL); in greth_init_rings()
301 if (greth->tx_bufs[i] == NULL) { in greth_init_rings()
302 if (netif_msg_ifup(greth)) in greth_init_rings()
303 dev_err(greth->dev, "Error allocating DMA ring.\n"); in greth_init_rings()
307 dma_addr = dma_map_single(greth->dev, in greth_init_rings()
308 greth->tx_bufs[i], in greth_init_rings()
312 if (dma_mapping_error(greth->dev, dma_addr)) { in greth_init_rings()
313 if (netif_msg_ifup(greth)) in greth_init_rings()
314 dev_err(greth->dev, "Could not create initial DMA mapping\n"); in greth_init_rings()
325 greth->rx_cur = 0; in greth_init_rings()
326 greth->tx_next = 0; in greth_init_rings()
327 greth->tx_last = 0; in greth_init_rings()
328 greth->tx_free = GRETH_TXBD_NUM; in greth_init_rings()
331 GRETH_REGSAVE(greth->regs->tx_desc_p, greth->tx_bd_base_phys); in greth_init_rings()
332 GRETH_REGSAVE(greth->regs->rx_desc_p, greth->rx_bd_base_phys); in greth_init_rings()
337 greth_clean_rings(greth); in greth_init_rings()
343 struct greth_private *greth = netdev_priv(dev); in greth_open() local
346 err = greth_init_rings(greth); in greth_open()
348 if (netif_msg_ifup(greth)) in greth_open()
353 err = request_irq(greth->irq, greth_interrupt, 0, "eth", (void *) dev); in greth_open()
355 if (netif_msg_ifup(greth)) in greth_open()
357 greth_clean_rings(greth); in greth_open()
361 if (netif_msg_ifup(greth)) in greth_open()
365 GRETH_REGSAVE(greth->regs->status, 0xFF); in greth_open()
367 napi_enable(&greth->napi); in greth_open()
369 greth_enable_irqs(greth); in greth_open()
370 greth_enable_tx(greth); in greth_open()
371 greth_enable_rx(greth); in greth_open()
378 struct greth_private *greth = netdev_priv(dev); in greth_close() local
380 napi_disable(&greth->napi); in greth_close()
382 greth_disable_irqs(greth); in greth_close()
383 greth_disable_tx(greth); in greth_close()
384 greth_disable_rx(greth); in greth_close()
388 free_irq(greth->irq, (void *) dev); in greth_close()
390 greth_clean_rings(greth); in greth_close()
398 struct greth_private *greth = netdev_priv(dev); in greth_start_xmit() local
405 greth_clean_tx(greth->netdev); in greth_start_xmit()
407 if (unlikely(greth->tx_free <= 0)) { in greth_start_xmit()
408 spin_lock_irqsave(&greth->devlock, flags);/*save from poll/irq*/ in greth_start_xmit()
409 ctrl = GRETH_REGLOAD(greth->regs->control); in greth_start_xmit()
412 GRETH_REGSAVE(greth->regs->control, ctrl | GRETH_TXI); in greth_start_xmit()
414 spin_unlock_irqrestore(&greth->devlock, flags); in greth_start_xmit()
418 if (netif_msg_pktdata(greth)) in greth_start_xmit()
427 bdp = greth->tx_bd_base + greth->tx_next; in greth_start_xmit()
432 dma_sync_single_for_device(greth->dev, dma_addr, skb->len, DMA_TO_DEVICE); in greth_start_xmit()
435 greth->tx_bufs_length[greth->tx_next] = skb->len & GRETH_BD_LEN; in greth_start_xmit()
438 if (greth->tx_next == GRETH_TXBD_NUM_MASK) { in greth_start_xmit()
442 greth->tx_next = NEXT_TX(greth->tx_next); in greth_start_xmit()
443 greth->tx_free--; in greth_start_xmit()
447 spin_lock_irqsave(&greth->devlock, flags); /*save from poll/irq*/ in greth_start_xmit()
448 greth_enable_tx(greth); in greth_start_xmit()
449 spin_unlock_irqrestore(&greth->devlock, flags); in greth_start_xmit()
467 struct greth_private *greth = netdev_priv(dev); in greth_start_xmit_gbit() local
475 tx_last = greth->tx_last; in greth_start_xmit_gbit()
478 if (greth_num_free_bds(tx_last, greth->tx_next) < nr_frags + 1) { in greth_start_xmit_gbit()
484 if (netif_msg_pktdata(greth)) in greth_start_xmit_gbit()
493 greth->tx_skbuff[greth->tx_next] = skb; in greth_start_xmit_gbit()
504 if (greth->tx_next == GRETH_TXBD_NUM_MASK) in greth_start_xmit_gbit()
508 bdp = greth->tx_bd_base + greth->tx_next; in greth_start_xmit_gbit()
510 dma_addr = dma_map_single(greth->dev, skb->data, skb_headlen(skb), DMA_TO_DEVICE); in greth_start_xmit_gbit()
512 if (unlikely(dma_mapping_error(greth->dev, dma_addr))) in greth_start_xmit_gbit()
517 curr_tx = NEXT_TX(greth->tx_next); in greth_start_xmit_gbit()
522 greth->tx_skbuff[curr_tx] = NULL; in greth_start_xmit_gbit()
523 bdp = greth->tx_bd_base + curr_tx; in greth_start_xmit_gbit()
542 dma_addr = skb_frag_dma_map(greth->dev, frag, 0, skb_frag_size(frag), in greth_start_xmit_gbit()
545 if (unlikely(dma_mapping_error(greth->dev, dma_addr))) in greth_start_xmit_gbit()
556 bdp = greth->tx_bd_base + greth->tx_next; in greth_start_xmit_gbit()
560 spin_lock_irqsave(&greth->devlock, flags); /*save from poll/irq*/ in greth_start_xmit_gbit()
561 greth->tx_next = curr_tx; in greth_start_xmit_gbit()
562 greth_enable_tx_and_irq(greth); in greth_start_xmit_gbit()
563 spin_unlock_irqrestore(&greth->devlock, flags); in greth_start_xmit_gbit()
569 for (i = 0; greth->tx_next + i != curr_tx; i++) { in greth_start_xmit_gbit()
570 bdp = greth->tx_bd_base + greth->tx_next + i; in greth_start_xmit_gbit()
571 dma_unmap_single(greth->dev, in greth_start_xmit_gbit()
579 dev_warn(greth->dev, "Could not create TX DMA mapping\n"); in greth_start_xmit_gbit()
588 struct greth_private *greth; in greth_interrupt() local
592 greth = netdev_priv(dev); in greth_interrupt()
594 spin_lock(&greth->devlock); in greth_interrupt()
597 status = GRETH_REGLOAD(greth->regs->status); in greth_interrupt()
603 ctrl = GRETH_REGLOAD(greth->regs->control); in greth_interrupt()
611 greth_disable_irqs(greth); in greth_interrupt()
612 napi_schedule(&greth->napi); in greth_interrupt()
616 spin_unlock(&greth->devlock); in greth_interrupt()
623 struct greth_private *greth; in greth_clean_tx() local
627 greth = netdev_priv(dev); in greth_clean_tx()
630 bdp = greth->tx_bd_base + greth->tx_last; in greth_clean_tx()
631 GRETH_REGSAVE(greth->regs->status, GRETH_INT_TE | GRETH_INT_TX); in greth_clean_tx()
638 if (greth->tx_free == GRETH_TXBD_NUM) in greth_clean_tx()
650 dev->stats.tx_bytes += greth->tx_bufs_length[greth->tx_last]; in greth_clean_tx()
651 greth->tx_last = NEXT_TX(greth->tx_last); in greth_clean_tx()
652 greth->tx_free++; in greth_clean_tx()
655 if (greth->tx_free > 0) { in greth_clean_tx()
677 struct greth_private *greth; in greth_clean_tx_gbit() local
684 greth = netdev_priv(dev); in greth_clean_tx_gbit()
685 tx_last = greth->tx_last; in greth_clean_tx_gbit()
687 while (tx_last != greth->tx_next) { in greth_clean_tx_gbit()
689 skb = greth->tx_skbuff[tx_last]; in greth_clean_tx_gbit()
694 bdp_last_frag = greth->tx_bd_base + SKIP_TX(tx_last, nr_frags); in greth_clean_tx_gbit()
696 GRETH_REGSAVE(greth->regs->status, GRETH_INT_TE | GRETH_INT_TX); in greth_clean_tx_gbit()
703 greth->tx_skbuff[tx_last] = NULL; in greth_clean_tx_gbit()
708 bdp = greth->tx_bd_base + tx_last; in greth_clean_tx_gbit()
712 dma_unmap_single(greth->dev, in greth_clean_tx_gbit()
719 bdp = greth->tx_bd_base + tx_last; in greth_clean_tx_gbit()
721 dma_unmap_page(greth->dev, in greth_clean_tx_gbit()
732 greth->tx_last = tx_last; in greth_clean_tx_gbit()
735 (greth_num_free_bds(tx_last, greth->tx_next) > in greth_clean_tx_gbit()
743 struct greth_private *greth; in greth_rx() local
751 greth = netdev_priv(dev); in greth_rx()
755 bdp = greth->rx_bd_base + greth->rx_cur; in greth_rx()
756 GRETH_REGSAVE(greth->regs->status, GRETH_INT_RE | GRETH_INT_RX); in greth_rx()
801 dma_sync_single_for_cpu(greth->dev, in greth_rx()
806 if (netif_msg_pktdata(greth)) in greth_rx()
819 if (greth->rx_cur == GRETH_RXBD_NUM_MASK) { in greth_rx()
826 dma_sync_single_for_device(greth->dev, dma_addr, MAX_FRAME_SIZE, DMA_FROM_DEVICE); in greth_rx()
828 spin_lock_irqsave(&greth->devlock, flags); /* save from XMIT */ in greth_rx()
829 greth_enable_rx(greth); in greth_rx()
830 spin_unlock_irqrestore(&greth->devlock, flags); in greth_rx()
832 greth->rx_cur = NEXT_RX(greth->rx_cur); in greth_rx()
858 struct greth_private *greth; in greth_rx_gbit() local
866 greth = netdev_priv(dev); in greth_rx_gbit()
870 bdp = greth->rx_bd_base + greth->rx_cur; in greth_rx_gbit()
871 skb = greth->rx_skbuff[greth->rx_cur]; in greth_rx_gbit()
872 GRETH_REGSAVE(greth->regs->status, GRETH_INT_RE | GRETH_INT_RX); in greth_rx_gbit()
901 dma_addr = dma_map_single(greth->dev, in greth_rx_gbit()
906 if (!dma_mapping_error(greth->dev, dma_addr)) { in greth_rx_gbit()
910 dma_unmap_single(greth->dev, in greth_rx_gbit()
915 if (netif_msg_pktdata(greth)) in greth_rx_gbit()
930 greth->rx_skbuff[greth->rx_cur] = newskb; in greth_rx_gbit()
934 dev_warn(greth->dev, "Could not create DMA mapping, dropping packet\n"); in greth_rx_gbit()
950 dev_warn(greth->dev, "Could not allocate SKB, dropping packet\n"); in greth_rx_gbit()
956 if (greth->rx_cur == GRETH_RXBD_NUM_MASK) { in greth_rx_gbit()
962 spin_lock_irqsave(&greth->devlock, flags); in greth_rx_gbit()
963 greth_enable_rx(greth); in greth_rx_gbit()
964 spin_unlock_irqrestore(&greth->devlock, flags); in greth_rx_gbit()
965 greth->rx_cur = NEXT_RX(greth->rx_cur); in greth_rx_gbit()
974 struct greth_private *greth; in greth_poll() local
978 greth = container_of(napi, struct greth_private, napi); in greth_poll()
981 if (greth->gbit_mac) { in greth_poll()
982 greth_clean_tx_gbit(greth->netdev); in greth_poll()
983 work_done += greth_rx_gbit(greth->netdev, budget - work_done); in greth_poll()
985 if (netif_queue_stopped(greth->netdev)) in greth_poll()
986 greth_clean_tx(greth->netdev); in greth_poll()
987 work_done += greth_rx(greth->netdev, budget - work_done); in greth_poll()
992 spin_lock_irqsave(&greth->devlock, flags); in greth_poll()
994 ctrl = GRETH_REGLOAD(greth->regs->control); in greth_poll()
995 if ((greth->gbit_mac && (greth->tx_last != greth->tx_next)) || in greth_poll()
996 (!greth->gbit_mac && netif_queue_stopped(greth->netdev))) { in greth_poll()
997 GRETH_REGSAVE(greth->regs->control, in greth_poll()
1002 GRETH_REGSAVE(greth->regs->control, ctrl | GRETH_RXI); in greth_poll()
1006 if (GRETH_REGLOAD(greth->regs->status) & mask) { in greth_poll()
1007 GRETH_REGSAVE(greth->regs->control, ctrl); in greth_poll()
1008 spin_unlock_irqrestore(&greth->devlock, flags); in greth_poll()
1012 spin_unlock_irqrestore(&greth->devlock, flags); in greth_poll()
1022 struct greth_private *greth; in greth_set_mac_add() local
1025 greth = netdev_priv(dev); in greth_set_mac_add()
1026 regs = greth->regs; in greth_set_mac_add()
1047 struct greth_private *greth = netdev_priv(dev); in greth_set_hash_filter() local
1048 struct greth_regs *regs = greth->regs; in greth_set_hash_filter()
1066 struct greth_private *greth = netdev_priv(dev); in greth_set_multicast_list() local
1067 struct greth_regs *regs = greth->regs; in greth_set_multicast_list()
1075 if (greth->multicast) { in greth_set_multicast_list()
1099 struct greth_private *greth = netdev_priv(dev); in greth_get_msglevel() local
1100 return greth->msg_enable; in greth_get_msglevel()
1105 struct greth_private *greth = netdev_priv(dev); in greth_set_msglevel() local
1106 greth->msg_enable = value; in greth_set_msglevel()
1110 struct greth_private *greth = netdev_priv(dev); in greth_get_settings() local
1111 struct phy_device *phy = greth->phy; in greth_get_settings()
1121 struct greth_private *greth = netdev_priv(dev); in greth_set_settings() local
1122 struct phy_device *phy = greth->phy; in greth_set_settings()
1137 struct greth_private *greth = netdev_priv(dev); in greth_get_drvinfo() local
1139 strlcpy(info->driver, dev_driver_string(greth->dev), in greth_get_drvinfo()
1142 strlcpy(info->bus_info, greth->dev->bus->name, sizeof(info->bus_info)); in greth_get_drvinfo()
1149 struct greth_private *greth = netdev_priv(dev); in greth_get_regs() local
1150 u32 __iomem *greth_regs = (u32 __iomem *) greth->regs; in greth_get_regs()
1176 static inline int wait_for_mdio(struct greth_private *greth) in wait_for_mdio() argument
1179 while (GRETH_REGLOAD(greth->regs->mdio) & GRETH_MII_BUSY) { in wait_for_mdio()
1188 struct greth_private *greth = bus->priv; in greth_mdio_read() local
1191 if (!wait_for_mdio(greth)) in greth_mdio_read()
1194 GRETH_REGSAVE(greth->regs->mdio, ((phy & 0x1F) << 11) | ((reg & 0x1F) << 6) | 2); in greth_mdio_read()
1196 if (!wait_for_mdio(greth)) in greth_mdio_read()
1199 if (!(GRETH_REGLOAD(greth->regs->mdio) & GRETH_MII_NVALID)) { in greth_mdio_read()
1200 data = (GRETH_REGLOAD(greth->regs->mdio) >> 16) & 0xFFFF; in greth_mdio_read()
1210 struct greth_private *greth = bus->priv; in greth_mdio_write() local
1212 if (!wait_for_mdio(greth)) in greth_mdio_write()
1215 GRETH_REGSAVE(greth->regs->mdio, in greth_mdio_write()
1218 if (!wait_for_mdio(greth)) in greth_mdio_write()
1226 struct greth_private *greth = netdev_priv(dev); in greth_link_change() local
1227 struct phy_device *phydev = greth->phy; in greth_link_change()
1232 spin_lock_irqsave(&greth->devlock, flags); in greth_link_change()
1236 if ((greth->speed != phydev->speed) || (greth->duplex != phydev->duplex)) { in greth_link_change()
1237 ctrl = GRETH_REGLOAD(greth->regs->control) & in greth_link_change()
1248 GRETH_REGSAVE(greth->regs->control, ctrl); in greth_link_change()
1249 greth->speed = phydev->speed; in greth_link_change()
1250 greth->duplex = phydev->duplex; in greth_link_change()
1255 if (phydev->link != greth->link) { in greth_link_change()
1257 greth->speed = 0; in greth_link_change()
1258 greth->duplex = -1; in greth_link_change()
1260 greth->link = phydev->link; in greth_link_change()
1265 spin_unlock_irqrestore(&greth->devlock, flags); in greth_link_change()
1279 struct greth_private *greth = netdev_priv(dev); in greth_mdio_probe() local
1284 phy = phy_find_first(greth->mdio); in greth_mdio_probe()
1287 if (netif_msg_probe(greth)) in greth_mdio_probe()
1293 greth->gbit_mac ? PHY_INTERFACE_MODE_GMII : PHY_INTERFACE_MODE_MII); in greth_mdio_probe()
1295 if (netif_msg_ifup(greth)) in greth_mdio_probe()
1300 if (greth->gbit_mac) in greth_mdio_probe()
1307 greth->link = 0; in greth_mdio_probe()
1308 greth->speed = 0; in greth_mdio_probe()
1309 greth->duplex = -1; in greth_mdio_probe()
1310 greth->phy = phy; in greth_mdio_probe()
1324 static int greth_mdio_init(struct greth_private *greth) in greth_mdio_init() argument
1329 greth->mdio = mdiobus_alloc(); in greth_mdio_init()
1330 if (!greth->mdio) { in greth_mdio_init()
1334 greth->mdio->name = "greth-mdio"; in greth_mdio_init()
1335 snprintf(greth->mdio->id, MII_BUS_ID_SIZE, "%s-%d", greth->mdio->name, greth->irq); in greth_mdio_init()
1336 greth->mdio->read = greth_mdio_read; in greth_mdio_init()
1337 greth->mdio->write = greth_mdio_write; in greth_mdio_init()
1338 greth->mdio->priv = greth; in greth_mdio_init()
1340 greth->mdio->irq = greth->mdio_irqs; in greth_mdio_init()
1343 greth->mdio->irq[phy] = PHY_POLL; in greth_mdio_init()
1345 ret = mdiobus_register(greth->mdio); in greth_mdio_init()
1350 ret = greth_mdio_probe(greth->netdev); in greth_mdio_init()
1352 if (netif_msg_probe(greth)) in greth_mdio_init()
1353 dev_err(&greth->netdev->dev, "failed to probe MDIO bus\n"); in greth_mdio_init()
1357 phy_start(greth->phy); in greth_mdio_init()
1360 if (greth->edcl && greth_edcl == 1) { in greth_mdio_init()
1361 phy_start_aneg(greth->phy); in greth_mdio_init()
1363 while (!phy_aneg_done(greth->phy) && time_before(jiffies, timeout)) { in greth_mdio_init()
1365 phy_read_status(greth->phy); in greth_mdio_init()
1366 greth_link_change(greth->netdev); in greth_mdio_init()
1372 mdiobus_unregister(greth->mdio); in greth_mdio_init()
1374 mdiobus_free(greth->mdio); in greth_mdio_init()
1382 struct greth_private *greth; in greth_of_probe() local
1395 greth = netdev_priv(dev); in greth_of_probe()
1396 greth->netdev = dev; in greth_of_probe()
1397 greth->dev = &ofdev->dev; in greth_of_probe()
1400 greth->msg_enable = greth_debug; in greth_of_probe()
1402 greth->msg_enable = GRETH_DEF_MSG_ENABLE; in greth_of_probe()
1404 spin_lock_init(&greth->devlock); in greth_of_probe()
1406 greth->regs = of_ioremap(&ofdev->resource[0], 0, in greth_of_probe()
1410 if (greth->regs == NULL) { in greth_of_probe()
1411 if (netif_msg_probe(greth)) in greth_of_probe()
1412 dev_err(greth->dev, "ioremap failure.\n"); in greth_of_probe()
1417 regs = greth->regs; in greth_of_probe()
1418 greth->irq = ofdev->archdata.irqs[0]; in greth_of_probe()
1420 dev_set_drvdata(greth->dev, dev); in greth_of_probe()
1421 SET_NETDEV_DEV(dev, greth->dev); in greth_of_probe()
1423 if (netif_msg_probe(greth)) in greth_of_probe()
1424 dev_dbg(greth->dev, "resetting controller.\n"); in greth_of_probe()
1434 if (netif_msg_probe(greth)) in greth_of_probe()
1435 dev_err(greth->dev, "timeout when waiting for reset.\n"); in greth_of_probe()
1441 greth->phyaddr = (GRETH_REGLOAD(regs->mdio) >> 11) & 0x1F; in greth_of_probe()
1445 greth->gbit_mac = (tmp >> 27) & 1; in greth_of_probe()
1448 greth->multicast = (tmp >> 25) & 1; in greth_of_probe()
1450 greth->edcl = (tmp >> 31) & 1; in greth_of_probe()
1454 if (greth->edcl != 0) in greth_of_probe()
1458 greth->mdio_int_en = (tmp >> 26) & 1; in greth_of_probe()
1460 err = greth_mdio_init(greth); in greth_of_probe()
1462 if (netif_msg_probe(greth)) in greth_of_probe()
1463 dev_err(greth->dev, "failed to register MDIO bus\n"); in greth_of_probe()
1468 greth->tx_bd_base = dma_zalloc_coherent(greth->dev, 1024, in greth_of_probe()
1469 &greth->tx_bd_base_phys, in greth_of_probe()
1471 if (!greth->tx_bd_base) { in greth_of_probe()
1477 greth->rx_bd_base = dma_zalloc_coherent(greth->dev, 1024, in greth_of_probe()
1478 &greth->rx_bd_base_phys, in greth_of_probe()
1480 if (!greth->rx_bd_base) { in greth_of_probe()
1512 if (netif_msg_probe(greth)) in greth_of_probe()
1513 dev_err(greth->dev, "no valid ethernet address, aborting.\n"); in greth_of_probe()
1525 if (greth->gbit_mac) { in greth_of_probe()
1532 if (greth->multicast) { in greth_of_probe()
1544 if (netif_msg_probe(greth)) in greth_of_probe()
1545 dev_err(greth->dev, "netdevice registration failed.\n"); in greth_of_probe()
1550 netif_napi_add(dev, &greth->napi, greth_poll, 64); in greth_of_probe()
1555 dma_free_coherent(greth->dev, 1024, greth->rx_bd_base, greth->rx_bd_base_phys); in greth_of_probe()
1557 dma_free_coherent(greth->dev, 1024, greth->tx_bd_base, greth->tx_bd_base_phys); in greth_of_probe()
1559 mdiobus_unregister(greth->mdio); in greth_of_probe()
1561 of_iounmap(&ofdev->resource[0], greth->regs, resource_size(&ofdev->resource[0])); in greth_of_probe()
1570 struct greth_private *greth = netdev_priv(ndev); in greth_of_remove() local
1573 dma_free_coherent(&of_dev->dev, 1024, greth->rx_bd_base, greth->rx_bd_base_phys); in greth_of_remove()
1575 dma_free_coherent(&of_dev->dev, 1024, greth->tx_bd_base, greth->tx_bd_base_phys); in greth_of_remove()
1577 if (greth->phy) in greth_of_remove()
1578 phy_stop(greth->phy); in greth_of_remove()
1579 mdiobus_unregister(greth->mdio); in greth_of_remove()
1584 of_iounmap(&of_dev->resource[0], greth->regs, resource_size(&of_dev->resource[0])); in greth_of_remove()