#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/mii.h>
#include <linux/mdio.h>
#include <linux/phy.h>
#include <linux/clk.h>
#include <linux/of_mdio.h>
#define XILINX_GMII2RGMII_REG …
#define XILINX_GMII2RGMII_SPEED_MASK …
struct gmii2rgmii { … };
static void xgmiitorgmii_configure(struct gmii2rgmii *priv, int speed)
{ … }
static int xgmiitorgmii_read_status(struct phy_device *phydev)
{ … }
static int xgmiitorgmii_set_loopback(struct phy_device *phydev, bool enable)
{ … }
static int xgmiitorgmii_probe(struct mdio_device *mdiodev)
{ … }
static const struct of_device_id xgmiitorgmii_of_match[] = …;
MODULE_DEVICE_TABLE(of, xgmiitorgmii_of_match);
static struct mdio_driver xgmiitorgmii_driver = …;
mdio_module_driver(xgmiitorgmii_driver);
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;