greth             117 drivers/net/ethernet/aeroflex/greth.c static inline void greth_enable_tx(struct greth_private *greth)
greth             120 drivers/net/ethernet/aeroflex/greth.c 	GRETH_REGORIN(greth->regs->control, GRETH_TXEN);
greth             123 drivers/net/ethernet/aeroflex/greth.c static inline void greth_enable_tx_and_irq(struct greth_private *greth)
greth             126 drivers/net/ethernet/aeroflex/greth.c 	GRETH_REGORIN(greth->regs->control, GRETH_TXEN | GRETH_TXI);
greth             129 drivers/net/ethernet/aeroflex/greth.c static inline void greth_disable_tx(struct greth_private *greth)
greth             131 drivers/net/ethernet/aeroflex/greth.c 	GRETH_REGANDIN(greth->regs->control, ~GRETH_TXEN);
greth             134 drivers/net/ethernet/aeroflex/greth.c static inline void greth_enable_rx(struct greth_private *greth)
greth             137 drivers/net/ethernet/aeroflex/greth.c 	GRETH_REGORIN(greth->regs->control, GRETH_RXEN);
greth             140 drivers/net/ethernet/aeroflex/greth.c static inline void greth_disable_rx(struct greth_private *greth)
greth             142 drivers/net/ethernet/aeroflex/greth.c 	GRETH_REGANDIN(greth->regs->control, ~GRETH_RXEN);
greth             145 drivers/net/ethernet/aeroflex/greth.c static inline void greth_enable_irqs(struct greth_private *greth)
greth             147 drivers/net/ethernet/aeroflex/greth.c 	GRETH_REGORIN(greth->regs->control, GRETH_RXI | GRETH_TXI);
greth             150 drivers/net/ethernet/aeroflex/greth.c static inline void greth_disable_irqs(struct greth_private *greth)
greth             152 drivers/net/ethernet/aeroflex/greth.c 	GRETH_REGANDIN(greth->regs->control, ~(GRETH_RXI|GRETH_TXI));
greth             165 drivers/net/ethernet/aeroflex/greth.c static void greth_clean_rings(struct greth_private *greth)
greth             168 drivers/net/ethernet/aeroflex/greth.c 	struct greth_bd *rx_bdp = greth->rx_bd_base;
greth             169 drivers/net/ethernet/aeroflex/greth.c 	struct greth_bd *tx_bdp = greth->tx_bd_base;
greth             171 drivers/net/ethernet/aeroflex/greth.c 	if (greth->gbit_mac) {
greth             175 drivers/net/ethernet/aeroflex/greth.c 			if (greth->rx_skbuff[i] != NULL) {
greth             176 drivers/net/ethernet/aeroflex/greth.c 				dev_kfree_skb(greth->rx_skbuff[i]);
greth             177 drivers/net/ethernet/aeroflex/greth.c 				dma_unmap_single(greth->dev,
greth             185 drivers/net/ethernet/aeroflex/greth.c 		while (greth->tx_free < GRETH_TXBD_NUM) {
greth             187 drivers/net/ethernet/aeroflex/greth.c 			struct sk_buff *skb = greth->tx_skbuff[greth->tx_last];
greth             189 drivers/net/ethernet/aeroflex/greth.c 			tx_bdp = greth->tx_bd_base + greth->tx_last;
greth             190 drivers/net/ethernet/aeroflex/greth.c 			greth->tx_last = NEXT_TX(greth->tx_last);
greth             192 drivers/net/ethernet/aeroflex/greth.c 			dma_unmap_single(greth->dev,
greth             199 drivers/net/ethernet/aeroflex/greth.c 				tx_bdp = greth->tx_bd_base + greth->tx_last;
greth             201 drivers/net/ethernet/aeroflex/greth.c 				dma_unmap_page(greth->dev,
greth             206 drivers/net/ethernet/aeroflex/greth.c 				greth->tx_last = NEXT_TX(greth->tx_last);
greth             208 drivers/net/ethernet/aeroflex/greth.c 			greth->tx_free += nr_frags+1;
greth             216 drivers/net/ethernet/aeroflex/greth.c 			kfree(greth->rx_bufs[i]);
greth             217 drivers/net/ethernet/aeroflex/greth.c 			dma_unmap_single(greth->dev,
greth             223 drivers/net/ethernet/aeroflex/greth.c 			kfree(greth->tx_bufs[i]);
greth             224 drivers/net/ethernet/aeroflex/greth.c 			dma_unmap_single(greth->dev,
greth             232 drivers/net/ethernet/aeroflex/greth.c static int greth_init_rings(struct greth_private *greth)
greth             239 drivers/net/ethernet/aeroflex/greth.c 	rx_bd = greth->rx_bd_base;
greth             240 drivers/net/ethernet/aeroflex/greth.c 	tx_bd = greth->tx_bd_base;
greth             243 drivers/net/ethernet/aeroflex/greth.c 	if (greth->gbit_mac) {
greth             246 drivers/net/ethernet/aeroflex/greth.c 			skb = netdev_alloc_skb(greth->netdev, MAX_FRAME_SIZE+NET_IP_ALIGN);
greth             248 drivers/net/ethernet/aeroflex/greth.c 				if (netif_msg_ifup(greth))
greth             249 drivers/net/ethernet/aeroflex/greth.c 					dev_err(greth->dev, "Error allocating DMA ring.\n");
greth             253 drivers/net/ethernet/aeroflex/greth.c 			dma_addr = dma_map_single(greth->dev,
greth             258 drivers/net/ethernet/aeroflex/greth.c 			if (dma_mapping_error(greth->dev, dma_addr)) {
greth             259 drivers/net/ethernet/aeroflex/greth.c 				if (netif_msg_ifup(greth))
greth             260 drivers/net/ethernet/aeroflex/greth.c 					dev_err(greth->dev, "Could not create initial DMA mapping\n");
greth             263 drivers/net/ethernet/aeroflex/greth.c 			greth->rx_skbuff[i] = skb;
greth             273 drivers/net/ethernet/aeroflex/greth.c 			greth->rx_bufs[i] = kmalloc(MAX_FRAME_SIZE, GFP_KERNEL);
greth             275 drivers/net/ethernet/aeroflex/greth.c 			if (greth->rx_bufs[i] == NULL) {
greth             276 drivers/net/ethernet/aeroflex/greth.c 				if (netif_msg_ifup(greth))
greth             277 drivers/net/ethernet/aeroflex/greth.c 					dev_err(greth->dev, "Error allocating DMA ring.\n");
greth             281 drivers/net/ethernet/aeroflex/greth.c 			dma_addr = dma_map_single(greth->dev,
greth             282 drivers/net/ethernet/aeroflex/greth.c 						  greth->rx_bufs[i],
greth             286 drivers/net/ethernet/aeroflex/greth.c 			if (dma_mapping_error(greth->dev, dma_addr)) {
greth             287 drivers/net/ethernet/aeroflex/greth.c 				if (netif_msg_ifup(greth))
greth             288 drivers/net/ethernet/aeroflex/greth.c 					dev_err(greth->dev, "Could not create initial DMA mapping\n");
greth             296 drivers/net/ethernet/aeroflex/greth.c 			greth->tx_bufs[i] = kmalloc(MAX_FRAME_SIZE, GFP_KERNEL);
greth             298 drivers/net/ethernet/aeroflex/greth.c 			if (greth->tx_bufs[i] == NULL) {
greth             299 drivers/net/ethernet/aeroflex/greth.c 				if (netif_msg_ifup(greth))
greth             300 drivers/net/ethernet/aeroflex/greth.c 					dev_err(greth->dev, "Error allocating DMA ring.\n");
greth             304 drivers/net/ethernet/aeroflex/greth.c 			dma_addr = dma_map_single(greth->dev,
greth             305 drivers/net/ethernet/aeroflex/greth.c 						  greth->tx_bufs[i],
greth             309 drivers/net/ethernet/aeroflex/greth.c 			if (dma_mapping_error(greth->dev, dma_addr)) {
greth             310 drivers/net/ethernet/aeroflex/greth.c 				if (netif_msg_ifup(greth))
greth             311 drivers/net/ethernet/aeroflex/greth.c 					dev_err(greth->dev, "Could not create initial DMA mapping\n");
greth             322 drivers/net/ethernet/aeroflex/greth.c 	greth->rx_cur = 0;
greth             323 drivers/net/ethernet/aeroflex/greth.c 	greth->tx_next = 0;
greth             324 drivers/net/ethernet/aeroflex/greth.c 	greth->tx_last = 0;
greth             325 drivers/net/ethernet/aeroflex/greth.c 	greth->tx_free = GRETH_TXBD_NUM;
greth             328 drivers/net/ethernet/aeroflex/greth.c 	GRETH_REGSAVE(greth->regs->tx_desc_p, greth->tx_bd_base_phys);
greth             329 drivers/net/ethernet/aeroflex/greth.c 	GRETH_REGSAVE(greth->regs->rx_desc_p, greth->rx_bd_base_phys);
greth             334 drivers/net/ethernet/aeroflex/greth.c 	greth_clean_rings(greth);
greth             340 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = netdev_priv(dev);
greth             343 drivers/net/ethernet/aeroflex/greth.c 	err = greth_init_rings(greth);
greth             345 drivers/net/ethernet/aeroflex/greth.c 		if (netif_msg_ifup(greth))
greth             350 drivers/net/ethernet/aeroflex/greth.c 	err = request_irq(greth->irq, greth_interrupt, 0, "eth", (void *) dev);
greth             352 drivers/net/ethernet/aeroflex/greth.c 		if (netif_msg_ifup(greth))
greth             354 drivers/net/ethernet/aeroflex/greth.c 		greth_clean_rings(greth);
greth             358 drivers/net/ethernet/aeroflex/greth.c 	if (netif_msg_ifup(greth))
greth             362 drivers/net/ethernet/aeroflex/greth.c 	GRETH_REGSAVE(greth->regs->status, 0xFF);
greth             364 drivers/net/ethernet/aeroflex/greth.c 	napi_enable(&greth->napi);
greth             366 drivers/net/ethernet/aeroflex/greth.c 	greth_enable_irqs(greth);
greth             367 drivers/net/ethernet/aeroflex/greth.c 	greth_enable_tx(greth);
greth             368 drivers/net/ethernet/aeroflex/greth.c 	greth_enable_rx(greth);
greth             375 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = netdev_priv(dev);
greth             377 drivers/net/ethernet/aeroflex/greth.c 	napi_disable(&greth->napi);
greth             379 drivers/net/ethernet/aeroflex/greth.c 	greth_disable_irqs(greth);
greth             380 drivers/net/ethernet/aeroflex/greth.c 	greth_disable_tx(greth);
greth             381 drivers/net/ethernet/aeroflex/greth.c 	greth_disable_rx(greth);
greth             385 drivers/net/ethernet/aeroflex/greth.c 	free_irq(greth->irq, (void *) dev);
greth             387 drivers/net/ethernet/aeroflex/greth.c 	greth_clean_rings(greth);
greth             395 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = netdev_priv(dev);
greth             402 drivers/net/ethernet/aeroflex/greth.c 	greth_clean_tx(greth->netdev);
greth             404 drivers/net/ethernet/aeroflex/greth.c 	if (unlikely(greth->tx_free <= 0)) {
greth             405 drivers/net/ethernet/aeroflex/greth.c 		spin_lock_irqsave(&greth->devlock, flags);/*save from poll/irq*/
greth             406 drivers/net/ethernet/aeroflex/greth.c 		ctrl = GRETH_REGLOAD(greth->regs->control);
greth             409 drivers/net/ethernet/aeroflex/greth.c 			GRETH_REGSAVE(greth->regs->control, ctrl | GRETH_TXI);
greth             411 drivers/net/ethernet/aeroflex/greth.c 		spin_unlock_irqrestore(&greth->devlock, flags);
greth             415 drivers/net/ethernet/aeroflex/greth.c 	if (netif_msg_pktdata(greth))
greth             424 drivers/net/ethernet/aeroflex/greth.c 	bdp = greth->tx_bd_base + greth->tx_next;
greth             429 drivers/net/ethernet/aeroflex/greth.c 	dma_sync_single_for_device(greth->dev, dma_addr, skb->len, DMA_TO_DEVICE);
greth             432 drivers/net/ethernet/aeroflex/greth.c 	greth->tx_bufs_length[greth->tx_next] = skb->len & GRETH_BD_LEN;
greth             435 drivers/net/ethernet/aeroflex/greth.c 	if (greth->tx_next == GRETH_TXBD_NUM_MASK) {
greth             439 drivers/net/ethernet/aeroflex/greth.c 	greth->tx_next = NEXT_TX(greth->tx_next);
greth             440 drivers/net/ethernet/aeroflex/greth.c 	greth->tx_free--;
greth             444 drivers/net/ethernet/aeroflex/greth.c 	spin_lock_irqsave(&greth->devlock, flags); /*save from poll/irq*/
greth             445 drivers/net/ethernet/aeroflex/greth.c 	greth_enable_tx(greth);
greth             446 drivers/net/ethernet/aeroflex/greth.c 	spin_unlock_irqrestore(&greth->devlock, flags);
greth             464 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = netdev_priv(dev);
greth             472 drivers/net/ethernet/aeroflex/greth.c 	tx_last = greth->tx_last;
greth             475 drivers/net/ethernet/aeroflex/greth.c 	if (greth_num_free_bds(tx_last, greth->tx_next) < nr_frags + 1) {
greth             481 drivers/net/ethernet/aeroflex/greth.c 	if (netif_msg_pktdata(greth))
greth             490 drivers/net/ethernet/aeroflex/greth.c 	greth->tx_skbuff[greth->tx_next] = skb;
greth             501 drivers/net/ethernet/aeroflex/greth.c 	if (greth->tx_next == GRETH_TXBD_NUM_MASK)
greth             505 drivers/net/ethernet/aeroflex/greth.c 	bdp = greth->tx_bd_base + greth->tx_next;
greth             507 drivers/net/ethernet/aeroflex/greth.c 	dma_addr = dma_map_single(greth->dev, skb->data, skb_headlen(skb), DMA_TO_DEVICE);
greth             509 drivers/net/ethernet/aeroflex/greth.c 	if (unlikely(dma_mapping_error(greth->dev, dma_addr)))
greth             514 drivers/net/ethernet/aeroflex/greth.c 	curr_tx = NEXT_TX(greth->tx_next);
greth             519 drivers/net/ethernet/aeroflex/greth.c 		greth->tx_skbuff[curr_tx] = NULL;
greth             520 drivers/net/ethernet/aeroflex/greth.c 		bdp = greth->tx_bd_base + curr_tx;
greth             539 drivers/net/ethernet/aeroflex/greth.c 		dma_addr = skb_frag_dma_map(greth->dev, frag, 0, skb_frag_size(frag),
greth             542 drivers/net/ethernet/aeroflex/greth.c 		if (unlikely(dma_mapping_error(greth->dev, dma_addr)))
greth             553 drivers/net/ethernet/aeroflex/greth.c 	bdp = greth->tx_bd_base + greth->tx_next;
greth             557 drivers/net/ethernet/aeroflex/greth.c 	spin_lock_irqsave(&greth->devlock, flags); /*save from poll/irq*/
greth             558 drivers/net/ethernet/aeroflex/greth.c 	greth->tx_next = curr_tx;
greth             559 drivers/net/ethernet/aeroflex/greth.c 	greth_enable_tx_and_irq(greth);
greth             560 drivers/net/ethernet/aeroflex/greth.c 	spin_unlock_irqrestore(&greth->devlock, flags);
greth             566 drivers/net/ethernet/aeroflex/greth.c 	for (i = 0; greth->tx_next + i != curr_tx; i++) {
greth             567 drivers/net/ethernet/aeroflex/greth.c 		bdp = greth->tx_bd_base + greth->tx_next + i;
greth             568 drivers/net/ethernet/aeroflex/greth.c 		dma_unmap_single(greth->dev,
greth             576 drivers/net/ethernet/aeroflex/greth.c 		dev_warn(greth->dev, "Could not create TX DMA mapping\n");
greth             585 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth;
greth             589 drivers/net/ethernet/aeroflex/greth.c 	greth = netdev_priv(dev);
greth             591 drivers/net/ethernet/aeroflex/greth.c 	spin_lock(&greth->devlock);
greth             594 drivers/net/ethernet/aeroflex/greth.c 	status = GRETH_REGLOAD(greth->regs->status);
greth             600 drivers/net/ethernet/aeroflex/greth.c 	ctrl = GRETH_REGLOAD(greth->regs->control);
greth             608 drivers/net/ethernet/aeroflex/greth.c 		greth_disable_irqs(greth);
greth             609 drivers/net/ethernet/aeroflex/greth.c 		napi_schedule(&greth->napi);
greth             612 drivers/net/ethernet/aeroflex/greth.c 	spin_unlock(&greth->devlock);
greth             619 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth;
greth             623 drivers/net/ethernet/aeroflex/greth.c 	greth = netdev_priv(dev);
greth             626 drivers/net/ethernet/aeroflex/greth.c 		bdp = greth->tx_bd_base + greth->tx_last;
greth             627 drivers/net/ethernet/aeroflex/greth.c 		GRETH_REGSAVE(greth->regs->status, GRETH_INT_TE | GRETH_INT_TX);
greth             634 drivers/net/ethernet/aeroflex/greth.c 		if (greth->tx_free == GRETH_TXBD_NUM)
greth             646 drivers/net/ethernet/aeroflex/greth.c 		dev->stats.tx_bytes += greth->tx_bufs_length[greth->tx_last];
greth             647 drivers/net/ethernet/aeroflex/greth.c 		greth->tx_last = NEXT_TX(greth->tx_last);
greth             648 drivers/net/ethernet/aeroflex/greth.c 		greth->tx_free++;
greth             651 drivers/net/ethernet/aeroflex/greth.c 	if (greth->tx_free > 0) {
greth             673 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth;
greth             680 drivers/net/ethernet/aeroflex/greth.c 	greth = netdev_priv(dev);
greth             681 drivers/net/ethernet/aeroflex/greth.c 	tx_last = greth->tx_last;
greth             683 drivers/net/ethernet/aeroflex/greth.c 	while (tx_last != greth->tx_next) {
greth             685 drivers/net/ethernet/aeroflex/greth.c 		skb = greth->tx_skbuff[tx_last];
greth             690 drivers/net/ethernet/aeroflex/greth.c 		bdp_last_frag = greth->tx_bd_base + SKIP_TX(tx_last, nr_frags);
greth             692 drivers/net/ethernet/aeroflex/greth.c 		GRETH_REGSAVE(greth->regs->status, GRETH_INT_TE | GRETH_INT_TX);
greth             699 drivers/net/ethernet/aeroflex/greth.c 		greth->tx_skbuff[tx_last] = NULL;
greth             704 drivers/net/ethernet/aeroflex/greth.c 		bdp = greth->tx_bd_base + tx_last;
greth             708 drivers/net/ethernet/aeroflex/greth.c 		dma_unmap_single(greth->dev,
greth             715 drivers/net/ethernet/aeroflex/greth.c 			bdp = greth->tx_bd_base + tx_last;
greth             717 drivers/net/ethernet/aeroflex/greth.c 			dma_unmap_page(greth->dev,
greth             728 drivers/net/ethernet/aeroflex/greth.c 		greth->tx_last = tx_last;
greth             731 drivers/net/ethernet/aeroflex/greth.c 		    (greth_num_free_bds(tx_last, greth->tx_next) >
greth             739 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth;
greth             747 drivers/net/ethernet/aeroflex/greth.c 	greth = netdev_priv(dev);
greth             751 drivers/net/ethernet/aeroflex/greth.c 		bdp = greth->rx_bd_base + greth->rx_cur;
greth             752 drivers/net/ethernet/aeroflex/greth.c 		GRETH_REGSAVE(greth->regs->status, GRETH_INT_RE | GRETH_INT_RX);
greth             797 drivers/net/ethernet/aeroflex/greth.c 				dma_sync_single_for_cpu(greth->dev,
greth             802 drivers/net/ethernet/aeroflex/greth.c 				if (netif_msg_pktdata(greth))
greth             816 drivers/net/ethernet/aeroflex/greth.c 		if (greth->rx_cur == GRETH_RXBD_NUM_MASK) {
greth             823 drivers/net/ethernet/aeroflex/greth.c 		dma_sync_single_for_device(greth->dev, dma_addr, MAX_FRAME_SIZE, DMA_FROM_DEVICE);
greth             825 drivers/net/ethernet/aeroflex/greth.c 		spin_lock_irqsave(&greth->devlock, flags); /* save from XMIT */
greth             826 drivers/net/ethernet/aeroflex/greth.c 		greth_enable_rx(greth);
greth             827 drivers/net/ethernet/aeroflex/greth.c 		spin_unlock_irqrestore(&greth->devlock, flags);
greth             829 drivers/net/ethernet/aeroflex/greth.c 		greth->rx_cur = NEXT_RX(greth->rx_cur);
greth             855 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth;
greth             863 drivers/net/ethernet/aeroflex/greth.c 	greth = netdev_priv(dev);
greth             867 drivers/net/ethernet/aeroflex/greth.c 		bdp = greth->rx_bd_base + greth->rx_cur;
greth             868 drivers/net/ethernet/aeroflex/greth.c 		skb = greth->rx_skbuff[greth->rx_cur];
greth             869 drivers/net/ethernet/aeroflex/greth.c 		GRETH_REGSAVE(greth->regs->status, GRETH_INT_RE | GRETH_INT_RX);
greth             898 drivers/net/ethernet/aeroflex/greth.c 			dma_addr = dma_map_single(greth->dev,
greth             903 drivers/net/ethernet/aeroflex/greth.c 			if (!dma_mapping_error(greth->dev, dma_addr)) {
greth             907 drivers/net/ethernet/aeroflex/greth.c 				dma_unmap_single(greth->dev,
greth             912 drivers/net/ethernet/aeroflex/greth.c 				if (netif_msg_pktdata(greth))
greth             927 drivers/net/ethernet/aeroflex/greth.c 				greth->rx_skbuff[greth->rx_cur] = newskb;
greth             931 drivers/net/ethernet/aeroflex/greth.c 					dev_warn(greth->dev, "Could not create DMA mapping, dropping packet\n");
greth             947 drivers/net/ethernet/aeroflex/greth.c 				dev_warn(greth->dev, "Could not allocate SKB, dropping packet\n");
greth             953 drivers/net/ethernet/aeroflex/greth.c 		if (greth->rx_cur == GRETH_RXBD_NUM_MASK) {
greth             959 drivers/net/ethernet/aeroflex/greth.c 		spin_lock_irqsave(&greth->devlock, flags);
greth             960 drivers/net/ethernet/aeroflex/greth.c 		greth_enable_rx(greth);
greth             961 drivers/net/ethernet/aeroflex/greth.c 		spin_unlock_irqrestore(&greth->devlock, flags);
greth             962 drivers/net/ethernet/aeroflex/greth.c 		greth->rx_cur = NEXT_RX(greth->rx_cur);
greth             971 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth;
greth             975 drivers/net/ethernet/aeroflex/greth.c 	greth = container_of(napi, struct greth_private, napi);
greth             978 drivers/net/ethernet/aeroflex/greth.c 	if (greth->gbit_mac) {
greth             979 drivers/net/ethernet/aeroflex/greth.c 		greth_clean_tx_gbit(greth->netdev);
greth             980 drivers/net/ethernet/aeroflex/greth.c 		work_done += greth_rx_gbit(greth->netdev, budget - work_done);
greth             982 drivers/net/ethernet/aeroflex/greth.c 		if (netif_queue_stopped(greth->netdev))
greth             983 drivers/net/ethernet/aeroflex/greth.c 			greth_clean_tx(greth->netdev);
greth             984 drivers/net/ethernet/aeroflex/greth.c 		work_done += greth_rx(greth->netdev, budget - work_done);
greth             989 drivers/net/ethernet/aeroflex/greth.c 		spin_lock_irqsave(&greth->devlock, flags);
greth             991 drivers/net/ethernet/aeroflex/greth.c 		ctrl = GRETH_REGLOAD(greth->regs->control);
greth             992 drivers/net/ethernet/aeroflex/greth.c 		if ((greth->gbit_mac && (greth->tx_last != greth->tx_next)) ||
greth             993 drivers/net/ethernet/aeroflex/greth.c 		    (!greth->gbit_mac && netif_queue_stopped(greth->netdev))) {
greth             994 drivers/net/ethernet/aeroflex/greth.c 			GRETH_REGSAVE(greth->regs->control,
greth             999 drivers/net/ethernet/aeroflex/greth.c 			GRETH_REGSAVE(greth->regs->control, ctrl | GRETH_RXI);
greth            1003 drivers/net/ethernet/aeroflex/greth.c 		if (GRETH_REGLOAD(greth->regs->status) & mask) {
greth            1004 drivers/net/ethernet/aeroflex/greth.c 			GRETH_REGSAVE(greth->regs->control, ctrl);
greth            1005 drivers/net/ethernet/aeroflex/greth.c 			spin_unlock_irqrestore(&greth->devlock, flags);
greth            1009 drivers/net/ethernet/aeroflex/greth.c 			spin_unlock_irqrestore(&greth->devlock, flags);
greth            1019 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth;
greth            1022 drivers/net/ethernet/aeroflex/greth.c 	greth = netdev_priv(dev);
greth            1023 drivers/net/ethernet/aeroflex/greth.c 	regs = greth->regs;
greth            1044 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = netdev_priv(dev);
greth            1045 drivers/net/ethernet/aeroflex/greth.c 	struct greth_regs *regs = greth->regs;
greth            1063 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = netdev_priv(dev);
greth            1064 drivers/net/ethernet/aeroflex/greth.c 	struct greth_regs *regs = greth->regs;
greth            1072 drivers/net/ethernet/aeroflex/greth.c 	if (greth->multicast) {
greth            1096 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = netdev_priv(dev);
greth            1097 drivers/net/ethernet/aeroflex/greth.c 	return greth->msg_enable;
greth            1102 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = netdev_priv(dev);
greth            1103 drivers/net/ethernet/aeroflex/greth.c 	greth->msg_enable = value;
greth            1113 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = netdev_priv(dev);
greth            1115 drivers/net/ethernet/aeroflex/greth.c 	strlcpy(info->driver, dev_driver_string(greth->dev),
greth            1118 drivers/net/ethernet/aeroflex/greth.c 	strlcpy(info->bus_info, greth->dev->bus->name, sizeof(info->bus_info));
greth            1125 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = netdev_priv(dev);
greth            1126 drivers/net/ethernet/aeroflex/greth.c 	u32 __iomem *greth_regs = (u32 __iomem *) greth->regs;
greth            1152 drivers/net/ethernet/aeroflex/greth.c static inline int wait_for_mdio(struct greth_private *greth)
greth            1155 drivers/net/ethernet/aeroflex/greth.c 	while (GRETH_REGLOAD(greth->regs->mdio) & GRETH_MII_BUSY) {
greth            1164 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = bus->priv;
greth            1167 drivers/net/ethernet/aeroflex/greth.c 	if (!wait_for_mdio(greth))
greth            1170 drivers/net/ethernet/aeroflex/greth.c 	GRETH_REGSAVE(greth->regs->mdio, ((phy & 0x1F) << 11) | ((reg & 0x1F) << 6) | 2);
greth            1172 drivers/net/ethernet/aeroflex/greth.c 	if (!wait_for_mdio(greth))
greth            1175 drivers/net/ethernet/aeroflex/greth.c 	if (!(GRETH_REGLOAD(greth->regs->mdio) & GRETH_MII_NVALID)) {
greth            1176 drivers/net/ethernet/aeroflex/greth.c 		data = (GRETH_REGLOAD(greth->regs->mdio) >> 16) & 0xFFFF;
greth            1186 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = bus->priv;
greth            1188 drivers/net/ethernet/aeroflex/greth.c 	if (!wait_for_mdio(greth))
greth            1191 drivers/net/ethernet/aeroflex/greth.c 	GRETH_REGSAVE(greth->regs->mdio,
greth            1194 drivers/net/ethernet/aeroflex/greth.c 	if (!wait_for_mdio(greth))
greth            1202 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = netdev_priv(dev);
greth            1208 drivers/net/ethernet/aeroflex/greth.c 	spin_lock_irqsave(&greth->devlock, flags);
greth            1212 drivers/net/ethernet/aeroflex/greth.c 		if ((greth->speed != phydev->speed) || (greth->duplex != phydev->duplex)) {
greth            1213 drivers/net/ethernet/aeroflex/greth.c 			ctrl = GRETH_REGLOAD(greth->regs->control) &
greth            1224 drivers/net/ethernet/aeroflex/greth.c 			GRETH_REGSAVE(greth->regs->control, ctrl);
greth            1225 drivers/net/ethernet/aeroflex/greth.c 			greth->speed = phydev->speed;
greth            1226 drivers/net/ethernet/aeroflex/greth.c 			greth->duplex = phydev->duplex;
greth            1231 drivers/net/ethernet/aeroflex/greth.c 	if (phydev->link != greth->link) {
greth            1233 drivers/net/ethernet/aeroflex/greth.c 			greth->speed = 0;
greth            1234 drivers/net/ethernet/aeroflex/greth.c 			greth->duplex = -1;
greth            1236 drivers/net/ethernet/aeroflex/greth.c 		greth->link = phydev->link;
greth            1241 drivers/net/ethernet/aeroflex/greth.c 	spin_unlock_irqrestore(&greth->devlock, flags);
greth            1255 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = netdev_priv(dev);
greth            1260 drivers/net/ethernet/aeroflex/greth.c 	phy = phy_find_first(greth->mdio);
greth            1263 drivers/net/ethernet/aeroflex/greth.c 		if (netif_msg_probe(greth))
greth            1269 drivers/net/ethernet/aeroflex/greth.c 				 greth->gbit_mac ? PHY_INTERFACE_MODE_GMII : PHY_INTERFACE_MODE_MII);
greth            1271 drivers/net/ethernet/aeroflex/greth.c 		if (netif_msg_ifup(greth))
greth            1276 drivers/net/ethernet/aeroflex/greth.c 	if (greth->gbit_mac)
greth            1283 drivers/net/ethernet/aeroflex/greth.c 	greth->link = 0;
greth            1284 drivers/net/ethernet/aeroflex/greth.c 	greth->speed = 0;
greth            1285 drivers/net/ethernet/aeroflex/greth.c 	greth->duplex = -1;
greth            1290 drivers/net/ethernet/aeroflex/greth.c static int greth_mdio_init(struct greth_private *greth)
greth            1294 drivers/net/ethernet/aeroflex/greth.c 	struct net_device *ndev = greth->netdev;
greth            1296 drivers/net/ethernet/aeroflex/greth.c 	greth->mdio = mdiobus_alloc();
greth            1297 drivers/net/ethernet/aeroflex/greth.c 	if (!greth->mdio) {
greth            1301 drivers/net/ethernet/aeroflex/greth.c 	greth->mdio->name = "greth-mdio";
greth            1302 drivers/net/ethernet/aeroflex/greth.c 	snprintf(greth->mdio->id, MII_BUS_ID_SIZE, "%s-%d", greth->mdio->name, greth->irq);
greth            1303 drivers/net/ethernet/aeroflex/greth.c 	greth->mdio->read = greth_mdio_read;
greth            1304 drivers/net/ethernet/aeroflex/greth.c 	greth->mdio->write = greth_mdio_write;
greth            1305 drivers/net/ethernet/aeroflex/greth.c 	greth->mdio->priv = greth;
greth            1307 drivers/net/ethernet/aeroflex/greth.c 	ret = mdiobus_register(greth->mdio);
greth            1312 drivers/net/ethernet/aeroflex/greth.c 	ret = greth_mdio_probe(greth->netdev);
greth            1314 drivers/net/ethernet/aeroflex/greth.c 		if (netif_msg_probe(greth))
greth            1315 drivers/net/ethernet/aeroflex/greth.c 			dev_err(&greth->netdev->dev, "failed to probe MDIO bus\n");
greth            1322 drivers/net/ethernet/aeroflex/greth.c 	if (greth->edcl && greth_edcl == 1) {
greth            1329 drivers/net/ethernet/aeroflex/greth.c 		greth_link_change(greth->netdev);
greth            1335 drivers/net/ethernet/aeroflex/greth.c 	mdiobus_unregister(greth->mdio);
greth            1337 drivers/net/ethernet/aeroflex/greth.c 	mdiobus_free(greth->mdio);
greth            1345 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth;
greth            1358 drivers/net/ethernet/aeroflex/greth.c 	greth = netdev_priv(dev);
greth            1359 drivers/net/ethernet/aeroflex/greth.c 	greth->netdev = dev;
greth            1360 drivers/net/ethernet/aeroflex/greth.c 	greth->dev = &ofdev->dev;
greth            1363 drivers/net/ethernet/aeroflex/greth.c 		greth->msg_enable = greth_debug;
greth            1365 drivers/net/ethernet/aeroflex/greth.c 		greth->msg_enable = GRETH_DEF_MSG_ENABLE;
greth            1367 drivers/net/ethernet/aeroflex/greth.c 	spin_lock_init(&greth->devlock);
greth            1369 drivers/net/ethernet/aeroflex/greth.c 	greth->regs = of_ioremap(&ofdev->resource[0], 0,
greth            1373 drivers/net/ethernet/aeroflex/greth.c 	if (greth->regs == NULL) {
greth            1374 drivers/net/ethernet/aeroflex/greth.c 		if (netif_msg_probe(greth))
greth            1375 drivers/net/ethernet/aeroflex/greth.c 			dev_err(greth->dev, "ioremap failure.\n");
greth            1380 drivers/net/ethernet/aeroflex/greth.c 	regs = greth->regs;
greth            1381 drivers/net/ethernet/aeroflex/greth.c 	greth->irq = ofdev->archdata.irqs[0];
greth            1383 drivers/net/ethernet/aeroflex/greth.c 	dev_set_drvdata(greth->dev, dev);
greth            1384 drivers/net/ethernet/aeroflex/greth.c 	SET_NETDEV_DEV(dev, greth->dev);
greth            1386 drivers/net/ethernet/aeroflex/greth.c 	if (netif_msg_probe(greth))
greth            1387 drivers/net/ethernet/aeroflex/greth.c 		dev_dbg(greth->dev, "resetting controller.\n");
greth            1397 drivers/net/ethernet/aeroflex/greth.c 			if (netif_msg_probe(greth))
greth            1398 drivers/net/ethernet/aeroflex/greth.c 				dev_err(greth->dev, "timeout when waiting for reset.\n");
greth            1404 drivers/net/ethernet/aeroflex/greth.c 	greth->phyaddr = (GRETH_REGLOAD(regs->mdio) >> 11) & 0x1F;
greth            1408 drivers/net/ethernet/aeroflex/greth.c 	greth->gbit_mac = (tmp >> 27) & 1;
greth            1411 drivers/net/ethernet/aeroflex/greth.c 	greth->multicast = (tmp >> 25) & 1;
greth            1413 drivers/net/ethernet/aeroflex/greth.c 	greth->edcl = (tmp >> 31) & 1;
greth            1417 drivers/net/ethernet/aeroflex/greth.c 	if (greth->edcl != 0)
greth            1421 drivers/net/ethernet/aeroflex/greth.c 	greth->mdio_int_en = (tmp >> 26) & 1;
greth            1423 drivers/net/ethernet/aeroflex/greth.c 	err = greth_mdio_init(greth);
greth            1425 drivers/net/ethernet/aeroflex/greth.c 		if (netif_msg_probe(greth))
greth            1426 drivers/net/ethernet/aeroflex/greth.c 			dev_err(greth->dev, "failed to register MDIO bus\n");
greth            1431 drivers/net/ethernet/aeroflex/greth.c 	greth->tx_bd_base = dma_alloc_coherent(greth->dev, 1024,
greth            1432 drivers/net/ethernet/aeroflex/greth.c 					       &greth->tx_bd_base_phys,
greth            1434 drivers/net/ethernet/aeroflex/greth.c 	if (!greth->tx_bd_base) {
greth            1440 drivers/net/ethernet/aeroflex/greth.c 	greth->rx_bd_base = dma_alloc_coherent(greth->dev, 1024,
greth            1441 drivers/net/ethernet/aeroflex/greth.c 					       &greth->rx_bd_base_phys,
greth            1443 drivers/net/ethernet/aeroflex/greth.c 	if (!greth->rx_bd_base) {
greth            1474 drivers/net/ethernet/aeroflex/greth.c 		if (netif_msg_probe(greth))
greth            1475 drivers/net/ethernet/aeroflex/greth.c 			dev_err(greth->dev, "no valid ethernet address, aborting.\n");
greth            1487 drivers/net/ethernet/aeroflex/greth.c 	if (greth->gbit_mac) {
greth            1494 drivers/net/ethernet/aeroflex/greth.c 	if (greth->multicast) {
greth            1506 drivers/net/ethernet/aeroflex/greth.c 		if (netif_msg_probe(greth))
greth            1507 drivers/net/ethernet/aeroflex/greth.c 			dev_err(greth->dev, "netdevice registration failed.\n");
greth            1512 drivers/net/ethernet/aeroflex/greth.c 	netif_napi_add(dev, &greth->napi, greth_poll, 64);
greth            1517 drivers/net/ethernet/aeroflex/greth.c 	dma_free_coherent(greth->dev, 1024, greth->rx_bd_base, greth->rx_bd_base_phys);
greth            1519 drivers/net/ethernet/aeroflex/greth.c 	dma_free_coherent(greth->dev, 1024, greth->tx_bd_base, greth->tx_bd_base_phys);
greth            1521 drivers/net/ethernet/aeroflex/greth.c 	mdiobus_unregister(greth->mdio);
greth            1523 drivers/net/ethernet/aeroflex/greth.c 	of_iounmap(&ofdev->resource[0], greth->regs, resource_size(&ofdev->resource[0]));
greth            1532 drivers/net/ethernet/aeroflex/greth.c 	struct greth_private *greth = netdev_priv(ndev);
greth            1535 drivers/net/ethernet/aeroflex/greth.c 	dma_free_coherent(&of_dev->dev, 1024, greth->rx_bd_base, greth->rx_bd_base_phys);
greth            1537 drivers/net/ethernet/aeroflex/greth.c 	dma_free_coherent(&of_dev->dev, 1024, greth->tx_bd_base, greth->tx_bd_base_phys);
greth            1541 drivers/net/ethernet/aeroflex/greth.c 	mdiobus_unregister(greth->mdio);
greth            1546 drivers/net/ethernet/aeroflex/greth.c 	of_iounmap(&of_dev->resource[0], greth->regs, resource_size(&of_dev->resource[0]));