net: xpcs: add support for retrieving supported interface modes
Add a function to the xpcs driver to retrieve the supported PHY interface modes, which can be used by drivers to fill in phylink's supported_interfaces mask. We validate the interface bit index to ensure that it fits within the bitmap as xpcs lists PHY_INTERFACE_MODE_MAX in an entry. Tested-by: Wong Vee Khee <vee.khee.wong@linux.intel.com> # Intel EHL Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3cade91d0e
commit
be6ec5b702
|
@ -662,6 +662,20 @@ void xpcs_validate(struct dw_xpcs *xpcs, unsigned long *supported,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(xpcs_validate);
|
||||
|
||||
void xpcs_get_interfaces(struct dw_xpcs *xpcs, unsigned long *interfaces)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
for (i = 0; i < DW_XPCS_INTERFACE_MAX; i++) {
|
||||
const struct xpcs_compat *compat = &xpcs->id->compat[i];
|
||||
|
||||
for (j = 0; j < compat->num_interfaces; j++)
|
||||
if (compat->interface[j] < PHY_INTERFACE_MODE_MAX)
|
||||
__set_bit(compat->interface[j], interfaces);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(xpcs_get_interfaces);
|
||||
|
||||
int xpcs_config_eee(struct dw_xpcs *xpcs, int mult_fact_100ns, int enable)
|
||||
{
|
||||
int ret;
|
||||
|
|
|
@ -33,6 +33,7 @@ int xpcs_do_config(struct dw_xpcs *xpcs, phy_interface_t interface,
|
|||
unsigned int mode);
|
||||
void xpcs_validate(struct dw_xpcs *xpcs, unsigned long *supported,
|
||||
struct phylink_link_state *state);
|
||||
void xpcs_get_interfaces(struct dw_xpcs *xpcs, unsigned long *interfaces);
|
||||
int xpcs_config_eee(struct dw_xpcs *xpcs, int mult_fact_100ns,
|
||||
int enable);
|
||||
struct dw_xpcs *xpcs_create(struct mdio_device *mdiodev,
|
||||
|
|
Loading…
Reference in New Issue