Lines Matching refs:miim
14 #include <linux/mdio/mdio-mscc-miim.h>
75 struct mscc_miim_dev *miim = bus->priv;
78 ret = regmap_read(miim->regs,
79 MSCC_MIIM_REG_STATUS + miim->mii_status_offset, &val);
81 WARN_ONCE(1, "mscc miim status read error %d\n", ret);
108 struct mscc_miim_dev *miim = bus->priv;
116 ret = regmap_write(miim->regs,
117 MSCC_MIIM_REG_CMD + miim->mii_status_offset,
124 WARN_ONCE(1, "mscc miim write cmd reg error %d\n", ret);
132 ret = regmap_read(miim->regs,
133 MSCC_MIIM_REG_DATA + miim->mii_status_offset, &val);
135 WARN_ONCE(1, "mscc miim read data reg error %d\n", ret);
139 if (!miim->ignore_read_errors && !!(val & MSCC_MIIM_DATA_ERROR)) {
152 struct mscc_miim_dev *miim = bus->priv;
159 ret = regmap_write(miim->regs,
160 MSCC_MIIM_REG_CMD + miim->mii_status_offset,
168 WARN_ONCE(1, "mscc miim write error %d\n", ret);
175 struct mscc_miim_dev *miim = bus->priv;
179 if (!miim->phy_regs)
182 offset = miim->info->phy_reset_offset;
183 bits = miim->info->phy_reset_bits;
185 ret = regmap_update_bits(miim->phy_regs, offset, bits, 0);
191 ret = regmap_update_bits(miim->phy_regs, offset, bits, bits);
219 struct mscc_miim_dev *miim;
222 bus = devm_mdiobus_alloc_size(dev, sizeof(*miim));
233 miim = bus->priv;
237 miim->regs = mii_regmap;
238 miim->mii_status_offset = status_offset;
239 miim->ignore_read_errors = ignore_read_errors;
249 struct mscc_miim_dev *miim = bus->priv;
254 if (!miim->bus_freq)
257 rate = clk_get_rate(miim->clk);
259 div = DIV_ROUND_UP(rate, 2 * miim->bus_freq) - 1;
265 return regmap_update_bits(miim->regs, MSCC_MIIM_REG_CFG,
274 struct mscc_miim_dev *miim;
297 miim = bus->priv;
298 miim->phy_regs = phy_regmap;
300 miim->info = device_get_match_data(dev);
301 if (!miim->info)
304 miim->clk = devm_clk_get_optional(dev, NULL);
305 if (IS_ERR(miim->clk))
306 return PTR_ERR(miim->clk);
308 of_property_read_u32(np, "clock-frequency", &miim->bus_freq);
310 if (miim->bus_freq && !miim->clk) {
315 ret = clk_prepare_enable(miim->clk);
334 clk_disable_unprepare(miim->clk);
341 struct mscc_miim_dev *miim = bus->priv;
343 clk_disable_unprepare(miim->clk);
362 .compatible = "mscc,ocelot-miim",
365 .compatible = "microchip,lan966x-miim",
376 .name = "mscc-miim",