Lines Matching refs:lp
24 struct temac_local *lp = bus->priv;
30 mutex_lock(&lp->indirect_mutex);
31 temac_iow(lp, XTE_LSW0_OFFSET, (phy_id << 5) | reg);
32 rc = temac_indirect_in32(lp, XTE_MIIMAI_OFFSET);
33 mutex_unlock(&lp->indirect_mutex);
35 dev_dbg(lp->dev, "temac_mdio_read(phy_id=%i, reg=%x) == %x\n",
43 struct temac_local *lp = bus->priv;
45 dev_dbg(lp->dev, "temac_mdio_write(phy_id=%i, reg=%x, val=%x)\n",
51 mutex_lock(&lp->indirect_mutex);
52 temac_indirect_out32(lp, XTE_MGTDR_OFFSET, val);
53 temac_indirect_out32(lp, XTE_MIIMAI_OFFSET, (phy_id << 5) | reg);
54 mutex_unlock(&lp->indirect_mutex);
59 int temac_mdio_setup(struct temac_local *lp, struct device_node *np)
80 mutex_lock(&lp->indirect_mutex);
81 temac_indirect_out32(lp, XTE_MC_OFFSET, 1 << 6 | clk_div);
82 mutex_unlock(&lp->indirect_mutex);
91 bus->priv = lp;
95 bus->parent = lp->dev;
96 bus->irq = lp->mdio_irqs; /* preallocated IRQ table */
98 lp->mii_bus = bus;
104 mutex_lock(&lp->indirect_mutex);
105 dev_dbg(lp->dev, "MDIO bus registered; MC:%x\n",
106 temac_indirect_in32(lp, XTE_MC_OFFSET));
107 mutex_unlock(&lp->indirect_mutex);
115 void temac_mdio_teardown(struct temac_local *lp)
117 mdiobus_unregister(lp->mii_bus);
118 kfree(lp->mii_bus->irq);
119 mdiobus_free(lp->mii_bus);
120 lp->mii_bus = NULL;