Lines Matching refs:bus
183 static int octeon_mdiobus_read(struct mii_bus *bus, int phy_id, int regnum) in octeon_mdiobus_read() argument
185 struct octeon_mdiobus *p = bus->priv; in octeon_mdiobus_read()
223 static int octeon_mdiobus_write(struct mii_bus *bus, int phy_id, in octeon_mdiobus_write() argument
226 struct octeon_mdiobus *p = bus->priv; in octeon_mdiobus_write()
270 struct octeon_mdiobus *bus; in octeon_mdiobus_probe() local
275 bus = devm_kzalloc(&pdev->dev, sizeof(*bus), GFP_KERNEL); in octeon_mdiobus_probe()
276 if (!bus) in octeon_mdiobus_probe()
285 bus->mdio_phys = res_mem->start; in octeon_mdiobus_probe()
286 bus->regsize = resource_size(res_mem); in octeon_mdiobus_probe()
288 if (!devm_request_mem_region(&pdev->dev, bus->mdio_phys, bus->regsize, in octeon_mdiobus_probe()
294 bus->register_base = in octeon_mdiobus_probe()
295 (u64)devm_ioremap(&pdev->dev, bus->mdio_phys, bus->regsize); in octeon_mdiobus_probe()
296 if (!bus->register_base) { in octeon_mdiobus_probe()
301 bus->mii_bus = mdiobus_alloc(); in octeon_mdiobus_probe()
302 if (!bus->mii_bus) in octeon_mdiobus_probe()
307 oct_mdio_writeq(smi_en.u64, bus->register_base + SMI_EN); in octeon_mdiobus_probe()
309 bus->mii_bus->priv = bus; in octeon_mdiobus_probe()
310 bus->mii_bus->irq = bus->phy_irq; in octeon_mdiobus_probe()
311 bus->mii_bus->name = "mdio-octeon"; in octeon_mdiobus_probe()
312 snprintf(bus->mii_bus->id, MII_BUS_ID_SIZE, "%llx", bus->register_base); in octeon_mdiobus_probe()
313 bus->mii_bus->parent = &pdev->dev; in octeon_mdiobus_probe()
315 bus->mii_bus->read = octeon_mdiobus_read; in octeon_mdiobus_probe()
316 bus->mii_bus->write = octeon_mdiobus_write; in octeon_mdiobus_probe()
318 platform_set_drvdata(pdev, bus); in octeon_mdiobus_probe()
320 err = of_mdiobus_register(bus->mii_bus, pdev->dev.of_node); in octeon_mdiobus_probe()
328 mdiobus_free(bus->mii_bus); in octeon_mdiobus_probe()
331 oct_mdio_writeq(smi_en.u64, bus->register_base + SMI_EN); in octeon_mdiobus_probe()
337 struct octeon_mdiobus *bus; in octeon_mdiobus_remove() local
340 bus = platform_get_drvdata(pdev); in octeon_mdiobus_remove()
342 mdiobus_unregister(bus->mii_bus); in octeon_mdiobus_remove()
343 mdiobus_free(bus->mii_bus); in octeon_mdiobus_remove()
345 oct_mdio_writeq(smi_en.u64, bus->register_base + SMI_EN); in octeon_mdiobus_remove()