Lines Matching refs:db

91 	struct emac_board_info *db = netdev_priv(dev);  in emac_update_speed()  local
95 reg_val = readl(db->membase + EMAC_MAC_SUPP_REG); in emac_update_speed()
97 if (db->speed == SPEED_100) in emac_update_speed()
99 writel(reg_val, db->membase + EMAC_MAC_SUPP_REG); in emac_update_speed()
104 struct emac_board_info *db = netdev_priv(dev); in emac_update_duplex() local
108 reg_val = readl(db->membase + EMAC_MAC_CTL1_REG); in emac_update_duplex()
110 if (db->duplex) in emac_update_duplex()
112 writel(reg_val, db->membase + EMAC_MAC_CTL1_REG); in emac_update_duplex()
117 struct emac_board_info *db = netdev_priv(dev); in emac_handle_link_change() local
118 struct phy_device *phydev = db->phy_dev; in emac_handle_link_change()
123 if (db->speed != phydev->speed) { in emac_handle_link_change()
124 spin_lock_irqsave(&db->lock, flags); in emac_handle_link_change()
125 db->speed = phydev->speed; in emac_handle_link_change()
127 spin_unlock_irqrestore(&db->lock, flags); in emac_handle_link_change()
131 if (db->duplex != phydev->duplex) { in emac_handle_link_change()
132 spin_lock_irqsave(&db->lock, flags); in emac_handle_link_change()
133 db->duplex = phydev->duplex; in emac_handle_link_change()
135 spin_unlock_irqrestore(&db->lock, flags); in emac_handle_link_change()
140 if (phydev->link != db->link) { in emac_handle_link_change()
142 db->speed = 0; in emac_handle_link_change()
143 db->duplex = -1; in emac_handle_link_change()
145 db->link = phydev->link; in emac_handle_link_change()
156 struct emac_board_info *db = netdev_priv(dev); in emac_mdio_probe() local
161 db->phy_dev = of_phy_connect(db->ndev, db->phy_node, in emac_mdio_probe()
163 db->phy_interface); in emac_mdio_probe()
164 if (!db->phy_dev) { in emac_mdio_probe()
165 netdev_err(db->ndev, "could not find the PHY\n"); in emac_mdio_probe()
170 db->phy_dev->supported &= PHY_BASIC_FEATURES; in emac_mdio_probe()
171 db->phy_dev->advertising = db->phy_dev->supported; in emac_mdio_probe()
173 db->link = 0; in emac_mdio_probe()
174 db->speed = 0; in emac_mdio_probe()
175 db->duplex = -1; in emac_mdio_probe()
182 struct emac_board_info *db = netdev_priv(dev); in emac_mdio_remove() local
184 phy_disconnect(db->phy_dev); in emac_mdio_remove()
185 db->phy_dev = NULL; in emac_mdio_remove()
188 static void emac_reset(struct emac_board_info *db) in emac_reset() argument
190 dev_dbg(db->dev, "resetting device\n"); in emac_reset()
193 writel(0, db->membase + EMAC_CTL_REG); in emac_reset()
195 writel(EMAC_CTL_RESET, db->membase + EMAC_CTL_REG); in emac_reset()
263 struct emac_board_info *db = netdev_priv(ndev); in emac_setup() local
267 reg_val = readl(db->membase + EMAC_TX_MODE_REG); in emac_setup()
270 db->membase + EMAC_TX_MODE_REG); in emac_setup()
274 reg_val = readl(db->membase + EMAC_MAC_CTL0_REG); in emac_setup()
277 db->membase + EMAC_MAC_CTL0_REG); in emac_setup()
280 reg_val = readl(db->membase + EMAC_MAC_CTL1_REG); in emac_setup()
284 writel(reg_val, db->membase + EMAC_MAC_CTL1_REG); in emac_setup()
287 writel(EMAC_MAC_IPGT_FULL_DUPLEX, db->membase + EMAC_MAC_IPGT_REG); in emac_setup()
291 db->membase + EMAC_MAC_IPGR_REG); in emac_setup()
295 db->membase + EMAC_MAC_CLRT_REG); in emac_setup()
299 db->membase + EMAC_MAC_MAXF_REG); in emac_setup()
306 struct emac_board_info *db = netdev_priv(ndev); in emac_set_rx_mode() local
310 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_set_rx_mode()
321 db->membase + EMAC_RX_CTL_REG); in emac_set_rx_mode()
326 struct emac_board_info *db = netdev_priv(ndev); in emac_powerup() local
331 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_powerup()
333 writel(reg_val, db->membase + EMAC_RX_CTL_REG); in emac_powerup()
338 reg_val = readl(db->membase + EMAC_MAC_CTL0_REG); in emac_powerup()
340 writel(reg_val, db->membase + EMAC_MAC_CTL0_REG); in emac_powerup()
343 reg_val = readl(db->membase + EMAC_MAC_MCFG_REG); in emac_powerup()
346 writel(reg_val, db->membase + EMAC_MAC_MCFG_REG); in emac_powerup()
349 writel(0x0, db->membase + EMAC_RX_FBC_REG); in emac_powerup()
352 writel(0, db->membase + EMAC_INT_CTL_REG); in emac_powerup()
353 reg_val = readl(db->membase + EMAC_INT_STA_REG); in emac_powerup()
354 writel(reg_val, db->membase + EMAC_INT_STA_REG); in emac_powerup()
363 dev_addr[2], db->membase + EMAC_MAC_A1_REG); in emac_powerup()
365 dev_addr[5], db->membase + EMAC_MAC_A0_REG); in emac_powerup()
375 struct emac_board_info *db = netdev_priv(dev); in emac_set_mac_address() local
383 dev_addr[2], db->membase + EMAC_MAC_A1_REG); in emac_set_mac_address()
385 dev_addr[5], db->membase + EMAC_MAC_A0_REG); in emac_set_mac_address()
393 struct emac_board_info *db = netdev_priv(dev); in emac_init_device() local
397 spin_lock_irqsave(&db->lock, flags); in emac_init_device()
403 reg_val = readl(db->membase + EMAC_CTL_REG); in emac_init_device()
405 db->membase + EMAC_CTL_REG); in emac_init_device()
408 reg_val = readl(db->membase + EMAC_INT_CTL_REG); in emac_init_device()
410 writel(reg_val, db->membase + EMAC_INT_CTL_REG); in emac_init_device()
412 spin_unlock_irqrestore(&db->lock, flags); in emac_init_device()
418 struct emac_board_info *db = netdev_priv(dev); in emac_timeout() local
421 if (netif_msg_timer(db)) in emac_timeout()
422 dev_err(db->dev, "tx time out.\n"); in emac_timeout()
425 spin_lock_irqsave(&db->lock, flags); in emac_timeout()
428 emac_reset(db); in emac_timeout()
435 spin_unlock_irqrestore(&db->lock, flags); in emac_timeout()
443 struct emac_board_info *db = netdev_priv(dev); in emac_start_xmit() local
447 channel = db->tx_fifo_stat & 3; in emac_start_xmit()
453 spin_lock_irqsave(&db->lock, flags); in emac_start_xmit()
455 writel(channel, db->membase + EMAC_TX_INS_REG); in emac_start_xmit()
457 emac_outblk_32bit(db->membase + EMAC_TX_IO_DATA_REG, in emac_start_xmit()
461 db->tx_fifo_stat |= 1 << channel; in emac_start_xmit()
465 writel(skb->len, db->membase + EMAC_TX_PL0_REG); in emac_start_xmit()
467 writel(readl(db->membase + EMAC_TX_CTL0_REG) | 1, in emac_start_xmit()
468 db->membase + EMAC_TX_CTL0_REG); in emac_start_xmit()
474 writel(skb->len, db->membase + EMAC_TX_PL1_REG); in emac_start_xmit()
476 writel(readl(db->membase + EMAC_TX_CTL1_REG) | 1, in emac_start_xmit()
477 db->membase + EMAC_TX_CTL1_REG); in emac_start_xmit()
483 if ((db->tx_fifo_stat & 3) == 3) { in emac_start_xmit()
488 spin_unlock_irqrestore(&db->lock, flags); in emac_start_xmit()
499 static void emac_tx_done(struct net_device *dev, struct emac_board_info *db, in emac_tx_done() argument
503 db->tx_fifo_stat &= ~(tx_status & 3); in emac_tx_done()
509 if (netif_msg_tx_done(db)) in emac_tx_done()
510 dev_dbg(db->dev, "tx done, NSR %02x\n", tx_status); in emac_tx_done()
519 struct emac_board_info *db = netdev_priv(dev); in emac_rx() local
533 rxcount = readl(db->membase + EMAC_RX_FBC_REG); in emac_rx()
535 if (netif_msg_rx_status(db)) in emac_rx()
536 dev_dbg(db->dev, "RXCount: %x\n", rxcount); in emac_rx()
538 if ((db->skb_last != NULL) && (rxlen_last > 0)) { in emac_rx()
542 db->skb_last->protocol = eth_type_trans(db->skb_last, in emac_rx()
544 netif_rx(db->skb_last); in emac_rx()
546 db->skb_last = NULL; in emac_rx()
549 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_rx()
551 writel(reg_val, db->membase + EMAC_RX_CTL_REG); in emac_rx()
555 db->emacrx_completed_flag = 1; in emac_rx()
556 reg_val = readl(db->membase + EMAC_INT_CTL_REG); in emac_rx()
558 writel(reg_val, db->membase + EMAC_INT_CTL_REG); in emac_rx()
561 rxcount = readl(db->membase + EMAC_RX_FBC_REG); in emac_rx()
566 reg_val = readl(db->membase + EMAC_RX_IO_DATA_REG); in emac_rx()
567 if (netif_msg_rx_status(db)) in emac_rx()
568 dev_dbg(db->dev, "receive header: %x\n", reg_val); in emac_rx()
571 reg_val = readl(db->membase + EMAC_CTL_REG); in emac_rx()
573 db->membase + EMAC_CTL_REG); in emac_rx()
576 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_rx()
578 db->membase + EMAC_RX_CTL_REG); in emac_rx()
581 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_rx()
585 reg_val = readl(db->membase + EMAC_CTL_REG); in emac_rx()
587 db->membase + EMAC_CTL_REG); in emac_rx()
588 reg_val = readl(db->membase + EMAC_INT_CTL_REG); in emac_rx()
590 writel(reg_val, db->membase + EMAC_INT_CTL_REG); in emac_rx()
592 db->emacrx_completed_flag = 1; in emac_rx()
600 emac_inblk_32bit(db->membase + EMAC_RX_IO_DATA_REG, in emac_rx()
603 if (netif_msg_rx_status(db)) in emac_rx()
604 dev_dbg(db->dev, "rxhdr: %x\n", *((int *)(&rxhdr))); in emac_rx()
609 if (netif_msg_rx_status(db)) in emac_rx()
610 dev_dbg(db->dev, "RX: status %02x, length %04x\n", in emac_rx()
616 if (netif_msg_rx_err(db)) in emac_rx()
617 dev_dbg(db->dev, "RX: Bad Packet (runt)\n"); in emac_rx()
624 if (netif_msg_rx_err(db)) in emac_rx()
625 dev_dbg(db->dev, "crc error\n"); in emac_rx()
630 if (netif_msg_rx_err(db)) in emac_rx()
631 dev_dbg(db->dev, "length error\n"); in emac_rx()
645 if (netif_msg_rx_status(db)) in emac_rx()
646 dev_dbg(db->dev, "RxLen %x\n", rxlen); in emac_rx()
648 emac_inblk_32bit(db->membase + EMAC_RX_IO_DATA_REG, in emac_rx()
663 struct emac_board_info *db = netdev_priv(dev); in emac_interrupt() local
671 spin_lock_irqsave(&db->lock, flags); in emac_interrupt()
674 writel(0, db->membase + EMAC_INT_CTL_REG); in emac_interrupt()
678 int_status = readl(db->membase + EMAC_INT_STA_REG); in emac_interrupt()
680 writel(int_status, db->membase + EMAC_INT_STA_REG); in emac_interrupt()
682 if (netif_msg_intr(db)) in emac_interrupt()
683 dev_dbg(db->dev, "emac interrupt %02x\n", int_status); in emac_interrupt()
686 if ((int_status & 0x100) && (db->emacrx_completed_flag == 1)) { in emac_interrupt()
688 db->emacrx_completed_flag = 0; in emac_interrupt()
694 emac_tx_done(dev, db, int_status); in emac_interrupt()
700 if (db->emacrx_completed_flag == 1) { in emac_interrupt()
701 reg_val = readl(db->membase + EMAC_INT_CTL_REG); in emac_interrupt()
703 writel(reg_val, db->membase + EMAC_INT_CTL_REG); in emac_interrupt()
705 spin_unlock_irqrestore(&db->lock, flags); in emac_interrupt()
727 struct emac_board_info *db = netdev_priv(dev); in emac_open() local
730 if (netif_msg_ifup(db)) in emac_open()
731 dev_dbg(db->dev, "enabling %s\n", dev->name); in emac_open()
737 emac_reset(db); in emac_open()
747 phy_start(db->phy_dev); in emac_open()
756 struct emac_board_info *db = netdev_priv(dev); in emac_shutdown() local
759 writel(0, db->membase + EMAC_INT_CTL_REG); in emac_shutdown()
762 reg_val = readl(db->membase + EMAC_INT_STA_REG); in emac_shutdown()
763 writel(reg_val, db->membase + EMAC_INT_STA_REG); in emac_shutdown()
766 reg_val = readl(db->membase + EMAC_CTL_REG); in emac_shutdown()
768 writel(reg_val, db->membase + EMAC_CTL_REG); in emac_shutdown()
776 struct emac_board_info *db = netdev_priv(ndev); in emac_stop() local
778 if (netif_msg_ifdown(db)) in emac_stop()
779 dev_dbg(db->dev, "shutting down %s\n", ndev->name); in emac_stop()
784 phy_stop(db->phy_dev); in emac_stop()
815 struct emac_board_info *db; in emac_probe() local
828 db = netdev_priv(ndev); in emac_probe()
829 memset(db, 0, sizeof(*db)); in emac_probe()
831 db->dev = &pdev->dev; in emac_probe()
832 db->ndev = ndev; in emac_probe()
833 db->pdev = pdev; in emac_probe()
835 spin_lock_init(&db->lock); in emac_probe()
837 db->membase = of_iomap(np, 0); in emac_probe()
838 if (!db->membase) { in emac_probe()
845 ndev->base_addr = (unsigned long)db->membase; in emac_probe()
853 db->clk = devm_clk_get(&pdev->dev, NULL); in emac_probe()
854 if (IS_ERR(db->clk)) { in emac_probe()
855 ret = PTR_ERR(db->clk); in emac_probe()
859 ret = clk_prepare_enable(db->clk); in emac_probe()
871 db->phy_node = of_parse_phandle(np, "phy", 0); in emac_probe()
872 if (!db->phy_node) { in emac_probe()
890 db->emacrx_completed_flag = 1; in emac_probe()
892 emac_reset(db); in emac_probe()
911 ndev->name, db->membase, ndev->irq, ndev->dev_addr); in emac_probe()
918 clk_disable_unprepare(db->clk); in emac_probe()
920 iounmap(db->membase); in emac_probe()
922 dev_err(db->dev, "not found (%d).\n", ret); in emac_probe()
932 struct emac_board_info *db = netdev_priv(ndev); in emac_remove() local
936 clk_disable_unprepare(db->clk); in emac_remove()
937 iounmap(db->membase); in emac_remove()
958 struct emac_board_info *db = netdev_priv(ndev); in emac_resume() local
960 emac_reset(db); in emac_resume()