#define pr_fmt(fmt) …
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mii.h>
#include <linux/ethtool.h>
#include <linux/phy.h>
#include <linux/netdevice.h>
#define DP83865_PHY_ID …
#define DP83865_INT_STATUS …
#define DP83865_INT_MASK …
#define DP83865_INT_CLEAR …
#define DP83865_INT_REMOTE_FAULT …
#define DP83865_INT_ANE_COMPLETED …
#define DP83865_INT_LINK_CHANGE …
#define DP83865_INT_MASK_DEFAULT …
#define NS_EXP_MEM_CTL …
#define NS_EXP_MEM_DATA …
#define NS_EXP_MEM_ADD …
#define LED_CTRL_REG …
#define AN_FALLBACK_AN …
#define AN_FALLBACK_CRC …
#define AN_FALLBACK_IE …
#define ALL_FALLBACK_ON …
enum hdx_loopback { … };
static u8 ns_exp_read(struct phy_device *phydev, u16 reg)
{ … }
static void ns_exp_write(struct phy_device *phydev, u16 reg, u8 data)
{ … }
static int ns_ack_interrupt(struct phy_device *phydev)
{ … }
static irqreturn_t ns_handle_interrupt(struct phy_device *phydev)
{ … }
static int ns_config_intr(struct phy_device *phydev)
{ … }
static void ns_giga_speed_fallback(struct phy_device *phydev, int mode)
{ … }
static void ns_10_base_t_hdx_loopack(struct phy_device *phydev, int disable)
{ … }
static int ns_config_init(struct phy_device *phydev)
{ … }
static struct phy_driver dp83865_driver[] = …;
module_phy_driver(dp83865_driver);
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
static struct mdio_device_id __maybe_unused ns_tbl[] = …;
MODULE_DEVICE_TABLE(mdio, ns_tbl);