net: pcs: xpcs: convert to mdio_device

Unify the 2 existing PCS drivers (lynx and xpcs) by doing a similar
thing on probe, which is to have a *_create function that takes a
struct mdio_device * given by the caller, and builds a private PCS
structure around that.

This changes stmmac to hold only a pointer to the xpcs, as opposed to
the full structure. This will be used in the next patch when struct
mdio_xpcs_ops is removed. Currently a pointer to struct mdio_xpcs_ops
is used as a shorthand to determine whether the port has an XPCS or not.
We can do the same now with the mdio_xpcs_args pointer.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Vladimir Oltean
2021-06-02 19:20:18 +03:00
committed by David S. Miller
parent 679e283ec7
commit 2cac15dae2
6 changed files with 74 additions and 35 deletions

View File

@@ -17,9 +17,8 @@
struct xpcs_id;
struct mdio_xpcs_args {
struct mii_bus *bus;
struct mdio_device *mdiodev;
const struct xpcs_id *id;
int addr;
};
struct mdio_xpcs_ops {
@@ -37,6 +36,8 @@ void xpcs_validate(struct mdio_xpcs_args *xpcs, unsigned long *supported,
struct phylink_link_state *state);
int xpcs_config_eee(struct mdio_xpcs_args *xpcs, int mult_fact_100ns,
int enable);
int xpcs_probe(struct mdio_xpcs_args *xpcs, phy_interface_t interface);
struct mdio_xpcs_args *xpcs_create(struct mdio_device *mdiodev,
phy_interface_t interface);
void xpcs_destroy(struct mdio_xpcs_args *xpcs);
#endif /* __LINUX_PCS_XPCS_H */