Lines Matching +full:ipq8064 +full:- +full:mdio

1 // SPDX-License-Identifier: GPL-2.0
2 /* Qualcomm IPQ8064 MDIO interface driver
47 return regmap_read_poll_timeout(priv->base, MII_ADDR_REG_ADDR, busy, in ipq8064_mdio_wait_busy()
56 struct ipq8064_mdio *priv = bus->priv; in ipq8064_mdio_read()
63 regmap_write(priv->base, MII_ADDR_REG_ADDR, miiaddr); in ipq8064_mdio_read()
70 regmap_read(priv->base, MII_DATA_REG_ADDR, &ret_val); in ipq8064_mdio_read()
78 struct ipq8064_mdio *priv = bus->priv; in ipq8064_mdio_write()
80 regmap_write(priv->base, MII_DATA_REG_ADDR, data); in ipq8064_mdio_write()
85 regmap_write(priv->base, MII_ADDR_REG_ADDR, miiaddr); in ipq8064_mdio_write()
103 /* the mdio lock is used by any user of this mdio driver */
112 struct device_node *np = pdev->dev.of_node; in ipq8064_mdio_probe()
120 return -ENOMEM; in ipq8064_mdio_probe()
122 base = devm_ioremap(&pdev->dev, res.start, resource_size(&res)); in ipq8064_mdio_probe()
124 return -ENOMEM; in ipq8064_mdio_probe()
126 bus = devm_mdiobus_alloc_size(&pdev->dev, sizeof(*priv)); in ipq8064_mdio_probe()
128 return -ENOMEM; in ipq8064_mdio_probe()
130 bus->name = "ipq8064_mdio_bus"; in ipq8064_mdio_probe()
131 bus->read = ipq8064_mdio_read; in ipq8064_mdio_probe()
132 bus->write = ipq8064_mdio_write; in ipq8064_mdio_probe()
133 snprintf(bus->id, MII_BUS_ID_SIZE, "%s-mii", dev_name(&pdev->dev)); in ipq8064_mdio_probe()
134 bus->parent = &pdev->dev; in ipq8064_mdio_probe()
136 priv = bus->priv; in ipq8064_mdio_probe()
137 priv->base = devm_regmap_init_mmio(&pdev->dev, base, in ipq8064_mdio_probe()
139 if (IS_ERR(priv->base)) in ipq8064_mdio_probe()
140 return PTR_ERR(priv->base); in ipq8064_mdio_probe()
158 { .compatible = "qcom,ipq8064-mdio" },
167 .name = "ipq8064-mdio",
174 MODULE_DESCRIPTION("Qualcomm IPQ8064 MDIO interface driver");