Lines Matching refs:mdio
3 * mdio.c: Generic support for MDIO-compatible transceivers
11 #include <linux/mdio.h>
20 * @mdio: MDIO interface
26 int mdio45_probe(struct mdio_if_info *mdio, int prtad)
34 stat2 = mdio->mdio_read(mdio->dev, prtad, mmd, MDIO_STAT2);
40 devs1 = mdio->mdio_read(mdio->dev, prtad, mmd, MDIO_DEVS1);
41 devs2 = mdio->mdio_read(mdio->dev, prtad, mmd, MDIO_DEVS2);
45 mdio->prtad = prtad;
46 mdio->mmds = devs1 | (devs2 << 16);
56 * @mdio: MDIO interface
66 int mdio_set_flag(const struct mdio_if_info *mdio,
70 int old_val = mdio->mdio_read(mdio->dev, prtad, devad, addr);
81 return mdio->mdio_write(mdio->dev, prtad, devad, addr, new_val);
87 * @mdio: MDIO interface
91 * @mmd_mask is normally @mdio->mmds, but if loopback is enabled
94 int mdio45_links_ok(const struct mdio_if_info *mdio, u32 mmd_mask)
100 reg = mdio->mdio_read(mdio->dev, mdio->prtad,
110 mdio->mdio_read(mdio->dev, mdio->prtad,
114 mdio->mdio_read(mdio->dev, mdio->prtad,
118 reg = mdio->mdio_read(mdio->dev, mdio->prtad,
133 * @mdio: MDIO interface
137 int mdio45_nway_restart(const struct mdio_if_info *mdio)
139 if (!(mdio->mmds & MDIO_DEVS_AN))
142 mdio_set_flag(mdio, mdio->prtad, MDIO_MMD_AN, MDIO_CTRL1,
148 static u32 mdio45_get_an(const struct mdio_if_info *mdio, u16 addr)
153 reg = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_AN, addr);
171 * @mdio: MDIO interface
183 void mdio45_ethtool_gset_npage(const struct mdio_if_info *mdio,
194 ecmd->phy_address = mdio->prtad;
196 mdio->mode_support & (MDIO_SUPPORTS_C45 | MDIO_SUPPORTS_C22);
198 reg = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_PMAPMD,
207 reg = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_PMAPMD,
234 reg = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_PMAPMD,
242 reg = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_PMAPMD,
257 if (mdio->mmds & MDIO_DEVS_AN) {
259 reg = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_AN,
265 mdio45_get_an(mdio, MDIO_AN_ADVERTISE) |
276 int an_stat = mdio->mdio_read(mdio->dev, mdio->prtad,
283 mdio45_get_an(mdio, MDIO_AN_LPA) | npage_lpa;
311 reg = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_PMAPMD,
324 switch (mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_PMAPMD,
343 * @mdio: MDIO interface
355 void mdio45_ethtool_ksettings_get_npage(const struct mdio_if_info *mdio,
365 cmd->base.phy_address = mdio->prtad;
367 mdio->mode_support & (MDIO_SUPPORTS_C45 | MDIO_SUPPORTS_C22);
369 reg = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_PMAPMD,
378 reg = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_PMAPMD,
405 reg = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_PMAPMD,
413 reg = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_PMAPMD,
428 if (mdio->mmds & MDIO_DEVS_AN) {
430 reg = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_AN,
436 mdio45_get_an(mdio, MDIO_AN_ADVERTISE) |
447 int an_stat = mdio->mdio_read(mdio->dev, mdio->prtad,
455 mdio45_get_an(mdio, MDIO_AN_LPA) | npage_lpa;
483 reg = mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_PMAPMD,
502 switch (mdio->mdio_read(mdio->dev, mdio->prtad, MDIO_MMD_PMAPMD,
521 * @mdio: MDIO interface
527 int mdio_mii_ioctl(const struct mdio_if_info *mdio,
536 if (mdio->prtad == MDIO_PRTAD_NONE)
538 mii_data->phy_id = mdio->prtad;
549 if ((mdio->mode_support & MDIO_SUPPORTS_C45) &&
553 } else if ((mdio->mode_support & MDIO_SUPPORTS_C22) &&
558 } else if ((mdio->mode_support & MDIO_EMULATE_C22) &&
559 mdio->prtad != MDIO_PRTAD_NONE &&
560 mii_data->phy_id == mdio->prtad) {
562 prtad = mdio->prtad;
568 devad = __ffs(mdio->mmds);
572 if (!(mdio->mmds & MDIO_DEVS_AN))
588 int rc = mdio->mdio_read(mdio->dev, prtad, devad, addr);
594 return mdio->mdio_write(mdio->dev, prtad, devad, addr,