Lines Matching refs:lp

493 	struct net_local *lp = netdev_priv(dev);  in xemaclite_set_mac_address()  local
500 xemaclite_update_address(lp, dev->dev_addr); in xemaclite_set_mac_address()
512 struct net_local *lp = netdev_priv(dev); in xemaclite_tx_timeout() local
515 dev_err(&lp->ndev->dev, "Exceeded transmit timeout of %lu ms\n", in xemaclite_tx_timeout()
521 spin_lock_irqsave(&lp->reset_lock, flags); in xemaclite_tx_timeout()
526 xemaclite_disable_interrupts(lp); in xemaclite_tx_timeout()
527 xemaclite_enable_interrupts(lp); in xemaclite_tx_timeout()
529 if (lp->deferred_skb) { in xemaclite_tx_timeout()
530 dev_kfree_skb(lp->deferred_skb); in xemaclite_tx_timeout()
531 lp->deferred_skb = NULL; in xemaclite_tx_timeout()
540 spin_unlock_irqrestore(&lp->reset_lock, flags); in xemaclite_tx_timeout()
556 struct net_local *lp = netdev_priv(dev); in xemaclite_tx_handler() local
559 if (lp->deferred_skb) { in xemaclite_tx_handler()
560 if (xemaclite_send_data(lp, in xemaclite_tx_handler()
561 (u8 *) lp->deferred_skb->data, in xemaclite_tx_handler()
562 lp->deferred_skb->len) != 0) in xemaclite_tx_handler()
565 dev->stats.tx_bytes += lp->deferred_skb->len; in xemaclite_tx_handler()
566 dev_kfree_skb_irq(lp->deferred_skb); in xemaclite_tx_handler()
567 lp->deferred_skb = NULL; in xemaclite_tx_handler()
583 struct net_local *lp = netdev_priv(dev); in xemaclite_rx_handler() local
593 dev_err(&lp->ndev->dev, "Could not allocate receive buffer\n"); in xemaclite_rx_handler()
608 len = xemaclite_recv_data(lp, (u8 *) skb->data); in xemaclite_rx_handler()
640 struct net_local *lp = netdev_priv(dev); in xemaclite_interrupt() local
641 void __iomem *base_addr = lp->base_addr; in xemaclite_interrupt()
696 static int xemaclite_mdio_wait(struct net_local *lp) in xemaclite_mdio_wait() argument
703 while (__raw_readl(lp->base_addr + XEL_MDIOCTRL_OFFSET) & in xemaclite_mdio_wait()
728 struct net_local *lp = bus->priv; in xemaclite_mdio_read() local
732 if (xemaclite_mdio_wait(lp)) in xemaclite_mdio_read()
739 ctrl_reg = __raw_readl(lp->base_addr + XEL_MDIOCTRL_OFFSET); in xemaclite_mdio_read()
742 lp->base_addr + XEL_MDIOADDR_OFFSET); in xemaclite_mdio_read()
744 lp->base_addr + XEL_MDIOCTRL_OFFSET); in xemaclite_mdio_read()
746 if (xemaclite_mdio_wait(lp)) in xemaclite_mdio_read()
749 rc = __raw_readl(lp->base_addr + XEL_MDIORD_OFFSET); in xemaclite_mdio_read()
751 dev_dbg(&lp->ndev->dev, in xemaclite_mdio_read()
771 struct net_local *lp = bus->priv; in xemaclite_mdio_write() local
774 dev_dbg(&lp->ndev->dev, in xemaclite_mdio_write()
778 if (xemaclite_mdio_wait(lp)) in xemaclite_mdio_write()
786 ctrl_reg = __raw_readl(lp->base_addr + XEL_MDIOCTRL_OFFSET); in xemaclite_mdio_write()
789 lp->base_addr + XEL_MDIOADDR_OFFSET); in xemaclite_mdio_write()
790 __raw_writel(val, lp->base_addr + XEL_MDIOWR_OFFSET); in xemaclite_mdio_write()
792 lp->base_addr + XEL_MDIOCTRL_OFFSET); in xemaclite_mdio_write()
807 static int xemaclite_mdio_setup(struct net_local *lp, struct device *dev) in xemaclite_mdio_setup() argument
812 struct device_node *np = of_get_parent(lp->phy_node); in xemaclite_mdio_setup()
825 if (lp->ndev->mem_start != res.start) { in xemaclite_mdio_setup()
827 phydev = of_phy_find_device(lp->phy_node); in xemaclite_mdio_setup()
838 lp->base_addr + XEL_MDIOCTRL_OFFSET); in xemaclite_mdio_setup()
848 bus->priv = lp; in xemaclite_mdio_setup()
853 bus->irq = lp->mdio_irqs; /* preallocated IRQ table */ in xemaclite_mdio_setup()
855 lp->mii_bus = bus; in xemaclite_mdio_setup()
879 struct net_local *lp = netdev_priv(ndev); in xemaclite_adjust_link() local
880 struct phy_device *phy = lp->phy_dev; in xemaclite_adjust_link()
886 if (lp->last_link != link_state) { in xemaclite_adjust_link()
887 lp->last_link = link_state; in xemaclite_adjust_link()
902 struct net_local *lp = netdev_priv(dev); in xemaclite_open() local
906 xemaclite_disable_interrupts(lp); in xemaclite_open()
908 if (lp->phy_node) { in xemaclite_open()
911 lp->phy_dev = of_phy_connect(lp->ndev, lp->phy_node, in xemaclite_open()
914 if (!lp->phy_dev) { in xemaclite_open()
915 dev_err(&lp->ndev->dev, "of_phy_connect() failed\n"); in xemaclite_open()
920 lp->phy_dev->supported &= (PHY_BASIC_FEATURES); in xemaclite_open()
921 lp->phy_dev->advertising = lp->phy_dev->supported; in xemaclite_open()
924 phy_write(lp->phy_dev, MII_CTRL1000, 0); in xemaclite_open()
927 phy_write(lp->phy_dev, MII_ADVERTISE, ADVERTISE_ALL | in xemaclite_open()
931 bmcr = phy_read(lp->phy_dev, MII_BMCR); in xemaclite_open()
933 phy_write(lp->phy_dev, MII_BMCR, bmcr); in xemaclite_open()
935 phy_start(lp->phy_dev); in xemaclite_open()
939 xemaclite_update_address(lp, dev->dev_addr); in xemaclite_open()
944 dev_err(&lp->ndev->dev, "Could not allocate interrupt %d\n", in xemaclite_open()
946 if (lp->phy_dev) in xemaclite_open()
947 phy_disconnect(lp->phy_dev); in xemaclite_open()
948 lp->phy_dev = NULL; in xemaclite_open()
954 xemaclite_enable_interrupts(lp); in xemaclite_open()
972 struct net_local *lp = netdev_priv(dev); in xemaclite_close() local
975 xemaclite_disable_interrupts(lp); in xemaclite_close()
978 if (lp->phy_dev) in xemaclite_close()
979 phy_disconnect(lp->phy_dev); in xemaclite_close()
980 lp->phy_dev = NULL; in xemaclite_close()
1001 struct net_local *lp = netdev_priv(dev); in xemaclite_send() local
1010 spin_lock_irqsave(&lp->reset_lock, flags); in xemaclite_send()
1011 if (xemaclite_send_data(lp, (u8 *) new_skb->data, len) != 0) { in xemaclite_send()
1016 lp->deferred_skb = new_skb; in xemaclite_send()
1019 spin_unlock_irqrestore(&lp->reset_lock, flags); in xemaclite_send()
1022 spin_unlock_irqrestore(&lp->reset_lock, flags); in xemaclite_send()
1089 struct net_local *lp = NULL; in xemaclite_of_probe() local
1105 lp = netdev_priv(ndev); in xemaclite_of_probe()
1106 lp->ndev = ndev; in xemaclite_of_probe()
1119 lp->base_addr = devm_ioremap_resource(&ofdev->dev, res); in xemaclite_of_probe()
1120 if (IS_ERR(lp->base_addr)) { in xemaclite_of_probe()
1121 rc = PTR_ERR(lp->base_addr); in xemaclite_of_probe()
1128 spin_lock_init(&lp->reset_lock); in xemaclite_of_probe()
1129 lp->next_tx_buf_to_use = 0x0; in xemaclite_of_probe()
1130 lp->next_rx_buf_to_use = 0x0; in xemaclite_of_probe()
1131 lp->tx_ping_pong = get_bool(ofdev, "xlnx,tx-ping-pong"); in xemaclite_of_probe()
1132 lp->rx_ping_pong = get_bool(ofdev, "xlnx,rx-ping-pong"); in xemaclite_of_probe()
1142 __raw_writel(0, lp->base_addr + XEL_TSR_OFFSET); in xemaclite_of_probe()
1143 __raw_writel(0, lp->base_addr + XEL_BUFFER_OFFSET + XEL_TSR_OFFSET); in xemaclite_of_probe()
1146 xemaclite_update_address(lp, ndev->dev_addr); in xemaclite_of_probe()
1148 lp->phy_node = of_parse_phandle(ofdev->dev.of_node, "phy-handle", 0); in xemaclite_of_probe()
1149 rc = xemaclite_mdio_setup(lp, &ofdev->dev); in xemaclite_of_probe()
1170 (unsigned int __force)lp->base_addr, ndev->irq); in xemaclite_of_probe()
1192 struct net_local *lp = netdev_priv(ndev); in xemaclite_of_remove() local
1195 if (lp->has_mdio) { in xemaclite_of_remove()
1196 mdiobus_unregister(lp->mii_bus); in xemaclite_of_remove()
1197 kfree(lp->mii_bus->irq); in xemaclite_of_remove()
1198 mdiobus_free(lp->mii_bus); in xemaclite_of_remove()
1199 lp->mii_bus = NULL; in xemaclite_of_remove()
1204 of_node_put(lp->phy_node); in xemaclite_of_remove()
1205 lp->phy_node = NULL; in xemaclite_of_remove()