Lines Matching refs:pcs
45 struct phylink_pcs *pcs; member
514 struct phylink_pcs *pcs = NULL; in phylink_validate_mac_and_pcs() local
520 pcs = pl->mac_ops->mac_select_pcs(pl->config, state->interface); in phylink_validate_mac_and_pcs()
521 if (IS_ERR(pcs)) in phylink_validate_mac_and_pcs()
522 return PTR_ERR(pcs); in phylink_validate_mac_and_pcs()
525 if (pcs) { in phylink_validate_mac_and_pcs()
530 if (!pcs->ops) { in phylink_validate_mac_and_pcs()
541 if (!phy_interface_empty(pcs->supported_interfaces) && in phylink_validate_mac_and_pcs()
542 !test_bit(state->interface, pcs->supported_interfaces)) { in phylink_validate_mac_and_pcs()
549 if (pcs->ops->pcs_validate) { in phylink_validate_mac_and_pcs()
550 ret = pcs->ops->pcs_validate(pcs, supported, state); in phylink_validate_mac_and_pcs()
870 static unsigned int phylink_pcs_inband_caps(struct phylink_pcs *pcs, in phylink_pcs_inband_caps() argument
873 if (pcs && pcs->ops->pcs_inband_caps) in phylink_pcs_inband_caps()
874 return pcs->ops->pcs_inband_caps(pcs, interface); in phylink_pcs_inband_caps()
879 static void phylink_pcs_pre_config(struct phylink_pcs *pcs, in phylink_pcs_pre_config() argument
882 if (pcs && pcs->ops->pcs_pre_config) in phylink_pcs_pre_config()
883 pcs->ops->pcs_pre_config(pcs, interface); in phylink_pcs_pre_config()
886 static int phylink_pcs_post_config(struct phylink_pcs *pcs, in phylink_pcs_post_config() argument
891 if (pcs && pcs->ops->pcs_post_config) in phylink_pcs_post_config()
892 err = pcs->ops->pcs_post_config(pcs, interface); in phylink_pcs_post_config()
897 static void phylink_pcs_disable(struct phylink_pcs *pcs) in phylink_pcs_disable() argument
899 if (pcs && pcs->ops->pcs_disable) in phylink_pcs_disable()
900 pcs->ops->pcs_disable(pcs); in phylink_pcs_disable()
903 static int phylink_pcs_enable(struct phylink_pcs *pcs) in phylink_pcs_enable() argument
907 if (pcs && pcs->ops->pcs_enable) in phylink_pcs_enable()
908 err = pcs->ops->pcs_enable(pcs); in phylink_pcs_enable()
913 static int phylink_pcs_config(struct phylink_pcs *pcs, unsigned int neg_mode, in phylink_pcs_config() argument
917 if (!pcs) in phylink_pcs_config()
920 return pcs->ops->pcs_config(pcs, neg_mode, state->interface, in phylink_pcs_config()
924 static void phylink_pcs_link_up(struct phylink_pcs *pcs, unsigned int neg_mode, in phylink_pcs_link_up() argument
928 if (pcs && pcs->ops->pcs_link_up) in phylink_pcs_link_up()
929 pcs->ops->pcs_link_up(pcs, neg_mode, interface, speed, duplex); in phylink_pcs_link_up()
932 static void phylink_pcs_disable_eee(struct phylink_pcs *pcs) in phylink_pcs_disable_eee() argument
934 if (pcs && pcs->ops->pcs_disable_eee) in phylink_pcs_disable_eee()
935 pcs->ops->pcs_disable_eee(pcs); in phylink_pcs_disable_eee()
938 static void phylink_pcs_enable_eee(struct phylink_pcs *pcs) in phylink_pcs_enable_eee() argument
940 if (pcs && pcs->ops->pcs_enable_eee) in phylink_pcs_enable_eee()
941 pcs->ops->pcs_enable_eee(pcs); in phylink_pcs_enable_eee()
950 struct phylink_pcs *pcs; in phylink_inband_caps() local
955 pcs = pl->mac_ops->mac_select_pcs(pl->config, interface); in phylink_inband_caps()
956 if (!pcs) in phylink_inband_caps()
959 return phylink_pcs_inband_caps(pcs, interface); in phylink_inband_caps()
970 if (pl->pcs && pl->pcs->poll && pl->cfg_link_an_mode == MLO_AN_INBAND) in phylink_pcs_poll_start()
974 int phylink_pcs_pre_init(struct phylink *pl, struct phylink_pcs *pcs) in phylink_pcs_pre_init() argument
980 pcs->rxc_always_on = true; in phylink_pcs_pre_init()
982 if (pcs->ops->pcs_pre_init) in phylink_pcs_pre_init()
983 ret = pcs->ops->pcs_pre_init(pcs); in phylink_pcs_pre_init()
1014 if (pl->pcs && linkmode_test_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, in phylink_pcs_an_restart()
1018 pl->pcs->ops->pcs_an_restart(pl->pcs); in phylink_pcs_an_restart()
1077 static void phylink_pcs_neg_mode(struct phylink *pl, struct phylink_pcs *pcs, in phylink_pcs_neg_mode() argument
1097 if (pcs) in phylink_pcs_neg_mode()
1098 pcs_ib_caps = phylink_pcs_inband_caps(pcs, interface); in phylink_pcs_neg_mode()
1230 struct phylink_pcs *pcs = NULL; in phylink_major_config() local
1242 pcs = pl->mac_ops->mac_select_pcs(pl->config, state->interface); in phylink_major_config()
1243 if (IS_ERR(pcs)) { in phylink_major_config()
1246 pcs); in phylink_major_config()
1252 pcs_changed = pl->pcs != pcs; in phylink_major_config()
1255 phylink_pcs_neg_mode(pl, pcs, state->interface, state->advertising); in phylink_major_config()
1279 phylink_pcs_disable(pl->pcs); in phylink_major_config()
1281 if (pl->pcs) in phylink_major_config()
1282 pl->pcs->phylink = NULL; in phylink_major_config()
1284 pcs->phylink = pl; in phylink_major_config()
1286 pl->pcs = pcs; in phylink_major_config()
1289 if (pl->pcs) in phylink_major_config()
1290 phylink_pcs_pre_config(pl->pcs, state->interface); in phylink_major_config()
1294 if (pl->pcs) { in phylink_major_config()
1295 err = phylink_pcs_post_config(pl->pcs, state->interface); in phylink_major_config()
1305 phylink_pcs_enable(pl->pcs); in phylink_major_config()
1307 err = phylink_pcs_config(pl->pcs, pl->pcs_neg_mode, state, in phylink_major_config()
1369 phylink_pcs_neg_mode(pl, pl->pcs, pl->link_config.interface, in phylink_change_inband_advert()
1376 ret = phylink_pcs_config(pl->pcs, pl->pcs_neg_mode, &pl->link_config, in phylink_change_inband_advert()
1390 struct phylink_pcs *pcs; in phylink_mac_pcs_get_state() local
1411 pcs = pl->pcs; in phylink_mac_pcs_get_state()
1412 if (pcs) in phylink_mac_pcs_get_state()
1413 pcs->ops->pcs_get_state(pcs, pl->pcs_neg_mode, state); in phylink_mac_pcs_get_state()
1491 phylink_pcs_disable_eee(pl->pcs); in phylink_deactivate_lpi()
1508 phylink_pcs_enable_eee(pl->pcs); in phylink_activate_lpi()
1513 phylink_pcs_disable_eee(pl->pcs); in phylink_activate_lpi()
1556 phylink_pcs_link_up(pl->pcs, pl->pcs_neg_mode, pl->cur_interface, speed, in phylink_link_up()
2386 void phylink_pcs_change(struct phylink_pcs *pcs, bool up) in phylink_pcs_change() argument
2388 struct phylink *pl = pcs->phylink; in phylink_pcs_change()
2500 phylink_pcs_disable(pl->pcs); in phylink_stop()
4117 void phylink_mii_c22_pcs_get_state(struct mdio_device *pcs, in phylink_mii_c22_pcs_get_state() argument
4123 bmsr = mdiodev_read(pcs, MII_BMSR); in phylink_mii_c22_pcs_get_state()
4124 lpa = mdiodev_read(pcs, MII_LPA); in phylink_mii_c22_pcs_get_state()
4186 int phylink_mii_c22_pcs_config(struct mdio_device *pcs, in phylink_mii_c22_pcs_config() argument
4197 ret = mdiobus_modify_changed(pcs->bus, pcs->addr, in phylink_mii_c22_pcs_config()
4210 ret = mdiodev_modify(pcs, MII_BMCR, BMCR_ANENABLE | BMCR_ISOLATE, bmcr); in phylink_mii_c22_pcs_config()
4229 void phylink_mii_c22_pcs_an_restart(struct mdio_device *pcs) in phylink_mii_c22_pcs_an_restart() argument
4231 int val = mdiodev_read(pcs, MII_BMCR); in phylink_mii_c22_pcs_an_restart()
4236 mdiodev_write(pcs, MII_BMCR, val); in phylink_mii_c22_pcs_an_restart()
4241 void phylink_mii_c45_pcs_get_state(struct mdio_device *pcs, in phylink_mii_c45_pcs_get_state() argument
4244 struct mii_bus *bus = pcs->bus; in phylink_mii_c45_pcs_get_state()
4245 int addr = pcs->addr; in phylink_mii_c45_pcs_get_state()