Lines Matching defs:phydev
168 static int xway_gphy_rgmii_init(struct phy_device *phydev)
170 struct device *dev = &phydev->mdio.dev;
175 if (!phy_interface_is_rgmii(phydev))
182 if (phydev->interface == PHY_INTERFACE_MODE_RGMII) {
185 val = phy_read(phydev, XWAY_MDIO_MIICTRL);
193 phydev_warn(phydev,
201 if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID ||
202 phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) {
203 int_delay = phy_get_internal_delay(phydev, dev,
214 if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID ||
215 phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) {
216 int_delay = phy_get_internal_delay(phydev, dev,
227 return phy_modify(phydev, XWAY_MDIO_MIICTRL,
232 static int xway_gphy_config_init(struct phy_device *phydev)
239 err = phy_write(phydev, XWAY_MDIO_IMASK, 0);
244 phy_read(phydev, XWAY_MDIO_ISTAT);
247 err = phy_write(phydev, XWAY_MDIO_LED,
255 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LEDCH,
259 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LEDCL,
272 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LED0H, ledxh);
273 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LED0L, ledxl);
274 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LED1H, ledxh);
275 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LED1L, ledxl);
276 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LED2H, ledxh);
277 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LED2L, ledxl);
279 err = xway_gphy_rgmii_init(phydev);
286 static int xway_gphy14_config_aneg(struct phy_device *phydev)
292 reg = phy_read(phydev, MII_CTRL1000);
294 err = phy_write(phydev, MII_CTRL1000, reg);
298 return genphy_config_aneg(phydev);
301 static int xway_gphy_ack_interrupt(struct phy_device *phydev)
305 reg = phy_read(phydev, XWAY_MDIO_ISTAT);
309 static int xway_gphy_config_intr(struct phy_device *phydev)
314 if (phydev->interrupts == PHY_INTERRUPT_ENABLED) {
315 err = xway_gphy_ack_interrupt(phydev);
320 err = phy_write(phydev, XWAY_MDIO_IMASK, mask);
322 err = phy_write(phydev, XWAY_MDIO_IMASK, mask);
326 err = xway_gphy_ack_interrupt(phydev);
332 static irqreturn_t xway_gphy_handle_interrupt(struct phy_device *phydev)
336 irq_status = phy_read(phydev, XWAY_MDIO_ISTAT);
338 phy_error(phydev);
345 phy_trigger_machine(phydev);