Lines Matching full:db
95 struct emac_board_info *db = netdev_priv(dev); in emac_update_speed() local
99 reg_val = readl(db->membase + EMAC_MAC_SUPP_REG); in emac_update_speed()
101 if (db->speed == SPEED_100) in emac_update_speed()
103 writel(reg_val, db->membase + EMAC_MAC_SUPP_REG); in emac_update_speed()
108 struct emac_board_info *db = netdev_priv(dev); in emac_update_duplex() local
112 reg_val = readl(db->membase + EMAC_MAC_CTL1_REG); in emac_update_duplex()
114 if (db->duplex) in emac_update_duplex()
116 writel(reg_val, db->membase + EMAC_MAC_CTL1_REG); in emac_update_duplex()
121 struct emac_board_info *db = netdev_priv(dev); in emac_handle_link_change() local
127 if (db->speed != phydev->speed) { in emac_handle_link_change()
128 spin_lock_irqsave(&db->lock, flags); in emac_handle_link_change()
129 db->speed = phydev->speed; in emac_handle_link_change()
131 spin_unlock_irqrestore(&db->lock, flags); in emac_handle_link_change()
135 if (db->duplex != phydev->duplex) { in emac_handle_link_change()
136 spin_lock_irqsave(&db->lock, flags); in emac_handle_link_change()
137 db->duplex = phydev->duplex; in emac_handle_link_change()
139 spin_unlock_irqrestore(&db->lock, flags); in emac_handle_link_change()
144 if (phydev->link != db->link) { in emac_handle_link_change()
146 db->speed = 0; in emac_handle_link_change()
147 db->duplex = -1; in emac_handle_link_change()
149 db->link = phydev->link; in emac_handle_link_change()
160 struct emac_board_info *db = netdev_priv(dev); in emac_mdio_probe() local
166 phydev = of_phy_connect(db->ndev, db->phy_node, in emac_mdio_probe()
168 db->phy_interface); in emac_mdio_probe()
170 netdev_err(db->ndev, "could not find the PHY\n"); in emac_mdio_probe()
178 db->link = 0; in emac_mdio_probe()
179 db->speed = 0; in emac_mdio_probe()
180 db->duplex = -1; in emac_mdio_probe()
190 static void emac_reset(struct emac_board_info *db) in emac_reset() argument
192 dev_dbg(db->dev, "resetting device\n"); in emac_reset()
195 writel(0, db->membase + EMAC_CTL_REG); in emac_reset()
197 writel(EMAC_CTL_RESET, db->membase + EMAC_CTL_REG); in emac_reset()
235 struct emac_board_info *db = netdev_priv(dev); in emac_get_msglevel() local
237 return db->msg_enable; in emac_get_msglevel()
242 struct emac_board_info *db = netdev_priv(dev); in emac_set_msglevel() local
244 db->msg_enable = value; in emac_set_msglevel()
258 struct emac_board_info *db = netdev_priv(ndev); in emac_setup() local
262 reg_val = readl(db->membase + EMAC_TX_MODE_REG); in emac_setup()
265 db->membase + EMAC_TX_MODE_REG); in emac_setup()
269 reg_val = readl(db->membase + EMAC_MAC_CTL0_REG); in emac_setup()
272 db->membase + EMAC_MAC_CTL0_REG); in emac_setup()
275 reg_val = readl(db->membase + EMAC_MAC_CTL1_REG); in emac_setup()
279 writel(reg_val, db->membase + EMAC_MAC_CTL1_REG); in emac_setup()
282 writel(EMAC_MAC_IPGT_FULL_DUPLEX, db->membase + EMAC_MAC_IPGT_REG); in emac_setup()
286 db->membase + EMAC_MAC_IPGR_REG); in emac_setup()
290 db->membase + EMAC_MAC_CLRT_REG); in emac_setup()
294 db->membase + EMAC_MAC_MAXF_REG); in emac_setup()
301 struct emac_board_info *db = netdev_priv(ndev); in emac_set_rx_mode() local
305 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_set_rx_mode()
316 db->membase + EMAC_RX_CTL_REG); in emac_set_rx_mode()
321 struct emac_board_info *db = netdev_priv(ndev); in emac_powerup() local
326 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_powerup()
328 writel(reg_val, db->membase + EMAC_RX_CTL_REG); in emac_powerup()
333 reg_val = readl(db->membase + EMAC_MAC_CTL0_REG); in emac_powerup()
335 writel(reg_val, db->membase + EMAC_MAC_CTL0_REG); in emac_powerup()
338 reg_val = readl(db->membase + EMAC_MAC_MCFG_REG); in emac_powerup()
341 writel(reg_val, db->membase + EMAC_MAC_MCFG_REG); in emac_powerup()
344 writel(0x0, db->membase + EMAC_RX_FBC_REG); in emac_powerup()
347 writel(0, db->membase + EMAC_INT_CTL_REG); in emac_powerup()
348 reg_val = readl(db->membase + EMAC_INT_STA_REG); in emac_powerup()
349 writel(reg_val, db->membase + EMAC_INT_STA_REG); in emac_powerup()
358 dev_addr[2], db->membase + EMAC_MAC_A1_REG); in emac_powerup()
360 dev_addr[5], db->membase + EMAC_MAC_A0_REG); in emac_powerup()
370 struct emac_board_info *db = netdev_priv(dev); in emac_set_mac_address() local
378 dev_addr[2], db->membase + EMAC_MAC_A1_REG); in emac_set_mac_address()
380 dev_addr[5], db->membase + EMAC_MAC_A0_REG); in emac_set_mac_address()
388 struct emac_board_info *db = netdev_priv(dev); in emac_init_device() local
392 spin_lock_irqsave(&db->lock, flags); in emac_init_device()
398 reg_val = readl(db->membase + EMAC_CTL_REG); in emac_init_device()
400 db->membase + EMAC_CTL_REG); in emac_init_device()
403 reg_val = readl(db->membase + EMAC_INT_CTL_REG); in emac_init_device()
405 writel(reg_val, db->membase + EMAC_INT_CTL_REG); in emac_init_device()
407 spin_unlock_irqrestore(&db->lock, flags); in emac_init_device()
413 struct emac_board_info *db = netdev_priv(dev); in emac_timeout() local
416 if (netif_msg_timer(db)) in emac_timeout()
417 dev_err(db->dev, "tx time out.\n"); in emac_timeout()
420 spin_lock_irqsave(&db->lock, flags); in emac_timeout()
423 emac_reset(db); in emac_timeout()
430 spin_unlock_irqrestore(&db->lock, flags); in emac_timeout()
438 struct emac_board_info *db = netdev_priv(dev); in emac_start_xmit() local
442 channel = db->tx_fifo_stat & 3; in emac_start_xmit()
448 spin_lock_irqsave(&db->lock, flags); in emac_start_xmit()
450 writel(channel, db->membase + EMAC_TX_INS_REG); in emac_start_xmit()
452 emac_outblk_32bit(db->membase + EMAC_TX_IO_DATA_REG, in emac_start_xmit()
456 db->tx_fifo_stat |= 1 << channel; in emac_start_xmit()
460 writel(skb->len, db->membase + EMAC_TX_PL0_REG); in emac_start_xmit()
462 writel(readl(db->membase + EMAC_TX_CTL0_REG) | 1, in emac_start_xmit()
463 db->membase + EMAC_TX_CTL0_REG); in emac_start_xmit()
469 writel(skb->len, db->membase + EMAC_TX_PL1_REG); in emac_start_xmit()
471 writel(readl(db->membase + EMAC_TX_CTL1_REG) | 1, in emac_start_xmit()
472 db->membase + EMAC_TX_CTL1_REG); in emac_start_xmit()
478 if ((db->tx_fifo_stat & 3) == 3) { in emac_start_xmit()
483 spin_unlock_irqrestore(&db->lock, flags); in emac_start_xmit()
494 static void emac_tx_done(struct net_device *dev, struct emac_board_info *db, in emac_tx_done() argument
498 db->tx_fifo_stat &= ~(tx_status & 3); in emac_tx_done()
504 if (netif_msg_tx_done(db)) in emac_tx_done()
505 dev_dbg(db->dev, "tx done, NSR %02x\n", tx_status); in emac_tx_done()
514 struct emac_board_info *db = netdev_priv(dev); in emac_rx() local
528 rxcount = readl(db->membase + EMAC_RX_FBC_REG); in emac_rx()
530 if (netif_msg_rx_status(db)) in emac_rx()
531 dev_dbg(db->dev, "RXCount: %x\n", rxcount); in emac_rx()
533 if ((db->skb_last != NULL) && (rxlen_last > 0)) { in emac_rx()
537 db->skb_last->protocol = eth_type_trans(db->skb_last, in emac_rx()
539 netif_rx(db->skb_last); in emac_rx()
541 db->skb_last = NULL; in emac_rx()
544 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_rx()
546 writel(reg_val, db->membase + EMAC_RX_CTL_REG); in emac_rx()
550 db->emacrx_completed_flag = 1; in emac_rx()
551 reg_val = readl(db->membase + EMAC_INT_CTL_REG); in emac_rx()
553 writel(reg_val, db->membase + EMAC_INT_CTL_REG); in emac_rx()
556 rxcount = readl(db->membase + EMAC_RX_FBC_REG); in emac_rx()
561 reg_val = readl(db->membase + EMAC_RX_IO_DATA_REG); in emac_rx()
562 if (netif_msg_rx_status(db)) in emac_rx()
563 dev_dbg(db->dev, "receive header: %x\n", reg_val); in emac_rx()
566 reg_val = readl(db->membase + EMAC_CTL_REG); in emac_rx()
568 db->membase + EMAC_CTL_REG); in emac_rx()
571 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_rx()
573 db->membase + EMAC_RX_CTL_REG); in emac_rx()
576 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_rx()
580 reg_val = readl(db->membase + EMAC_CTL_REG); in emac_rx()
582 db->membase + EMAC_CTL_REG); in emac_rx()
583 reg_val = readl(db->membase + EMAC_INT_CTL_REG); in emac_rx()
585 writel(reg_val, db->membase + EMAC_INT_CTL_REG); in emac_rx()
587 db->emacrx_completed_flag = 1; in emac_rx()
595 rxhdr = readl(db->membase + EMAC_RX_IO_DATA_REG); in emac_rx()
597 if (netif_msg_rx_status(db)) in emac_rx()
598 dev_dbg(db->dev, "rxhdr: %x\n", *((int *)(&rxhdr))); in emac_rx()
603 if (netif_msg_rx_status(db)) in emac_rx()
604 dev_dbg(db->dev, "RX: status %02x, length %04x\n", in emac_rx()
610 if (netif_msg_rx_err(db)) in emac_rx()
611 dev_dbg(db->dev, "RX: Bad Packet (runt)\n"); in emac_rx()
618 if (netif_msg_rx_err(db)) in emac_rx()
619 dev_dbg(db->dev, "crc error\n"); in emac_rx()
624 if (netif_msg_rx_err(db)) in emac_rx()
625 dev_dbg(db->dev, "length error\n"); in emac_rx()
639 if (netif_msg_rx_status(db)) in emac_rx()
640 dev_dbg(db->dev, "RxLen %x\n", rxlen); in emac_rx()
642 emac_inblk_32bit(db->membase + EMAC_RX_IO_DATA_REG, in emac_rx()
657 struct emac_board_info *db = netdev_priv(dev); in emac_interrupt() local
664 /* holders of db->lock must always block IRQs */ in emac_interrupt()
665 spin_lock_irqsave(&db->lock, flags); in emac_interrupt()
668 writel(0, db->membase + EMAC_INT_CTL_REG); in emac_interrupt()
672 int_status = readl(db->membase + EMAC_INT_STA_REG); in emac_interrupt()
674 writel(int_status, db->membase + EMAC_INT_STA_REG); in emac_interrupt()
676 if (netif_msg_intr(db)) in emac_interrupt()
677 dev_dbg(db->dev, "emac interrupt %02x\n", int_status); in emac_interrupt()
680 if ((int_status & 0x100) && (db->emacrx_completed_flag == 1)) { in emac_interrupt()
682 db->emacrx_completed_flag = 0; in emac_interrupt()
688 emac_tx_done(dev, db, int_status); in emac_interrupt()
694 if (db->emacrx_completed_flag == 1) { in emac_interrupt()
695 reg_val = readl(db->membase + EMAC_INT_CTL_REG); in emac_interrupt()
697 writel(reg_val, db->membase + EMAC_INT_CTL_REG); in emac_interrupt()
699 spin_unlock_irqrestore(&db->lock, flags); in emac_interrupt()
721 struct emac_board_info *db = netdev_priv(dev); in emac_open() local
724 if (netif_msg_ifup(db)) in emac_open()
725 dev_dbg(db->dev, "enabling %s\n", dev->name); in emac_open()
731 emac_reset(db); in emac_open()
750 struct emac_board_info *db = netdev_priv(dev); in emac_shutdown() local
753 writel(0, db->membase + EMAC_INT_CTL_REG); in emac_shutdown()
756 reg_val = readl(db->membase + EMAC_INT_STA_REG); in emac_shutdown()
757 writel(reg_val, db->membase + EMAC_INT_STA_REG); in emac_shutdown()
760 reg_val = readl(db->membase + EMAC_CTL_REG); in emac_shutdown()
762 writel(reg_val, db->membase + EMAC_CTL_REG); in emac_shutdown()
770 struct emac_board_info *db = netdev_priv(ndev); in emac_stop() local
772 if (netif_msg_ifdown(db)) in emac_stop()
773 dev_dbg(db->dev, "shutting down %s\n", ndev->name); in emac_stop()
808 struct emac_board_info *db; in emac_probe() local
821 db = netdev_priv(ndev); in emac_probe()
822 memset(db, 0, sizeof(*db)); in emac_probe()
824 db->dev = &pdev->dev; in emac_probe()
825 db->ndev = ndev; in emac_probe()
826 db->pdev = pdev; in emac_probe()
827 db->msg_enable = netif_msg_init(debug, EMAC_DEFAULT_MSG_ENABLE); in emac_probe()
829 spin_lock_init(&db->lock); in emac_probe()
831 db->membase = of_iomap(np, 0); in emac_probe()
832 if (!db->membase) { in emac_probe()
839 ndev->base_addr = (unsigned long)db->membase; in emac_probe()
847 db->clk = devm_clk_get(&pdev->dev, NULL); in emac_probe()
848 if (IS_ERR(db->clk)) { in emac_probe()
849 ret = PTR_ERR(db->clk); in emac_probe()
853 ret = clk_prepare_enable(db->clk); in emac_probe()
865 db->phy_node = of_parse_phandle(np, "phy", 0); in emac_probe()
866 if (!db->phy_node) { in emac_probe()
884 db->emacrx_completed_flag = 1; in emac_probe()
886 emac_reset(db); in emac_probe()
905 ndev->name, db->membase, ndev->irq, ndev->dev_addr); in emac_probe()
912 clk_disable_unprepare(db->clk); in emac_probe()
914 iounmap(db->membase); in emac_probe()
916 dev_err(db->dev, "not found (%d).\n", ret); in emac_probe()
926 struct emac_board_info *db = netdev_priv(ndev); in emac_remove() local
930 clk_disable_unprepare(db->clk); in emac_remove()
931 iounmap(db->membase); in emac_remove()
952 struct emac_board_info *db = netdev_priv(ndev); in emac_resume() local
954 emac_reset(db); in emac_resume()