Lines Matching full:phydev

175 static int xway_gphy_rgmii_init(struct phy_device *phydev)  in xway_gphy_rgmii_init()  argument
177 struct device *dev = &phydev->mdio.dev; in xway_gphy_rgmii_init()
182 if (!phy_interface_is_rgmii(phydev)) in xway_gphy_rgmii_init()
189 if (phydev->interface == PHY_INTERFACE_MODE_RGMII) { in xway_gphy_rgmii_init()
192 val = phy_read(phydev, XWAY_MDIO_MIICTRL); in xway_gphy_rgmii_init()
200 phydev_warn(phydev, in xway_gphy_rgmii_init()
208 if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID || in xway_gphy_rgmii_init()
209 phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) { in xway_gphy_rgmii_init()
210 int_delay = phy_get_internal_delay(phydev, dev, in xway_gphy_rgmii_init()
221 if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID || in xway_gphy_rgmii_init()
222 phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) { in xway_gphy_rgmii_init()
223 int_delay = phy_get_internal_delay(phydev, dev, in xway_gphy_rgmii_init()
234 return phy_modify(phydev, XWAY_MDIO_MIICTRL, in xway_gphy_rgmii_init()
239 static int xway_gphy_init_leds(struct phy_device *phydev) in xway_gphy_init_leds() argument
246 err = phy_write(phydev, XWAY_MDIO_LED, in xway_gphy_init_leds()
254 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LEDCH, in xway_gphy_init_leds()
258 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LEDCL, in xway_gphy_init_leds()
271 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LED0H, ledxh); in xway_gphy_init_leds()
272 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LED0L, ledxl); in xway_gphy_init_leds()
273 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LED1H, ledxh); in xway_gphy_init_leds()
274 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LED1L, ledxl); in xway_gphy_init_leds()
275 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LED2H, ledxh); in xway_gphy_init_leds()
276 phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LED2L, ledxl); in xway_gphy_init_leds()
281 static int xway_gphy_config_init(struct phy_device *phydev) in xway_gphy_config_init() argument
283 struct device_node *np = phydev->mdio.dev.of_node; in xway_gphy_config_init()
287 err = phy_write(phydev, XWAY_MDIO_IMASK, 0); in xway_gphy_config_init()
293 xway_gphy_init_leds(phydev); in xway_gphy_config_init()
296 phy_read(phydev, XWAY_MDIO_ISTAT); in xway_gphy_config_init()
298 err = xway_gphy_rgmii_init(phydev); in xway_gphy_config_init()
305 static int xway_gphy14_config_aneg(struct phy_device *phydev) in xway_gphy14_config_aneg() argument
311 reg = phy_read(phydev, MII_CTRL1000); in xway_gphy14_config_aneg()
313 err = phy_write(phydev, MII_CTRL1000, reg); in xway_gphy14_config_aneg()
317 return genphy_config_aneg(phydev); in xway_gphy14_config_aneg()
320 static int xway_gphy_ack_interrupt(struct phy_device *phydev) in xway_gphy_ack_interrupt() argument
324 reg = phy_read(phydev, XWAY_MDIO_ISTAT); in xway_gphy_ack_interrupt()
328 static int xway_gphy_config_intr(struct phy_device *phydev) in xway_gphy_config_intr() argument
333 if (phydev->interrupts == PHY_INTERRUPT_ENABLED) { in xway_gphy_config_intr()
334 err = xway_gphy_ack_interrupt(phydev); in xway_gphy_config_intr()
339 err = phy_write(phydev, XWAY_MDIO_IMASK, mask); in xway_gphy_config_intr()
341 err = phy_write(phydev, XWAY_MDIO_IMASK, mask); in xway_gphy_config_intr()
345 err = xway_gphy_ack_interrupt(phydev); in xway_gphy_config_intr()
351 static irqreturn_t xway_gphy_handle_interrupt(struct phy_device *phydev) in xway_gphy_handle_interrupt() argument
355 irq_status = phy_read(phydev, XWAY_MDIO_ISTAT); in xway_gphy_handle_interrupt()
357 phy_error(phydev); in xway_gphy_handle_interrupt()
364 phy_trigger_machine(phydev); in xway_gphy_handle_interrupt()
369 static int xway_gphy_led_brightness_set(struct phy_device *phydev, in xway_gphy_led_brightness_set() argument
378 ret = phy_modify(phydev, XWAY_MDIO_LED, in xway_gphy_led_brightness_set()
387 ret = phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LEDxH(index), 0); in xway_gphy_led_brightness_set()
391 return phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LEDxL(index), 0); in xway_gphy_led_brightness_set()
404 static int xway_gphy_led_hw_is_supported(struct phy_device *phydev, u8 index, in xway_gphy_led_hw_is_supported() argument
427 static int xway_gphy_led_hw_control_get(struct phy_device *phydev, u8 index, in xway_gphy_led_hw_control_get() argument
435 hval = phy_read_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LEDxH(index)); in xway_gphy_led_hw_control_get()
439 lval = phy_read_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LEDxL(index)); in xway_gphy_led_hw_control_get()
466 static int xway_gphy_led_hw_control_set(struct phy_device *phydev, u8 index, in xway_gphy_led_hw_control_set() argument
493 ret = phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LEDxH(index), hval); in xway_gphy_led_hw_control_set()
497 ret = phy_write_mmd(phydev, MDIO_MMD_VEND2, XWAY_MMD_LEDxL(index), lval); in xway_gphy_led_hw_control_set()
501 return phy_set_bits(phydev, XWAY_MDIO_LED, XWAY_GPHY_LED_EN(index)); in xway_gphy_led_hw_control_set()
504 static int xway_gphy_led_polarity_set(struct phy_device *phydev, int index, in xway_gphy_led_polarity_set() argument
527 return phy_set_bits(phydev, XWAY_MDIO_LED, XWAY_GPHY_LED_INV(index)); in xway_gphy_led_polarity_set()
530 return phy_clear_bits(phydev, XWAY_MDIO_LED, XWAY_GPHY_LED_INV(index)); in xway_gphy_led_polarity_set()