Lines Matching refs:pcs

45 	struct phylink_pcs *pcs;  member
512 struct phylink_pcs *pcs = NULL; in phylink_validate_mac_and_pcs() local
518 pcs = pl->mac_ops->mac_select_pcs(pl->config, state->interface); in phylink_validate_mac_and_pcs()
519 if (IS_ERR(pcs)) in phylink_validate_mac_and_pcs()
520 return PTR_ERR(pcs); in phylink_validate_mac_and_pcs()
523 if (pcs) { in phylink_validate_mac_and_pcs()
528 if (!pcs->ops) { in phylink_validate_mac_and_pcs()
539 if (!phy_interface_empty(pcs->supported_interfaces) && in phylink_validate_mac_and_pcs()
540 !test_bit(state->interface, pcs->supported_interfaces)) { in phylink_validate_mac_and_pcs()
547 if (pcs->ops->pcs_validate) { in phylink_validate_mac_and_pcs()
548 ret = pcs->ops->pcs_validate(pcs, supported, state); in phylink_validate_mac_and_pcs()
868 static unsigned int phylink_pcs_inband_caps(struct phylink_pcs *pcs, in phylink_pcs_inband_caps() argument
871 if (pcs && pcs->ops->pcs_inband_caps) in phylink_pcs_inband_caps()
872 return pcs->ops->pcs_inband_caps(pcs, interface); in phylink_pcs_inband_caps()
877 static void phylink_pcs_pre_config(struct phylink_pcs *pcs, in phylink_pcs_pre_config() argument
880 if (pcs && pcs->ops->pcs_pre_config) in phylink_pcs_pre_config()
881 pcs->ops->pcs_pre_config(pcs, interface); in phylink_pcs_pre_config()
884 static int phylink_pcs_post_config(struct phylink_pcs *pcs, in phylink_pcs_post_config() argument
889 if (pcs && pcs->ops->pcs_post_config) in phylink_pcs_post_config()
890 err = pcs->ops->pcs_post_config(pcs, interface); in phylink_pcs_post_config()
895 static void phylink_pcs_disable(struct phylink_pcs *pcs) in phylink_pcs_disable() argument
897 if (pcs && pcs->ops->pcs_disable) in phylink_pcs_disable()
898 pcs->ops->pcs_disable(pcs); in phylink_pcs_disable()
901 static int phylink_pcs_enable(struct phylink_pcs *pcs) in phylink_pcs_enable() argument
905 if (pcs && pcs->ops->pcs_enable) in phylink_pcs_enable()
906 err = pcs->ops->pcs_enable(pcs); in phylink_pcs_enable()
911 static int phylink_pcs_config(struct phylink_pcs *pcs, unsigned int neg_mode, in phylink_pcs_config() argument
915 if (!pcs) in phylink_pcs_config()
918 return pcs->ops->pcs_config(pcs, neg_mode, state->interface, in phylink_pcs_config()
922 static void phylink_pcs_link_up(struct phylink_pcs *pcs, unsigned int neg_mode, in phylink_pcs_link_up() argument
926 if (pcs && pcs->ops->pcs_link_up) in phylink_pcs_link_up()
927 pcs->ops->pcs_link_up(pcs, neg_mode, interface, speed, duplex); in phylink_pcs_link_up()
930 static void phylink_pcs_disable_eee(struct phylink_pcs *pcs) in phylink_pcs_disable_eee() argument
932 if (pcs && pcs->ops->pcs_disable_eee) in phylink_pcs_disable_eee()
933 pcs->ops->pcs_disable_eee(pcs); in phylink_pcs_disable_eee()
936 static void phylink_pcs_enable_eee(struct phylink_pcs *pcs) in phylink_pcs_enable_eee() argument
938 if (pcs && pcs->ops->pcs_enable_eee) in phylink_pcs_enable_eee()
939 pcs->ops->pcs_enable_eee(pcs); in phylink_pcs_enable_eee()
948 struct phylink_pcs *pcs; in phylink_inband_caps() local
953 pcs = pl->mac_ops->mac_select_pcs(pl->config, interface); in phylink_inband_caps()
954 if (!pcs) in phylink_inband_caps()
957 return phylink_pcs_inband_caps(pcs, interface); in phylink_inband_caps()
968 if (pl->pcs && pl->pcs->poll && pl->cfg_link_an_mode == MLO_AN_INBAND) in phylink_pcs_poll_start()
972 int phylink_pcs_pre_init(struct phylink *pl, struct phylink_pcs *pcs) in phylink_pcs_pre_init() argument
978 pcs->rxc_always_on = true; in phylink_pcs_pre_init()
980 if (pcs->ops->pcs_pre_init) in phylink_pcs_pre_init()
981 ret = pcs->ops->pcs_pre_init(pcs); in phylink_pcs_pre_init()
1012 if (pl->pcs && linkmode_test_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, in phylink_pcs_an_restart()
1016 pl->pcs->ops->pcs_an_restart(pl->pcs); in phylink_pcs_an_restart()
1039 static void phylink_pcs_neg_mode(struct phylink *pl, struct phylink_pcs *pcs, in phylink_pcs_neg_mode() argument
1086 if (pcs) in phylink_pcs_neg_mode()
1087 pcs_ib_caps = phylink_pcs_inband_caps(pcs, interface); in phylink_pcs_neg_mode()
1219 struct phylink_pcs *pcs = NULL; in phylink_major_config() local
1231 pcs = pl->mac_ops->mac_select_pcs(pl->config, state->interface); in phylink_major_config()
1232 if (IS_ERR(pcs)) { in phylink_major_config()
1235 pcs); in phylink_major_config()
1241 pcs_changed = pl->pcs != pcs; in phylink_major_config()
1244 phylink_pcs_neg_mode(pl, pcs, state->interface, state->advertising); in phylink_major_config()
1268 phylink_pcs_disable(pl->pcs); in phylink_major_config()
1270 if (pl->pcs) in phylink_major_config()
1271 pl->pcs->phylink = NULL; in phylink_major_config()
1273 pcs->phylink = pl; in phylink_major_config()
1275 pl->pcs = pcs; in phylink_major_config()
1278 if (pl->pcs) in phylink_major_config()
1279 phylink_pcs_pre_config(pl->pcs, state->interface); in phylink_major_config()
1283 if (pl->pcs) { in phylink_major_config()
1284 err = phylink_pcs_post_config(pl->pcs, state->interface); in phylink_major_config()
1294 phylink_pcs_enable(pl->pcs); in phylink_major_config()
1296 err = phylink_pcs_config(pl->pcs, pl->pcs_neg_mode, state, in phylink_major_config()
1358 phylink_pcs_neg_mode(pl, pl->pcs, pl->link_config.interface, in phylink_change_inband_advert()
1365 ret = phylink_pcs_config(pl->pcs, pl->pcs_neg_mode, &pl->link_config, in phylink_change_inband_advert()
1379 struct phylink_pcs *pcs; in phylink_mac_pcs_get_state() local
1400 pcs = pl->pcs; in phylink_mac_pcs_get_state()
1401 if (pcs) in phylink_mac_pcs_get_state()
1402 pcs->ops->pcs_get_state(pcs, pl->pcs_neg_mode, state); in phylink_mac_pcs_get_state()
1475 phylink_pcs_disable_eee(pl->pcs); in phylink_deactivate_lpi()
1492 phylink_pcs_enable_eee(pl->pcs); in phylink_activate_lpi()
1497 phylink_pcs_disable_eee(pl->pcs); in phylink_activate_lpi()
1540 phylink_pcs_link_up(pl->pcs, pl->pcs_neg_mode, pl->cur_interface, speed, in phylink_link_up()
2355 void phylink_pcs_change(struct phylink_pcs *pcs, bool up) in phylink_pcs_change() argument
2357 struct phylink *pl = pcs->phylink; in phylink_pcs_change()
2469 phylink_pcs_disable(pl->pcs); in phylink_stop()
4068 void phylink_mii_c22_pcs_get_state(struct mdio_device *pcs, in phylink_mii_c22_pcs_get_state() argument
4074 bmsr = mdiodev_read(pcs, MII_BMSR); in phylink_mii_c22_pcs_get_state()
4075 lpa = mdiodev_read(pcs, MII_LPA); in phylink_mii_c22_pcs_get_state()
4137 int phylink_mii_c22_pcs_config(struct mdio_device *pcs, in phylink_mii_c22_pcs_config() argument
4148 ret = mdiobus_modify_changed(pcs->bus, pcs->addr, in phylink_mii_c22_pcs_config()
4161 ret = mdiodev_modify(pcs, MII_BMCR, BMCR_ANENABLE | BMCR_ISOLATE, bmcr); in phylink_mii_c22_pcs_config()
4180 void phylink_mii_c22_pcs_an_restart(struct mdio_device *pcs) in phylink_mii_c22_pcs_an_restart() argument
4182 int val = mdiodev_read(pcs, MII_BMCR); in phylink_mii_c22_pcs_an_restart()
4187 mdiodev_write(pcs, MII_BMCR, val); in phylink_mii_c22_pcs_an_restart()
4192 void phylink_mii_c45_pcs_get_state(struct mdio_device *pcs, in phylink_mii_c45_pcs_get_state() argument
4195 struct mii_bus *bus = pcs->bus; in phylink_mii_c45_pcs_get_state()
4196 int addr = pcs->addr; in phylink_mii_c45_pcs_get_state()