Lines Matching refs:phydev
61 static int rtl8211f_phy_extread(struct phy_device *phydev, int addr, in rtl8211f_phy_extread() argument
64 int oldpage = phy_read(phydev, MDIO_DEVAD_NONE, in rtl8211f_phy_extread()
68 phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PAGE_SELECT, devaddr); in rtl8211f_phy_extread()
69 val = phy_read(phydev, MDIO_DEVAD_NONE, regnum); in rtl8211f_phy_extread()
70 phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PAGE_SELECT, oldpage); in rtl8211f_phy_extread()
75 static int rtl8211f_phy_extwrite(struct phy_device *phydev, int addr, in rtl8211f_phy_extwrite() argument
78 int oldpage = phy_read(phydev, MDIO_DEVAD_NONE, in rtl8211f_phy_extwrite()
81 phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PAGE_SELECT, devaddr); in rtl8211f_phy_extwrite()
82 phy_write(phydev, MDIO_DEVAD_NONE, regnum, val); in rtl8211f_phy_extwrite()
83 phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PAGE_SELECT, oldpage); in rtl8211f_phy_extwrite()
88 static int rtl8211b_probe(struct phy_device *phydev) in rtl8211b_probe() argument
91 phydev->flags |= PHY_RTL8211x_FORCE_MASTER; in rtl8211b_probe()
97 static int rtl8211e_probe(struct phy_device *phydev) in rtl8211e_probe() argument
100 phydev->flags |= PHY_RTL8211E_PINE64_GIGABIT_FIX; in rtl8211e_probe()
106 static int rtl8211f_probe(struct phy_device *phydev) in rtl8211f_probe() argument
109 phydev->flags |= PHY_RTL8211F_FORCE_EEE_RXC_ON; in rtl8211f_probe()
116 static int rtl8211x_config(struct phy_device *phydev) in rtl8211x_config() argument
118 phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, BMCR_RESET); in rtl8211x_config()
123 phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211x_PHY_INER, in rtl8211x_config()
126 if (phydev->flags & PHY_RTL8211x_FORCE_MASTER) { in rtl8211x_config()
129 reg = phy_read(phydev, MDIO_DEVAD_NONE, MII_CTRL1000); in rtl8211x_config()
134 phy_write(phydev, MDIO_DEVAD_NONE, MII_CTRL1000, reg); in rtl8211x_config()
136 if (phydev->flags & PHY_RTL8211E_PINE64_GIGABIT_FIX) { in rtl8211x_config()
139 phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PAGE_SELECT, in rtl8211x_config()
141 phy_write(phydev, MDIO_DEVAD_NONE, in rtl8211x_config()
143 reg = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211E_CONFREG); in rtl8211x_config()
148 phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211E_CONFREG, reg); in rtl8211x_config()
149 phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PAGE_SELECT, in rtl8211x_config()
153 phy_read(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211x_PHY_INER); in rtl8211x_config()
155 genphy_config_aneg(phydev); in rtl8211x_config()
160 static int rtl8211f_config(struct phy_device *phydev) in rtl8211f_config() argument
164 if (phydev->flags & PHY_RTL8211F_FORCE_EEE_RXC_ON) { in rtl8211f_config()
167 reg = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_CTRL1); in rtl8211f_config()
169 phy_write_mmd(phydev, MDIO_MMD_PCS, MDIO_CTRL1, reg); in rtl8211f_config()
172 phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, BMCR_RESET); in rtl8211f_config()
174 phy_write(phydev, MDIO_DEVAD_NONE, in rtl8211f_config()
176 reg = phy_read(phydev, MDIO_DEVAD_NONE, 0x11); in rtl8211f_config()
179 if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID || in rtl8211f_config()
180 phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) in rtl8211f_config()
185 phy_write(phydev, MDIO_DEVAD_NONE, 0x11, reg); in rtl8211f_config()
187 phy_write(phydev, MDIO_DEVAD_NONE, in rtl8211f_config()
191 phy_write(phydev, MDIO_DEVAD_NONE, in rtl8211f_config()
193 phy_write(phydev, MDIO_DEVAD_NONE, 0x10, 0x617f); in rtl8211f_config()
194 phy_write(phydev, MDIO_DEVAD_NONE, in rtl8211f_config()
197 genphy_config_aneg(phydev); in rtl8211f_config()
202 static int rtl8211x_parse_status(struct phy_device *phydev) in rtl8211x_parse_status() argument
207 mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211x_PHY_STATUS); in rtl8211x_parse_status()
213 phydev->link = 1; in rtl8211x_parse_status()
219 phydev->link = 0; in rtl8211x_parse_status()
226 mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, in rtl8211x_parse_status()
233 phydev->link = 1; in rtl8211x_parse_status()
235 phydev->link = 0; in rtl8211x_parse_status()
239 phydev->duplex = DUPLEX_FULL; in rtl8211x_parse_status()
241 phydev->duplex = DUPLEX_HALF; in rtl8211x_parse_status()
247 phydev->speed = SPEED_1000; in rtl8211x_parse_status()
250 phydev->speed = SPEED_100; in rtl8211x_parse_status()
253 phydev->speed = SPEED_10; in rtl8211x_parse_status()
259 static int rtl8211f_parse_status(struct phy_device *phydev) in rtl8211f_parse_status() argument
265 phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PAGE_SELECT, 0xa43); in rtl8211f_parse_status()
266 mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PHY_STATUS); in rtl8211f_parse_status()
268 phydev->link = 1; in rtl8211f_parse_status()
272 phydev->link = 0; in rtl8211f_parse_status()
279 mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, in rtl8211f_parse_status()
284 phydev->duplex = DUPLEX_FULL; in rtl8211f_parse_status()
286 phydev->duplex = DUPLEX_HALF; in rtl8211f_parse_status()
292 phydev->speed = SPEED_1000; in rtl8211f_parse_status()
295 phydev->speed = SPEED_100; in rtl8211f_parse_status()
298 phydev->speed = SPEED_10; in rtl8211f_parse_status()
304 static int rtl8211x_startup(struct phy_device *phydev) in rtl8211x_startup() argument
309 ret = genphy_update_link(phydev); in rtl8211x_startup()
313 return rtl8211x_parse_status(phydev); in rtl8211x_startup()
316 static int rtl8211e_startup(struct phy_device *phydev) in rtl8211e_startup() argument
320 ret = genphy_update_link(phydev); in rtl8211e_startup()
324 return genphy_parse_link(phydev); in rtl8211e_startup()
327 static int rtl8211f_startup(struct phy_device *phydev) in rtl8211f_startup() argument
332 ret = genphy_update_link(phydev); in rtl8211f_startup()
337 return rtl8211f_parse_status(phydev); in rtl8211f_startup()