mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
net: phy: Add Synopsys DesignWare XPCS MDIO module
Synopsys DesignWare XPCS is an MMD that can manage link status, auto-negotiation, link training, ... In this commit we add basic support for XPCS using USXGMII interface and Clause 73 Auto-negotiation. This is highly tied with PHYLINK and can't be used without it. A given ethernet driver can use the provided callbacks to add the support for XPCS. Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
9414819654
commit
fcb26bd2b6
@@ -16117,6 +16117,13 @@ L: netdev@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/net/ethernet/synopsys/
|
||||
|
||||
SYNOPSYS DESIGNWARE ETHERNET XPCS DRIVER
|
||||
M: Jose Abreu <Jose.Abreu@synopsys.com>
|
||||
L: netdev@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/net/phy/mdio-xpcs.c
|
||||
F: include/linux/mdio-xpcs.h
|
||||
|
||||
SYNOPSYS DESIGNWARE I2C DRIVER
|
||||
M: Jarkko Nikula <jarkko.nikula@linux.intel.com>
|
||||
R: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||
|
||||
@@ -214,6 +214,12 @@ config MDIO_XGENE
|
||||
This module provides a driver for the MDIO busses found in the
|
||||
APM X-Gene SoC's.
|
||||
|
||||
config MDIO_XPCS
|
||||
tristate "Synopsys DesignWare XPCS controller"
|
||||
help
|
||||
This module provides helper functions for Synopsys DesignWare XPCS
|
||||
controllers.
|
||||
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ obj-$(CONFIG_MDIO_OCTEON) += mdio-octeon.o
|
||||
obj-$(CONFIG_MDIO_SUN4I) += mdio-sun4i.o
|
||||
obj-$(CONFIG_MDIO_THUNDER) += mdio-thunder.o
|
||||
obj-$(CONFIG_MDIO_XGENE) += mdio-xgene.o
|
||||
obj-$(CONFIG_MDIO_XPCS) += mdio-xpcs.o
|
||||
|
||||
obj-$(CONFIG_NETWORK_PHY_TIMESTAMPING) += mii_timestamper.o
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,41 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2020 Synopsys, Inc. and/or its affiliates.
|
||||
* Synopsys DesignWare XPCS helpers
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MDIO_XPCS_H
|
||||
#define __LINUX_MDIO_XPCS_H
|
||||
|
||||
#include <linux/phy.h>
|
||||
#include <linux/phylink.h>
|
||||
|
||||
struct mdio_xpcs_args {
|
||||
__ETHTOOL_DECLARE_LINK_MODE_MASK(supported);
|
||||
struct mii_bus *bus;
|
||||
int addr;
|
||||
};
|
||||
|
||||
struct mdio_xpcs_ops {
|
||||
int (*validate)(struct mdio_xpcs_args *xpcs,
|
||||
unsigned long *supported,
|
||||
struct phylink_link_state *state);
|
||||
int (*config)(struct mdio_xpcs_args *xpcs,
|
||||
const struct phylink_link_state *state);
|
||||
int (*get_state)(struct mdio_xpcs_args *xpcs,
|
||||
struct phylink_link_state *state);
|
||||
int (*link_up)(struct mdio_xpcs_args *xpcs, int speed,
|
||||
phy_interface_t interface);
|
||||
int (*probe)(struct mdio_xpcs_args *xpcs, phy_interface_t interface);
|
||||
};
|
||||
|
||||
#if IS_ENABLED(CONFIG_MDIO_XPCS)
|
||||
struct mdio_xpcs_ops *mdio_xpcs_get_ops(void);
|
||||
#else
|
||||
static inline struct mdio_xpcs_ops *mdio_xpcs_get_ops(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __LINUX_MDIO_XPCS_H */
|
||||
Reference in New Issue
Block a user