Lines Matching +full:ast2600 +full:- +full:mdio
1 // SPDX-License-Identifier: GPL-2.0-or-later
7 #include <linux/mdio.h>
14 #define DRV_NAME "mdio-aspeed"
44 struct aspeed_mdio *ctx = bus->priv; in aspeed_mdio_read()
49 dev_dbg(&bus->dev, "%s: addr: %d, regnum: %d\n", __func__, addr, in aspeed_mdio_read()
54 return -EOPNOTSUPP; in aspeed_mdio_read()
62 iowrite32(ctrl, ctx->base + ASPEED_MDIO_CTRL); in aspeed_mdio_read()
64 rc = readl_poll_timeout(ctx->base + ASPEED_MDIO_CTRL, ctrl, in aspeed_mdio_read()
71 rc = readl_poll_timeout(ctx->base + ASPEED_MDIO_DATA, data, in aspeed_mdio_read()
83 struct aspeed_mdio *ctx = bus->priv; in aspeed_mdio_write()
86 dev_dbg(&bus->dev, "%s: addr: %d, regnum: %d, val: 0x%x\n", in aspeed_mdio_write()
91 return -EOPNOTSUPP; in aspeed_mdio_write()
100 iowrite32(ctrl, ctx->base + ASPEED_MDIO_CTRL); in aspeed_mdio_write()
102 return readl_poll_timeout(ctx->base + ASPEED_MDIO_CTRL, ctrl, in aspeed_mdio_write()
114 bus = devm_mdiobus_alloc_size(&pdev->dev, sizeof(*ctx)); in aspeed_mdio_probe()
116 return -ENOMEM; in aspeed_mdio_probe()
118 ctx = bus->priv; in aspeed_mdio_probe()
119 ctx->base = devm_platform_ioremap_resource(pdev, 0); in aspeed_mdio_probe()
120 if (IS_ERR(ctx->base)) in aspeed_mdio_probe()
121 return PTR_ERR(ctx->base); in aspeed_mdio_probe()
123 bus->name = DRV_NAME; in aspeed_mdio_probe()
124 snprintf(bus->id, MII_BUS_ID_SIZE, "%s%d", pdev->name, pdev->id); in aspeed_mdio_probe()
125 bus->parent = &pdev->dev; in aspeed_mdio_probe()
126 bus->read = aspeed_mdio_read; in aspeed_mdio_probe()
127 bus->write = aspeed_mdio_write; in aspeed_mdio_probe()
129 rc = of_mdiobus_register(bus, pdev->dev.of_node); in aspeed_mdio_probe()
131 dev_err(&pdev->dev, "Cannot register MDIO bus!\n"); in aspeed_mdio_probe()
148 { .compatible = "aspeed,ast2600-mdio", },