net: phy: add core phylib sfp support
Add core phylib help for supporting SFP sockets on PHYs. This provides a mechanism to inform the SFP layer about PHY up/down events, and also unregister the SFP bus when the PHY is going away. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
fb3d8bcde6
commit
298e54fa81
@@ -203,6 +203,8 @@ static inline const char *phy_modes(phy_interface_t interface)
|
||||
|
||||
struct device;
|
||||
struct phylink;
|
||||
struct sfp_bus;
|
||||
struct sfp_upstream_ops;
|
||||
struct sk_buff;
|
||||
|
||||
/*
|
||||
@@ -342,6 +344,8 @@ struct phy_c45_device_ids {
|
||||
* dev_flags: Device-specific flags used by the PHY driver.
|
||||
* irq: IRQ number of the PHY's interrupt (-1 if none)
|
||||
* phy_timer: The timer for handling the state machine
|
||||
* sfp_bus_attached: flag indicating whether the SFP bus has been attached
|
||||
* sfp_bus: SFP bus attached to this PHY's fiber port
|
||||
* attached_dev: The attached enet driver's device instance ptr
|
||||
* adjust_link: Callback for the enet controller to respond to
|
||||
* changes in the link state.
|
||||
@@ -432,6 +436,9 @@ struct phy_device {
|
||||
|
||||
struct mutex lock;
|
||||
|
||||
/* This may be modified under the rtnl lock */
|
||||
bool sfp_bus_attached;
|
||||
struct sfp_bus *sfp_bus;
|
||||
struct phylink *phylink;
|
||||
struct net_device *attached_dev;
|
||||
|
||||
@@ -1020,6 +1027,10 @@ int phy_suspend(struct phy_device *phydev);
|
||||
int phy_resume(struct phy_device *phydev);
|
||||
int __phy_resume(struct phy_device *phydev);
|
||||
int phy_loopback(struct phy_device *phydev, bool enable);
|
||||
void phy_sfp_attach(void *upstream, struct sfp_bus *bus);
|
||||
void phy_sfp_detach(void *upstream, struct sfp_bus *bus);
|
||||
int phy_sfp_probe(struct phy_device *phydev,
|
||||
const struct sfp_upstream_ops *ops);
|
||||
struct phy_device *phy_attach(struct net_device *dev, const char *bus_id,
|
||||
phy_interface_t interface);
|
||||
struct phy_device *phy_find_first(struct mii_bus *bus);
|
||||
|
||||
Reference in New Issue
Block a user