Lines Matching full:phydev

130 static int qca807x_cable_test_start(struct phy_device *phydev)  in qca807x_cable_test_start()  argument
136 static int qca807x_led_parse_netdev(struct phy_device *phydev, unsigned long rules, in qca807x_led_parse_netdev() argument
140 switch (phydev->port) { in qca807x_led_parse_netdev()
181 static int qca807x_led_hw_control_enable(struct phy_device *phydev, u8 index) in qca807x_led_hw_control_enable() argument
189 return qca808x_led_reg_hw_control_enable(phydev, reg); in qca807x_led_hw_control_enable()
192 static int qca807x_led_hw_is_supported(struct phy_device *phydev, u8 index, in qca807x_led_hw_is_supported() argument
200 return qca807x_led_parse_netdev(phydev, rules, &offload_trigger); in qca807x_led_hw_is_supported()
203 static int qca807x_led_hw_control_set(struct phy_device *phydev, u8 index, in qca807x_led_hw_control_set() argument
212 ret = qca807x_led_parse_netdev(phydev, rules, &offload_trigger); in qca807x_led_hw_control_set()
216 ret = qca807x_led_hw_control_enable(phydev, index); in qca807x_led_hw_control_set()
220 switch (phydev->port) { in qca807x_led_hw_control_set()
234 return phy_modify_mmd(phydev, MDIO_MMD_AN, reg, mask, in qca807x_led_hw_control_set()
238 static bool qca807x_led_hw_control_status(struct phy_device *phydev, u8 index) in qca807x_led_hw_control_status() argument
246 return qca808x_led_reg_hw_control_status(phydev, reg); in qca807x_led_hw_control_status()
249 static int qca807x_led_hw_control_get(struct phy_device *phydev, u8 index, in qca807x_led_hw_control_get() argument
259 if (qca807x_led_hw_control_status(phydev, index)) in qca807x_led_hw_control_get()
263 switch (phydev->port) { in qca807x_led_hw_control_get()
266 val = phy_read_mmd(phydev, MDIO_MMD_AN, reg); in qca807x_led_hw_control_get()
285 val = phy_read_mmd(phydev, MDIO_MMD_AN, reg); in qca807x_led_hw_control_get()
306 static int qca807x_led_hw_control_reset(struct phy_device *phydev, u8 index) in qca807x_led_hw_control_reset() argument
313 switch (phydev->port) { in qca807x_led_hw_control_reset()
327 return phy_clear_bits_mmd(phydev, MDIO_MMD_AN, reg, mask); in qca807x_led_hw_control_reset()
330 static int qca807x_led_brightness_set(struct phy_device *phydev, in qca807x_led_brightness_set() argument
341 ret = qca807x_led_hw_control_reset(phydev, index); in qca807x_led_brightness_set()
347 return qca808x_led_reg_brightness_set(phydev, reg, value); in qca807x_led_brightness_set()
350 static int qca807x_led_blink_set(struct phy_device *phydev, u8 index, in qca807x_led_blink_set() argument
360 return qca808x_led_reg_blink_set(phydev, reg, delay_on, delay_off); in qca807x_led_blink_set()
405 static int qca807x_gpio(struct phy_device *phydev) in qca807x_gpio() argument
407 struct device *dev = &phydev->mdio.dev; in qca807x_gpio()
415 priv->phy = phydev; in qca807x_gpio()
436 static int qca807x_read_fiber_status(struct phy_device *phydev) in qca807x_read_fiber_status() argument
441 err = genphy_c37_read_status(phydev, &changed); in qca807x_read_fiber_status()
449 ss = phy_read(phydev, AT803X_SPECIFIC_STATUS); in qca807x_read_fiber_status()
453 phydev->speed = SPEED_UNKNOWN; in qca807x_read_fiber_status()
454 phydev->duplex = DUPLEX_UNKNOWN; in qca807x_read_fiber_status()
458 phydev->speed = SPEED_100; in qca807x_read_fiber_status()
461 phydev->speed = SPEED_1000; in qca807x_read_fiber_status()
466 phydev->duplex = DUPLEX_FULL; in qca807x_read_fiber_status()
468 phydev->duplex = DUPLEX_HALF; in qca807x_read_fiber_status()
474 static int qca807x_read_status(struct phy_device *phydev) in qca807x_read_status() argument
476 if (linkmode_test_bit(ETHTOOL_LINK_MODE_FIBRE_BIT, phydev->supported)) { in qca807x_read_status()
477 switch (phydev->port) { in qca807x_read_status()
479 return qca807x_read_fiber_status(phydev); in qca807x_read_status()
481 return at803x_read_status(phydev); in qca807x_read_status()
487 return at803x_read_status(phydev); in qca807x_read_status()
490 static int qca807x_phy_package_probe_once(struct phy_device *phydev) in qca807x_phy_package_probe_once() argument
492 struct qca807x_shared_priv *priv = phy_package_get_priv(phydev); in qca807x_phy_package_probe_once()
493 struct device_node *np = phy_package_get_node(phydev); in qca807x_phy_package_probe_once()
562 static int qca807x_phy_package_config_init_once(struct phy_device *phydev) in qca807x_phy_package_config_init_once() argument
564 struct qca807x_shared_priv *priv = phy_package_get_priv(phydev); in qca807x_phy_package_config_init_once()
569 phydev->interface != priv->package_mode) in qca807x_phy_package_config_init_once()
572 phy_lock_mdio_bus(phydev); in qca807x_phy_package_config_init_once()
575 val = __phy_package_read(phydev, QCA807X_COMBO_ADDR, in qca807x_phy_package_config_init_once()
590 ret = __phy_package_write(phydev, QCA807X_COMBO_ADDR, in qca807x_phy_package_config_init_once()
596 val = __phy_package_read(phydev, QCA807X_PQSGMII_ADDR, in qca807x_phy_package_config_init_once()
599 ret = __phy_package_write(phydev, QCA807X_PQSGMII_ADDR, in qca807x_phy_package_config_init_once()
606 val = __phy_package_read(phydev, QCA807X_PQSGMII_ADDR, in qca807x_phy_package_config_init_once()
609 ret = __phy_package_write(phydev, QCA807X_PQSGMII_ADDR, in qca807x_phy_package_config_init_once()
615 val = __phy_package_read_mmd(phydev, QCA807X_PQSGMII_ADDR, in qca807x_phy_package_config_init_once()
618 ret = __phy_package_write_mmd(phydev, QCA807X_PQSGMII_ADDR, in qca807x_phy_package_config_init_once()
624 val = __phy_package_read(phydev, QCA807X_PQSGMII_ADDR, in qca807x_phy_package_config_init_once()
628 ret = __phy_package_write(phydev, QCA807X_PQSGMII_ADDR, in qca807x_phy_package_config_init_once()
634 val = __phy_package_read_mmd(phydev, QCA807X_COMBO_ADDR, in qca807x_phy_package_config_init_once()
637 ret = __phy_package_write_mmd(phydev, QCA807X_COMBO_ADDR, in qca807x_phy_package_config_init_once()
641 phy_unlock_mdio_bus(phydev); in qca807x_phy_package_config_init_once()
648 struct phy_device *phydev = upstream; in qca807x_sfp_insert() local
654 sfp_parse_support(phydev->sfp_bus, id, support, interfaces); in qca807x_sfp_insert()
655 iface = sfp_select_interface(phydev->sfp_bus, support); in qca807x_sfp_insert()
657 dev_info(&phydev->mdio.dev, "%s SFP module inserted\n", phy_modes(iface)); in qca807x_sfp_insert()
663 ret = phy_modify(phydev, in qca807x_sfp_insert()
668 ret = phy_set_bits_mmd(phydev, in qca807x_sfp_insert()
673 ret = phy_clear_bits(phydev, in qca807x_sfp_insert()
677 phydev->port = PORT_FIBRE; in qca807x_sfp_insert()
680 dev_err(&phydev->mdio.dev, "Incompatible SFP module inserted\n"); in qca807x_sfp_insert()
689 struct phy_device *phydev = upstream; in qca807x_sfp_remove() local
692 phy_set_bits(phydev, in qca807x_sfp_remove()
696 phydev->port = PORT_TP; in qca807x_sfp_remove()
708 static int qca807x_probe(struct phy_device *phydev) in qca807x_probe() argument
710 struct device_node *node = phydev->mdio.dev.of_node; in qca807x_probe()
712 struct device *dev = &phydev->mdio.dev; in qca807x_probe()
716 ret = devm_of_phy_package_join(dev, phydev, sizeof(*shared_priv)); in qca807x_probe()
720 if (phy_package_probe_once(phydev)) { in qca807x_probe()
721 ret = qca807x_phy_package_probe_once(phydev); in qca807x_probe()
726 shared_priv = phy_package_get_priv(phydev); in qca807x_probe()
740 ret = qca807x_gpio(phydev); in qca807x_probe()
747 if (phy_read(phydev, QCA807X_CHIP_CONFIGURATION)) { in qca807x_probe()
748 ret = phy_sfp_probe(phydev, &qca807x_sfp_ops); in qca807x_probe()
751 linkmode_set_bit(ETHTOOL_LINK_MODE_FIBRE_BIT, phydev->supported); in qca807x_probe()
752 linkmode_set_bit(ETHTOOL_LINK_MODE_FIBRE_BIT, phydev->advertising); in qca807x_probe()
755 phydev->priv = priv; in qca807x_probe()
760 static int qca807x_config_init(struct phy_device *phydev) in qca807x_config_init() argument
762 struct qca807x_priv *priv = phydev->priv; in qca807x_config_init()
766 if (phy_package_init_once(phydev)) { in qca807x_config_init()
767 ret = qca807x_phy_package_config_init_once(phydev); in qca807x_config_init()
772 ret = qcom_phy_counter_config(phydev); in qca807x_config_init()
776 control_dac = phy_read_mmd(phydev, MDIO_MMD_AN, in qca807x_config_init()
785 return phy_write_mmd(phydev, MDIO_MMD_AN, in qca807x_config_init()
790 static int qca807x_update_stats(struct phy_device *phydev) in qca807x_update_stats() argument
792 struct qca807x_priv *priv = phydev->priv; in qca807x_update_stats()
794 return qcom_phy_update_stats(phydev, &priv->hw_stats); in qca807x_update_stats()
797 static void qca807x_get_phy_stats(struct phy_device *phydev, in qca807x_get_phy_stats() argument
801 struct qca807x_priv *priv = phydev->priv; in qca807x_get_phy_stats()