#include <linux/kernel.h>
#include <linux/mii.h>
#include <linux/module.h>
#include <linux/phy.h>
#define PHY_ID_CBTX_SJA1110 …
#define CBTX_MODE_CTRL_STAT …
#define CBTX_PDOWN_CTRL …
#define CBTX_RX_ERR_COUNTER …
#define CBTX_IRQ_STAT …
#define CBTX_IRQ_ENABLE …
#define CBTX_MODE_CTRL_STAT_AUTO_MDIX_EN …
#define CBTX_MODE_CTRL_STAT_MDIX_MODE …
#define CBTX_PDOWN_CTL_TRUE_PDOWN …
#define CBTX_IRQ_ENERGYON …
#define CBTX_IRQ_AN_COMPLETE …
#define CBTX_IRQ_REM_FAULT …
#define CBTX_IRQ_LINK_DOWN …
#define CBTX_IRQ_AN_LP_ACK …
#define CBTX_IRQ_PARALLEL_DETECT_FAULT …
#define CBTX_IRQ_AN_PAGE_RECV …
static int cbtx_soft_reset(struct phy_device *phydev)
{ … }
static int cbtx_config_init(struct phy_device *phydev)
{ … }
static int cbtx_mdix_status(struct phy_device *phydev)
{ … }
static int cbtx_read_status(struct phy_device *phydev)
{ … }
static int cbtx_mdix_config(struct phy_device *phydev)
{ … }
static int cbtx_config_aneg(struct phy_device *phydev)
{ … }
static int cbtx_ack_interrupts(struct phy_device *phydev)
{ … }
static int cbtx_config_intr(struct phy_device *phydev)
{ … }
static irqreturn_t cbtx_handle_interrupt(struct phy_device *phydev)
{ … }
static int cbtx_get_sset_count(struct phy_device *phydev)
{ … }
static void cbtx_get_strings(struct phy_device *phydev, u8 *data)
{ … }
static void cbtx_get_stats(struct phy_device *phydev,
struct ethtool_stats *stats, u64 *data)
{ … }
static struct phy_driver cbtx_driver[] = …;
module_phy_driver(cbtx_driver);
static struct mdio_device_id __maybe_unused cbtx_tbl[] = …;
MODULE_DEVICE_TABLE(mdio, cbtx_tbl);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;