Lines Matching refs:db
90 struct emac_board_info *db = netdev_priv(dev); in emac_update_speed() local
94 reg_val = readl(db->membase + EMAC_MAC_SUPP_REG); in emac_update_speed()
96 if (db->speed == SPEED_100) in emac_update_speed()
98 writel(reg_val, db->membase + EMAC_MAC_SUPP_REG); in emac_update_speed()
103 struct emac_board_info *db = netdev_priv(dev); in emac_update_duplex() local
107 reg_val = readl(db->membase + EMAC_MAC_CTL1_REG); in emac_update_duplex()
109 if (db->duplex) in emac_update_duplex()
111 writel(reg_val, db->membase + EMAC_MAC_CTL1_REG); in emac_update_duplex()
116 struct emac_board_info *db = netdev_priv(dev); in emac_handle_link_change() local
117 struct phy_device *phydev = db->phy_dev; in emac_handle_link_change()
122 if (db->speed != phydev->speed) { in emac_handle_link_change()
123 spin_lock_irqsave(&db->lock, flags); in emac_handle_link_change()
124 db->speed = phydev->speed; in emac_handle_link_change()
126 spin_unlock_irqrestore(&db->lock, flags); in emac_handle_link_change()
130 if (db->duplex != phydev->duplex) { in emac_handle_link_change()
131 spin_lock_irqsave(&db->lock, flags); in emac_handle_link_change()
132 db->duplex = phydev->duplex; in emac_handle_link_change()
134 spin_unlock_irqrestore(&db->lock, flags); in emac_handle_link_change()
139 if (phydev->link != db->link) { in emac_handle_link_change()
141 db->speed = 0; in emac_handle_link_change()
142 db->duplex = -1; in emac_handle_link_change()
144 db->link = phydev->link; in emac_handle_link_change()
155 struct emac_board_info *db = netdev_priv(dev); in emac_mdio_probe() local
160 db->phy_dev = of_phy_connect(db->ndev, db->phy_node, in emac_mdio_probe()
162 db->phy_interface); in emac_mdio_probe()
163 if (!db->phy_dev) { in emac_mdio_probe()
164 netdev_err(db->ndev, "could not find the PHY\n"); in emac_mdio_probe()
169 db->phy_dev->supported &= PHY_BASIC_FEATURES; in emac_mdio_probe()
170 db->phy_dev->advertising = db->phy_dev->supported; in emac_mdio_probe()
172 db->link = 0; in emac_mdio_probe()
173 db->speed = 0; in emac_mdio_probe()
174 db->duplex = -1; in emac_mdio_probe()
181 struct emac_board_info *db = netdev_priv(dev); in emac_mdio_remove() local
183 phy_disconnect(db->phy_dev); in emac_mdio_remove()
184 db->phy_dev = NULL; in emac_mdio_remove()
187 static void emac_reset(struct emac_board_info *db) in emac_reset() argument
189 dev_dbg(db->dev, "resetting device\n"); in emac_reset()
192 writel(0, db->membase + EMAC_CTL_REG); in emac_reset()
194 writel(EMAC_CTL_RESET, db->membase + EMAC_CTL_REG); in emac_reset()
262 struct emac_board_info *db = netdev_priv(ndev); in emac_setup() local
266 reg_val = readl(db->membase + EMAC_TX_MODE_REG); in emac_setup()
269 db->membase + EMAC_TX_MODE_REG); in emac_setup()
273 reg_val = readl(db->membase + EMAC_MAC_CTL0_REG); in emac_setup()
276 db->membase + EMAC_MAC_CTL0_REG); in emac_setup()
279 reg_val = readl(db->membase + EMAC_MAC_CTL1_REG); in emac_setup()
283 writel(reg_val, db->membase + EMAC_MAC_CTL1_REG); in emac_setup()
286 writel(EMAC_MAC_IPGT_FULL_DUPLEX, db->membase + EMAC_MAC_IPGT_REG); in emac_setup()
290 db->membase + EMAC_MAC_IPGR_REG); in emac_setup()
294 db->membase + EMAC_MAC_CLRT_REG); in emac_setup()
298 db->membase + EMAC_MAC_MAXF_REG); in emac_setup()
305 struct emac_board_info *db = netdev_priv(ndev); in emac_set_rx_mode() local
309 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_set_rx_mode()
320 db->membase + EMAC_RX_CTL_REG); in emac_set_rx_mode()
325 struct emac_board_info *db = netdev_priv(ndev); in emac_powerup() local
330 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_powerup()
332 writel(reg_val, db->membase + EMAC_RX_CTL_REG); in emac_powerup()
337 reg_val = readl(db->membase + EMAC_MAC_CTL0_REG); in emac_powerup()
339 writel(reg_val, db->membase + EMAC_MAC_CTL0_REG); in emac_powerup()
342 reg_val = readl(db->membase + EMAC_MAC_MCFG_REG); in emac_powerup()
345 writel(reg_val, db->membase + EMAC_MAC_MCFG_REG); in emac_powerup()
348 writel(0x0, db->membase + EMAC_RX_FBC_REG); in emac_powerup()
351 writel(0, db->membase + EMAC_INT_CTL_REG); in emac_powerup()
352 reg_val = readl(db->membase + EMAC_INT_STA_REG); in emac_powerup()
353 writel(reg_val, db->membase + EMAC_INT_STA_REG); in emac_powerup()
362 dev_addr[2], db->membase + EMAC_MAC_A1_REG); in emac_powerup()
364 dev_addr[5], db->membase + EMAC_MAC_A0_REG); in emac_powerup()
374 struct emac_board_info *db = netdev_priv(dev); in emac_set_mac_address() local
382 dev_addr[2], db->membase + EMAC_MAC_A1_REG); in emac_set_mac_address()
384 dev_addr[5], db->membase + EMAC_MAC_A0_REG); in emac_set_mac_address()
392 struct emac_board_info *db = netdev_priv(dev); in emac_init_device() local
396 spin_lock_irqsave(&db->lock, flags); in emac_init_device()
402 reg_val = readl(db->membase + EMAC_CTL_REG); in emac_init_device()
404 db->membase + EMAC_CTL_REG); in emac_init_device()
407 reg_val = readl(db->membase + EMAC_INT_CTL_REG); in emac_init_device()
409 writel(reg_val, db->membase + EMAC_INT_CTL_REG); in emac_init_device()
411 spin_unlock_irqrestore(&db->lock, flags); in emac_init_device()
417 struct emac_board_info *db = netdev_priv(dev); in emac_timeout() local
420 if (netif_msg_timer(db)) in emac_timeout()
421 dev_err(db->dev, "tx time out.\n"); in emac_timeout()
424 spin_lock_irqsave(&db->lock, flags); in emac_timeout()
427 emac_reset(db); in emac_timeout()
434 spin_unlock_irqrestore(&db->lock, flags); in emac_timeout()
442 struct emac_board_info *db = netdev_priv(dev); in emac_start_xmit() local
446 channel = db->tx_fifo_stat & 3; in emac_start_xmit()
452 spin_lock_irqsave(&db->lock, flags); in emac_start_xmit()
454 writel(channel, db->membase + EMAC_TX_INS_REG); in emac_start_xmit()
456 emac_outblk_32bit(db->membase + EMAC_TX_IO_DATA_REG, in emac_start_xmit()
460 db->tx_fifo_stat |= 1 << channel; in emac_start_xmit()
464 writel(skb->len, db->membase + EMAC_TX_PL0_REG); in emac_start_xmit()
466 writel(readl(db->membase + EMAC_TX_CTL0_REG) | 1, in emac_start_xmit()
467 db->membase + EMAC_TX_CTL0_REG); in emac_start_xmit()
473 writel(skb->len, db->membase + EMAC_TX_PL1_REG); in emac_start_xmit()
475 writel(readl(db->membase + EMAC_TX_CTL1_REG) | 1, in emac_start_xmit()
476 db->membase + EMAC_TX_CTL1_REG); in emac_start_xmit()
482 if ((db->tx_fifo_stat & 3) == 3) { in emac_start_xmit()
487 spin_unlock_irqrestore(&db->lock, flags); in emac_start_xmit()
498 static void emac_tx_done(struct net_device *dev, struct emac_board_info *db, in emac_tx_done() argument
502 db->tx_fifo_stat &= ~(tx_status & 3); in emac_tx_done()
508 if (netif_msg_tx_done(db)) in emac_tx_done()
509 dev_dbg(db->dev, "tx done, NSR %02x\n", tx_status); in emac_tx_done()
518 struct emac_board_info *db = netdev_priv(dev); in emac_rx() local
532 rxcount = readl(db->membase + EMAC_RX_FBC_REG); in emac_rx()
534 if (netif_msg_rx_status(db)) in emac_rx()
535 dev_dbg(db->dev, "RXCount: %x\n", rxcount); in emac_rx()
537 if ((db->skb_last != NULL) && (rxlen_last > 0)) { in emac_rx()
541 db->skb_last->protocol = eth_type_trans(db->skb_last, in emac_rx()
543 netif_rx(db->skb_last); in emac_rx()
545 db->skb_last = NULL; in emac_rx()
548 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_rx()
550 writel(reg_val, db->membase + EMAC_RX_CTL_REG); in emac_rx()
554 db->emacrx_completed_flag = 1; in emac_rx()
555 reg_val = readl(db->membase + EMAC_INT_CTL_REG); in emac_rx()
557 writel(reg_val, db->membase + EMAC_INT_CTL_REG); in emac_rx()
560 rxcount = readl(db->membase + EMAC_RX_FBC_REG); in emac_rx()
565 reg_val = readl(db->membase + EMAC_RX_IO_DATA_REG); in emac_rx()
566 if (netif_msg_rx_status(db)) in emac_rx()
567 dev_dbg(db->dev, "receive header: %x\n", reg_val); in emac_rx()
570 reg_val = readl(db->membase + EMAC_CTL_REG); in emac_rx()
572 db->membase + EMAC_CTL_REG); in emac_rx()
575 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_rx()
577 db->membase + EMAC_RX_CTL_REG); in emac_rx()
580 reg_val = readl(db->membase + EMAC_RX_CTL_REG); in emac_rx()
584 reg_val = readl(db->membase + EMAC_CTL_REG); in emac_rx()
586 db->membase + EMAC_CTL_REG); in emac_rx()
587 reg_val = readl(db->membase + EMAC_INT_CTL_REG); in emac_rx()
589 writel(reg_val, db->membase + EMAC_INT_CTL_REG); in emac_rx()
591 db->emacrx_completed_flag = 1; in emac_rx()
599 emac_inblk_32bit(db->membase + EMAC_RX_IO_DATA_REG, in emac_rx()
602 if (netif_msg_rx_status(db)) in emac_rx()
603 dev_dbg(db->dev, "rxhdr: %x\n", *((int *)(&rxhdr))); in emac_rx()
608 if (netif_msg_rx_status(db)) in emac_rx()
609 dev_dbg(db->dev, "RX: status %02x, length %04x\n", in emac_rx()
615 if (netif_msg_rx_err(db)) in emac_rx()
616 dev_dbg(db->dev, "RX: Bad Packet (runt)\n"); in emac_rx()
623 if (netif_msg_rx_err(db)) in emac_rx()
624 dev_dbg(db->dev, "crc error\n"); in emac_rx()
629 if (netif_msg_rx_err(db)) in emac_rx()
630 dev_dbg(db->dev, "length error\n"); in emac_rx()
644 if (netif_msg_rx_status(db)) in emac_rx()
645 dev_dbg(db->dev, "RxLen %x\n", rxlen); in emac_rx()
647 emac_inblk_32bit(db->membase + EMAC_RX_IO_DATA_REG, in emac_rx()
662 struct emac_board_info *db = netdev_priv(dev); in emac_interrupt() local
670 spin_lock_irqsave(&db->lock, flags); in emac_interrupt()
673 writel(0, db->membase + EMAC_INT_CTL_REG); in emac_interrupt()
677 int_status = readl(db->membase + EMAC_INT_STA_REG); in emac_interrupt()
679 writel(int_status, db->membase + EMAC_INT_STA_REG); in emac_interrupt()
681 if (netif_msg_intr(db)) in emac_interrupt()
682 dev_dbg(db->dev, "emac interrupt %02x\n", int_status); in emac_interrupt()
685 if ((int_status & 0x100) && (db->emacrx_completed_flag == 1)) { in emac_interrupt()
687 db->emacrx_completed_flag = 0; in emac_interrupt()
693 emac_tx_done(dev, db, int_status); in emac_interrupt()
699 if (db->emacrx_completed_flag == 1) { in emac_interrupt()
700 reg_val = readl(db->membase + EMAC_INT_CTL_REG); in emac_interrupt()
702 writel(reg_val, db->membase + EMAC_INT_CTL_REG); in emac_interrupt()
704 spin_unlock_irqrestore(&db->lock, flags); in emac_interrupt()
726 struct emac_board_info *db = netdev_priv(dev); in emac_open() local
729 if (netif_msg_ifup(db)) in emac_open()
730 dev_dbg(db->dev, "enabling %s\n", dev->name); in emac_open()
736 emac_reset(db); in emac_open()
746 phy_start(db->phy_dev); in emac_open()
755 struct emac_board_info *db = netdev_priv(dev); in emac_shutdown() local
758 writel(0, db->membase + EMAC_INT_CTL_REG); in emac_shutdown()
761 reg_val = readl(db->membase + EMAC_INT_STA_REG); in emac_shutdown()
762 writel(reg_val, db->membase + EMAC_INT_STA_REG); in emac_shutdown()
765 reg_val = readl(db->membase + EMAC_CTL_REG); in emac_shutdown()
767 writel(reg_val, db->membase + EMAC_CTL_REG); in emac_shutdown()
775 struct emac_board_info *db = netdev_priv(ndev); in emac_stop() local
777 if (netif_msg_ifdown(db)) in emac_stop()
778 dev_dbg(db->dev, "shutting down %s\n", ndev->name); in emac_stop()
783 phy_stop(db->phy_dev); in emac_stop()
814 struct emac_board_info *db; in emac_probe() local
827 db = netdev_priv(ndev); in emac_probe()
828 memset(db, 0, sizeof(*db)); in emac_probe()
830 db->dev = &pdev->dev; in emac_probe()
831 db->ndev = ndev; in emac_probe()
832 db->pdev = pdev; in emac_probe()
834 spin_lock_init(&db->lock); in emac_probe()
836 db->membase = of_iomap(np, 0); in emac_probe()
837 if (!db->membase) { in emac_probe()
844 ndev->base_addr = (unsigned long)db->membase; in emac_probe()
852 db->clk = devm_clk_get(&pdev->dev, NULL); in emac_probe()
853 if (IS_ERR(db->clk)) { in emac_probe()
854 ret = PTR_ERR(db->clk); in emac_probe()
858 clk_prepare_enable(db->clk); in emac_probe()
860 db->phy_node = of_parse_phandle(np, "phy", 0); in emac_probe()
861 if (!db->phy_node) { in emac_probe()
879 db->emacrx_completed_flag = 1; in emac_probe()
881 emac_reset(db); in emac_probe()
900 ndev->name, db->membase, ndev->irq, ndev->dev_addr); in emac_probe()
905 dev_err(db->dev, "not found (%d).\n", ret); in emac_probe()
937 struct emac_board_info *db = netdev_priv(ndev); in emac_resume() local
939 emac_reset(db); in emac_resume()