Lines Matching refs:phydev

40 static int __genphy_config_advert(struct rt_phy_device *phydev)  in __genphy_config_advert()  argument
46 phydev->advertising &= phydev->supported; in __genphy_config_advert()
47 advertise = phydev->advertising; in __genphy_config_advert()
49 adv = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_ADVERTISE); in __genphy_config_advert()
59 err = rt_phy_write(phydev, RT_MDIO_DEVAD_NONE, RT_MII_ADVERTISE, adv); in __genphy_config_advert()
66 bmsr = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_BMSR); in __genphy_config_advert()
73 adv = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_CTRL1000); in __genphy_config_advert()
81 if (phydev->supported & (RT_SUPPORTED_1000baseT_Half | in __genphy_config_advert()
93 err = rt_phy_write(phydev, RT_MDIO_DEVAD_NONE, RT_MII_CTRL1000, adv); in __genphy_config_advert()
100 int __genphy_restart_aneg(struct rt_phy_device *phydev) in __genphy_restart_aneg() argument
104 ctl = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_BMCR); in __genphy_restart_aneg()
113 ctl = rt_phy_write(phydev, RT_MDIO_DEVAD_NONE, RT_MII_BMCR, ctl); in __genphy_restart_aneg()
118 int rt_genphy_config_aneg(struct rt_phy_device *phydev) in rt_genphy_config_aneg() argument
123 if (phydev->autoneg != AUTONEG_ENABLE) in rt_genphy_config_aneg()
125 phydev->pause = 0; in rt_genphy_config_aneg()
127 if (phydev->speed == SPEED_1000) in rt_genphy_config_aneg()
129 else if (phydev->speed == SPEED_100) in rt_genphy_config_aneg()
132 if (phydev->duplex == DUPLEX_FULL) in rt_genphy_config_aneg()
135 err = rt_phy_write(phydev, RT_MDIO_DEVAD_NONE, RT_MII_BMCR, ctl); in rt_genphy_config_aneg()
140 result = __genphy_config_advert(phydev); in rt_genphy_config_aneg()
147 int ctl = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_BMCR); in rt_genphy_config_aneg()
157 result = __genphy_restart_aneg(phydev); in rt_genphy_config_aneg()
162 int rt_genphy_update_link(struct rt_phy_device *phydev) in rt_genphy_update_link() argument
166 mii_reg = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_BMSR); in rt_genphy_update_link()
168 if (phydev->link && mii_reg & RT_BMSR_LSTATUS) in rt_genphy_update_link()
171 if ((phydev->autoneg == AUTONEG_ENABLE) && in rt_genphy_update_link()
182 phydev->link = 0; in rt_genphy_update_link()
186 mii_reg = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_BMSR); in rt_genphy_update_link()
191 phydev->link = 1; in rt_genphy_update_link()
193 mii_reg = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_BMSR); in rt_genphy_update_link()
196 phydev->link = 1; in rt_genphy_update_link()
198 phydev->link = 0; in rt_genphy_update_link()
204 static void __genphy_auto_neg(struct rt_phy_device *phydev,int mii_reg) in __genphy_auto_neg() argument
210 if (phydev->supported & (RT_SUPPORTED_1000baseT_Full | in __genphy_auto_neg()
214 gblpa = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_STAT1000); in __genphy_auto_neg()
220 gblpa &= rt_phy_read(phydev, in __genphy_auto_neg()
224 phydev->speed = SPEED_10; in __genphy_auto_neg()
225 phydev->duplex = DUPLEX_HALF; in __genphy_auto_neg()
229 phydev->speed = SPEED_1000; in __genphy_auto_neg()
232 phydev->duplex = DUPLEX_FULL; in __genphy_auto_neg()
237 lpa = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_ADVERTISE); in __genphy_auto_neg()
238 lpa &= rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_LPA); in __genphy_auto_neg()
242 phydev->speed = SPEED_100; in __genphy_auto_neg()
245 phydev->duplex = DUPLEX_FULL; in __genphy_auto_neg()
249 phydev->duplex = DUPLEX_FULL; in __genphy_auto_neg()
253 estatus = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, in __genphy_auto_neg()
259 phydev->speed = SPEED_1000; in __genphy_auto_neg()
261 phydev->duplex = DUPLEX_FULL; in __genphy_auto_neg()
264 int rt_genphy_parse_link(struct rt_phy_device *phydev) in rt_genphy_parse_link() argument
266 int mii_reg = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_BMSR); in rt_genphy_parse_link()
268 if (phydev->autoneg == AUTONEG_ENABLE) in rt_genphy_parse_link()
270 __genphy_auto_neg(phydev, mii_reg); in rt_genphy_parse_link()
272 rt_uint32_t bmcr = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_BMCR); in rt_genphy_parse_link()
274 phydev->speed = SPEED_10; in rt_genphy_parse_link()
275 phydev->duplex = DUPLEX_HALF; in rt_genphy_parse_link()
278 phydev->duplex = DUPLEX_FULL; in rt_genphy_parse_link()
281 phydev->speed = SPEED_1000; in rt_genphy_parse_link()
283 phydev->speed = SPEED_100; in rt_genphy_parse_link()
289 int rt_genphy_config(struct rt_phy_device *phydev) in rt_genphy_config() argument
298 val = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_BMSR); in rt_genphy_config()
317 val = rt_phy_read(phydev, RT_MDIO_DEVAD_NONE, RT_MII_ESTATUS); in rt_genphy_config()
332 phydev->supported &= features; in rt_genphy_config()
333 phydev->advertising &= features; in rt_genphy_config()
335 rt_genphy_config_aneg(phydev); in rt_genphy_config()
340 int rt_genphy_startup(struct rt_phy_device *phydev) in rt_genphy_startup() argument
344 ret = rt_genphy_update_link(phydev); in rt_genphy_startup()
348 return rt_genphy_parse_link(phydev); in rt_genphy_startup()