Lines Matching refs:priv

34 	struct net_device *dev = bus->priv;  in bcmgenet_mii_read()
35 struct bcmgenet_priv *priv = netdev_priv(dev); in bcmgenet_mii_read() local
38 bcmgenet_umac_writel(priv, (MDIO_RD | (phy_id << MDIO_PMD_SHIFT) | in bcmgenet_mii_read()
41 reg = bcmgenet_umac_readl(priv, UMAC_MDIO_CMD); in bcmgenet_mii_read()
43 bcmgenet_umac_writel(priv, reg, UMAC_MDIO_CMD); in bcmgenet_mii_read()
44 wait_event_timeout(priv->wq, in bcmgenet_mii_read()
45 !(bcmgenet_umac_readl(priv, UMAC_MDIO_CMD) in bcmgenet_mii_read()
48 ret = bcmgenet_umac_readl(priv, UMAC_MDIO_CMD); in bcmgenet_mii_read()
65 struct net_device *dev = bus->priv; in bcmgenet_mii_write()
66 struct bcmgenet_priv *priv = netdev_priv(dev); in bcmgenet_mii_write() local
69 bcmgenet_umac_writel(priv, (MDIO_WR | (phy_id << MDIO_PMD_SHIFT) | in bcmgenet_mii_write()
72 reg = bcmgenet_umac_readl(priv, UMAC_MDIO_CMD); in bcmgenet_mii_write()
74 bcmgenet_umac_writel(priv, reg, UMAC_MDIO_CMD); in bcmgenet_mii_write()
75 wait_event_timeout(priv->wq, in bcmgenet_mii_write()
76 !(bcmgenet_umac_readl(priv, UMAC_MDIO_CMD) & in bcmgenet_mii_write()
88 struct bcmgenet_priv *priv = netdev_priv(dev); in bcmgenet_mii_setup() local
89 struct phy_device *phydev = priv->phydev; in bcmgenet_mii_setup()
93 if (priv->old_link != phydev->link) { in bcmgenet_mii_setup()
95 priv->old_link = phydev->link; in bcmgenet_mii_setup()
100 if (priv->old_speed != phydev->speed) { in bcmgenet_mii_setup()
102 priv->old_speed = phydev->speed; in bcmgenet_mii_setup()
105 if (priv->old_duplex != phydev->duplex) { in bcmgenet_mii_setup()
107 priv->old_duplex = phydev->duplex; in bcmgenet_mii_setup()
110 if (priv->old_pause != phydev->pause) { in bcmgenet_mii_setup()
112 priv->old_pause = phydev->pause; in bcmgenet_mii_setup()
143 reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL); in bcmgenet_mii_setup()
146 bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL); in bcmgenet_mii_setup()
148 reg = bcmgenet_umac_readl(priv, UMAC_CMD); in bcmgenet_mii_setup()
153 bcmgenet_umac_writel(priv, reg, UMAC_CMD); in bcmgenet_mii_setup()
181 struct bcmgenet_priv *priv = netdev_priv(dev); in bcmgenet_mii_reset() local
183 if (GENET_IS_V4(priv)) in bcmgenet_mii_reset()
186 if (priv->phydev) { in bcmgenet_mii_reset()
187 phy_init_hw(priv->phydev); in bcmgenet_mii_reset()
188 phy_start_aneg(priv->phydev); in bcmgenet_mii_reset()
194 struct bcmgenet_priv *priv = netdev_priv(dev); in bcmgenet_phy_power_set() local
198 if (!GENET_IS_V4(priv)) in bcmgenet_phy_power_set()
201 reg = bcmgenet_ext_readl(priv, EXT_GPHY_CTRL); in bcmgenet_phy_power_set()
204 bcmgenet_ext_writel(priv, reg, EXT_GPHY_CTRL); in bcmgenet_phy_power_set()
209 bcmgenet_ext_writel(priv, reg, EXT_GPHY_CTRL); in bcmgenet_phy_power_set()
215 bcmgenet_ext_writel(priv, reg, EXT_GPHY_CTRL); in bcmgenet_phy_power_set()
219 bcmgenet_ext_writel(priv, reg, EXT_GPHY_CTRL); in bcmgenet_phy_power_set()
225 struct bcmgenet_priv *priv = netdev_priv(dev); in bcmgenet_internal_phy_setup() local
231 reg = bcmgenet_ext_readl(priv, EXT_EXT_PWR_MGMT); in bcmgenet_internal_phy_setup()
233 bcmgenet_ext_writel(priv, reg, EXT_EXT_PWR_MGMT); in bcmgenet_internal_phy_setup()
237 static void bcmgenet_moca_phy_setup(struct bcmgenet_priv *priv) in bcmgenet_moca_phy_setup() argument
242 reg = bcmgenet_sys_readl(priv, SYS_PORT_CTRL); in bcmgenet_moca_phy_setup()
244 bcmgenet_sys_writel(priv, reg, SYS_PORT_CTRL); in bcmgenet_moca_phy_setup()
246 if (priv->hw_params->flags & GENET_HAS_MOCA_LINK_DET) in bcmgenet_moca_phy_setup()
247 fixed_phy_set_link_update(priv->phydev, in bcmgenet_moca_phy_setup()
253 struct bcmgenet_priv *priv = netdev_priv(dev); in bcmgenet_mii_config() local
254 struct phy_device *phydev = priv->phydev; in bcmgenet_mii_config()
255 struct device *kdev = &priv->pdev->dev; in bcmgenet_mii_config()
261 priv->ext_phy = !priv->internal_phy && in bcmgenet_mii_config()
262 (priv->phy_interface != PHY_INTERFACE_MODE_MOCA); in bcmgenet_mii_config()
264 if (priv->internal_phy) in bcmgenet_mii_config()
265 priv->phy_interface = PHY_INTERFACE_MODE_NA; in bcmgenet_mii_config()
267 switch (priv->phy_interface) { in bcmgenet_mii_config()
275 if (GENET_IS_V4(priv)) in bcmgenet_mii_config()
280 bcmgenet_sys_writel(priv, port_ctrl, SYS_PORT_CTRL); in bcmgenet_mii_config()
282 if (priv->internal_phy) { in bcmgenet_mii_config()
285 } else if (priv->phy_interface == PHY_INTERFACE_MODE_MOCA) { in bcmgenet_mii_config()
287 bcmgenet_moca_phy_setup(priv); in bcmgenet_mii_config()
294 bcmgenet_sys_writel(priv, in bcmgenet_mii_config()
305 if ((priv->phydev->supported & PHY_BASIC_FEATURES) == in bcmgenet_mii_config()
310 bcmgenet_sys_writel(priv, port_ctrl, SYS_PORT_CTRL); in bcmgenet_mii_config()
327 bcmgenet_sys_writel(priv, in bcmgenet_mii_config()
331 dev_err(kdev, "unknown phy mode: %d\n", priv->phy_interface); in bcmgenet_mii_config()
338 if (priv->ext_phy) { in bcmgenet_mii_config()
339 reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL); in bcmgenet_mii_config()
341 bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL); in bcmgenet_mii_config()
351 struct bcmgenet_priv *priv = netdev_priv(dev); in bcmgenet_mii_probe() local
352 struct device_node *dn = priv->pdev->dev.of_node; in bcmgenet_mii_probe()
358 phy_flags = priv->gphy_rev; in bcmgenet_mii_probe()
361 priv->old_link = -1; in bcmgenet_mii_probe()
362 priv->old_speed = -1; in bcmgenet_mii_probe()
363 priv->old_duplex = -1; in bcmgenet_mii_probe()
364 priv->old_pause = -1; in bcmgenet_mii_probe()
367 phydev = of_phy_connect(dev, priv->phy_dn, bcmgenet_mii_setup, in bcmgenet_mii_probe()
368 phy_flags, priv->phy_interface); in bcmgenet_mii_probe()
374 phydev = priv->phydev; in bcmgenet_mii_probe()
378 priv->phy_interface); in bcmgenet_mii_probe()
385 priv->phydev = phydev; in bcmgenet_mii_probe()
394 phy_disconnect(priv->phydev); in bcmgenet_mii_probe()
403 if (priv->internal_phy) in bcmgenet_mii_probe()
404 priv->mii_bus->irq[phydev->addr] = PHY_IGNORE_INTERRUPT; in bcmgenet_mii_probe()
406 priv->mii_bus->irq[phydev->addr] = PHY_POLL; in bcmgenet_mii_probe()
428 struct net_device *dev = bus->priv; in bcmgenet_mii_bus_reset()
429 struct bcmgenet_priv *priv = netdev_priv(dev); in bcmgenet_mii_bus_reset() local
430 struct device_node *np = priv->mdio_dn; in bcmgenet_mii_bus_reset()
436 read_mask = 1 << priv->phy_addr; in bcmgenet_mii_bus_reset()
457 static int bcmgenet_mii_alloc(struct bcmgenet_priv *priv) in bcmgenet_mii_alloc() argument
461 if (priv->mii_bus) in bcmgenet_mii_alloc()
464 priv->mii_bus = mdiobus_alloc(); in bcmgenet_mii_alloc()
465 if (!priv->mii_bus) { in bcmgenet_mii_alloc()
470 bus = priv->mii_bus; in bcmgenet_mii_alloc()
471 bus->priv = priv->dev; in bcmgenet_mii_alloc()
473 bus->parent = &priv->pdev->dev; in bcmgenet_mii_alloc()
478 priv->pdev->name, priv->pdev->id); in bcmgenet_mii_alloc()
482 mdiobus_free(priv->mii_bus); in bcmgenet_mii_alloc()
489 static int bcmgenet_mii_of_init(struct bcmgenet_priv *priv) in bcmgenet_mii_of_init() argument
491 struct device_node *dn = priv->pdev->dev.of_node; in bcmgenet_mii_of_init()
492 struct device *kdev = &priv->pdev->dev; in bcmgenet_mii_of_init()
499 compat = kasprintf(GFP_KERNEL, "brcm,genet-mdio-v%d", priv->version); in bcmgenet_mii_of_init()
503 priv->mdio_dn = of_find_compatible_node(dn, NULL, compat); in bcmgenet_mii_of_init()
505 if (!priv->mdio_dn) { in bcmgenet_mii_of_init()
510 ret = of_mdiobus_register(priv->mii_bus, priv->mdio_dn); in bcmgenet_mii_of_init()
517 priv->phy_dn = of_parse_phandle(dn, "phy-handle", 0); in bcmgenet_mii_of_init()
522 if (!priv->phy_dn && of_phy_is_fixed_link(dn)) { in bcmgenet_mii_of_init()
527 priv->phy_dn = of_node_get(dn); in bcmgenet_mii_of_init()
532 priv->phy_interface = phy_mode; in bcmgenet_mii_of_init()
545 priv->phy_interface = PHY_INTERFACE_MODE_NA; in bcmgenet_mii_of_init()
547 priv->internal_phy = true; in bcmgenet_mii_of_init()
560 static int bcmgenet_mii_pd_init(struct bcmgenet_priv *priv) in bcmgenet_mii_pd_init() argument
562 struct device *kdev = &priv->pdev->dev; in bcmgenet_mii_pd_init()
564 struct mii_bus *mdio = priv->mii_bus; in bcmgenet_mii_pd_init()
617 priv->phydev = phydev; in bcmgenet_mii_pd_init()
618 priv->phy_interface = pd->phy_interface; in bcmgenet_mii_pd_init()
623 static int bcmgenet_mii_bus_init(struct bcmgenet_priv *priv) in bcmgenet_mii_bus_init() argument
625 struct device_node *dn = priv->pdev->dev.of_node; in bcmgenet_mii_bus_init()
628 return bcmgenet_mii_of_init(priv); in bcmgenet_mii_bus_init()
630 return bcmgenet_mii_pd_init(priv); in bcmgenet_mii_bus_init()
635 struct bcmgenet_priv *priv = netdev_priv(dev); in bcmgenet_mii_init() local
638 ret = bcmgenet_mii_alloc(priv); in bcmgenet_mii_init()
642 ret = bcmgenet_mii_bus_init(priv); in bcmgenet_mii_init()
649 of_node_put(priv->phy_dn); in bcmgenet_mii_init()
650 mdiobus_unregister(priv->mii_bus); in bcmgenet_mii_init()
651 kfree(priv->mii_bus->irq); in bcmgenet_mii_init()
652 mdiobus_free(priv->mii_bus); in bcmgenet_mii_init()
658 struct bcmgenet_priv *priv = netdev_priv(dev); in bcmgenet_mii_exit() local
660 of_node_put(priv->phy_dn); in bcmgenet_mii_exit()
661 mdiobus_unregister(priv->mii_bus); in bcmgenet_mii_exit()
662 kfree(priv->mii_bus->irq); in bcmgenet_mii_exit()
663 mdiobus_free(priv->mii_bus); in bcmgenet_mii_exit()