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()
62 return -EOPNOTSUPP; in ipq8064_mdio_read()
67 regmap_write(priv->base, MII_ADDR_REG_ADDR, miiaddr); in ipq8064_mdio_read()
74 regmap_read(priv->base, MII_DATA_REG_ADDR, &ret_val); in ipq8064_mdio_read()
82 struct ipq8064_mdio *priv = bus->priv; in ipq8064_mdio_write()
86 return -EOPNOTSUPP; in ipq8064_mdio_write()
88 regmap_write(priv->base, MII_DATA_REG_ADDR, data); in ipq8064_mdio_write()
93 regmap_write(priv->base, MII_ADDR_REG_ADDR, miiaddr); in ipq8064_mdio_write()
111 /* the mdio lock is used by any user of this mdio driver */
120 struct device_node *np = pdev->dev.of_node; in ipq8064_mdio_probe()
128 return -ENOMEM; in ipq8064_mdio_probe()
130 base = devm_ioremap(&pdev->dev, res.start, resource_size(&res)); in ipq8064_mdio_probe()
132 return -ENOMEM; in ipq8064_mdio_probe()
134 bus = devm_mdiobus_alloc_size(&pdev->dev, sizeof(*priv)); in ipq8064_mdio_probe()
136 return -ENOMEM; in ipq8064_mdio_probe()
138 bus->name = "ipq8064_mdio_bus"; in ipq8064_mdio_probe()
139 bus->read = ipq8064_mdio_read; in ipq8064_mdio_probe()
140 bus->write = ipq8064_mdio_write; in ipq8064_mdio_probe()
141 snprintf(bus->id, MII_BUS_ID_SIZE, "%s-mii", dev_name(&pdev->dev)); in ipq8064_mdio_probe()
142 bus->parent = &pdev->dev; in ipq8064_mdio_probe()
144 priv = bus->priv; in ipq8064_mdio_probe()
145 priv->base = devm_regmap_init_mmio(&pdev->dev, base, in ipq8064_mdio_probe()
147 if (IS_ERR(priv->base)) in ipq8064_mdio_probe()
148 return PTR_ERR(priv->base); in ipq8064_mdio_probe()
169 { .compatible = "qcom,ipq8064-mdio" },
178 .name = "ipq8064-mdio",
185 MODULE_DESCRIPTION("Qualcomm IPQ8064 MDIO interface driver");