Commit 653a1809 authored by Michael Sit Wei Hong's avatar Michael Sit Wei Hong Committed by David S. Miller

net: phylink: add phylink_expects_phy() method

Provide phylink_expects_phy() to allow MAC drivers to check if it
is expecting a PHY to attach to. Since fixed-linked setups do not
need to attach to a PHY.

Provides a boolean value as to if the MAC should expect a PHY.
Returns true if a PHY is expected.
Reviewed-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: default avatarMichael Sit Wei Hong <michael.wei.hong.sit@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 44d80732
...@@ -1586,6 +1586,25 @@ void phylink_destroy(struct phylink *pl) ...@@ -1586,6 +1586,25 @@ void phylink_destroy(struct phylink *pl)
} }
EXPORT_SYMBOL_GPL(phylink_destroy); EXPORT_SYMBOL_GPL(phylink_destroy);
/**
* phylink_expects_phy() - Determine if phylink expects a phy to be attached
* @pl: a pointer to a &struct phylink returned from phylink_create()
*
* When using fixed-link mode, or in-band mode with 1000base-X or 2500base-X,
* no PHY is needed.
*
* Returns true if phylink will be expecting a PHY.
*/
bool phylink_expects_phy(struct phylink *pl)
{
if (pl->cfg_link_an_mode == MLO_AN_FIXED ||
(pl->cfg_link_an_mode == MLO_AN_INBAND &&
phy_interface_mode_is_8023z(pl->link_config.interface)))
return false;
return true;
}
EXPORT_SYMBOL_GPL(phylink_expects_phy);
static void phylink_phy_change(struct phy_device *phydev, bool up) static void phylink_phy_change(struct phy_device *phydev, bool up)
{ {
struct phylink *pl = phydev->phylink; struct phylink *pl = phydev->phylink;
......
...@@ -574,6 +574,7 @@ struct phylink *phylink_create(struct phylink_config *, struct fwnode_handle *, ...@@ -574,6 +574,7 @@ struct phylink *phylink_create(struct phylink_config *, struct fwnode_handle *,
phy_interface_t iface, phy_interface_t iface,
const struct phylink_mac_ops *mac_ops); const struct phylink_mac_ops *mac_ops);
void phylink_destroy(struct phylink *); void phylink_destroy(struct phylink *);
bool phylink_expects_phy(struct phylink *pl);
int phylink_connect_phy(struct phylink *, struct phy_device *); int phylink_connect_phy(struct phylink *, struct phy_device *);
int phylink_of_phy_connect(struct phylink *, struct device_node *, u32 flags); int phylink_of_phy_connect(struct phylink *, struct device_node *, u32 flags);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment