#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mii.h>
#include <linux/ethtool.h>
#include <linux/phy.h>
#include <linux/bitfield.h>
#define MII_VSC73XX_EXT_PAGE_1E …
#define MII_VSC82X4_EXT_PAGE_16E …
#define MII_VSC82X4_EXT_PAGE_17E …
#define MII_VSC82X4_EXT_PAGE_18E …
#define MII_VSC8244_EXT_CON1 …
#define MII_VSC8244_EXTCON1_INIT …
#define MII_VSC8244_EXTCON1_TX_SKEW_MASK …
#define MII_VSC8244_EXTCON1_RX_SKEW_MASK …
#define MII_VSC8244_EXTCON1_TX_SKEW …
#define MII_VSC8244_EXTCON1_RX_SKEW …
#define MII_VSC8244_IMASK …
#define MII_VSC8244_IMASK_IEN …
#define MII_VSC8244_IMASK_SPEED …
#define MII_VSC8244_IMASK_LINK …
#define MII_VSC8244_IMASK_DUPLEX …
#define MII_VSC8244_IMASK_MASK …
#define MII_VSC8221_IMASK_MASK …
#define MII_VSC8244_ISTAT …
#define MII_VSC8244_ISTAT_STATUS …
#define MII_VSC8244_ISTAT_SPEED …
#define MII_VSC8244_ISTAT_LINK …
#define MII_VSC8244_ISTAT_DUPLEX …
#define MII_VSC8244_ISTAT_MASK …
#define MII_VSC8221_ISTAT_MASK …
#define MII_VSC8244_AUX_CONSTAT …
#define MII_VSC8244_AUXCONSTAT_INIT …
#define MII_VSC8244_AUXCONSTAT_DUPLEX …
#define MII_VSC8244_AUXCONSTAT_SPEED …
#define MII_VSC8244_AUXCONSTAT_GBIT …
#define MII_VSC8244_AUXCONSTAT_100 …
#define MII_VSC8221_AUXCONSTAT_INIT …
#define MII_VSC8221_AUXCONSTAT_RESERVED …
#define MII_VSC82X4_EXT_PAGE_ACCESS …
#define MII_VSC73XX_PHY_CTRL_EXT3 …
#define MII_VSC73XX_PHY_CTRL_EXT3_DOWNSHIFT_EN …
#define MII_VSC73XX_PHY_CTRL_EXT3_DOWNSHIFT_CNT …
#define MII_VSC73XX_PHY_CTRL_EXT3_DOWNSHIFT_STA …
#define MII_VSC73XX_DOWNSHIFT_MAX …
#define MII_VSC73XX_DOWNSHIFT_INVAL …
#define MII_VSC73XX_PHY_BYPASS_CTRL …
#define MII_VSC73XX_PBC_TX_DIS …
#define MII_VSC73XX_PBC_FOR_SPD_AUTO_MDIX_DIS …
#define MII_VSC73XX_PBC_PAIR_SWAP_DIS …
#define MII_VSC73XX_PBC_POL_INV_DIS …
#define MII_VSC73XX_PBC_PARALLEL_DET_DIS …
#define MII_VSC73XX_PBC_AUTO_NP_EXCHANGE_DIS …
#define MII_VSC73XX_PHY_AUX_CTRL_STAT …
#define MII_VSC73XX_PACS_NO_MDI_X_IND …
#define MII_VSC8601_EPHY_CTL …
#define MII_VSC8601_EPHY_CTL_RGMII_SKEW …
#define PHY_ID_VSC8234 …
#define PHY_ID_VSC8244 …
#define PHY_ID_VSC8572 …
#define PHY_ID_VSC8601 …
#define PHY_ID_VSC7385 …
#define PHY_ID_VSC7388 …
#define PHY_ID_VSC7395 …
#define PHY_ID_VSC7398 …
#define PHY_ID_VSC8662 …
#define PHY_ID_VSC8221 …
#define PHY_ID_VSC8211 …
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
static int vsc824x_add_skew(struct phy_device *phydev)
{ … }
static int vsc824x_config_init(struct phy_device *phydev)
{ … }
#define VSC73XX_EXT_PAGE_ACCESS …
static int vsc73xx_read_page(struct phy_device *phydev)
{ … }
static int vsc73xx_write_page(struct phy_device *phydev, int page)
{ … }
static int vsc73xx_get_downshift(struct phy_device *phydev, u8 *data)
{ … }
static int vsc73xx_set_downshift(struct phy_device *phydev, u8 cnt)
{ … }
static int vsc73xx_get_tunable(struct phy_device *phydev,
struct ethtool_tunable *tuna, void *data)
{ … }
static int vsc73xx_set_tunable(struct phy_device *phydev,
struct ethtool_tunable *tuna, const void *data)
{ … }
static void vsc73xx_config_init(struct phy_device *phydev)
{ … }
static int vsc738x_config_init(struct phy_device *phydev)
{ … }
static int vsc739x_config_init(struct phy_device *phydev)
{ … }
static int vsc73xx_mdix_set(struct phy_device *phydev, u8 mdix)
{ … }
static int vsc73xx_config_aneg(struct phy_device *phydev)
{ … }
static int vsc73xx_mdix_get(struct phy_device *phydev, u8 *mdix)
{ … }
static int vsc73xx_read_status(struct phy_device *phydev)
{ … }
static int vsc8601_add_skew(struct phy_device *phydev)
{ … }
static int vsc8601_config_init(struct phy_device *phydev)
{ … }
static int vsc82xx_config_intr(struct phy_device *phydev)
{ … }
static irqreturn_t vsc82xx_handle_interrupt(struct phy_device *phydev)
{ … }
static int vsc8221_config_init(struct phy_device *phydev)
{ … }
static int vsc82x4_config_autocross_enable(struct phy_device *phydev)
{ … }
static int vsc82x4_config_aneg(struct phy_device *phydev)
{ … }
static struct phy_driver vsc82xx_driver[] = …;
module_phy_driver(vsc82xx_driver);
static struct mdio_device_id __maybe_unused vitesse_tbl[] = …;
MODULE_DEVICE_TABLE(mdio, vitesse_tbl);