#include <linux/delay.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_platform.h>
#include <linux/of_mdio.h>
#include <linux/phy.h>
#include <linux/platform_device.h>
#include <linux/sched.h>
#define IPROC_GPHY_MDCDIV …
#define MII_CTRL_OFFSET …
#define MII_CTRL_DIV_SHIFT …
#define MII_CTRL_PRE_SHIFT …
#define MII_CTRL_BUSY_SHIFT …
#define MII_DATA_OFFSET …
#define MII_DATA_MASK …
#define MII_DATA_TA_SHIFT …
#define MII_DATA_TA_VAL …
#define MII_DATA_RA_SHIFT …
#define MII_DATA_PA_SHIFT …
#define MII_DATA_OP_SHIFT …
#define MII_DATA_OP_WRITE …
#define MII_DATA_OP_READ …
#define MII_DATA_SB_SHIFT …
struct iproc_mdio_priv { … };
static inline int iproc_mdio_wait_for_idle(void __iomem *base)
{ … }
static inline void iproc_mdio_config_clk(void __iomem *base)
{ … }
static int iproc_mdio_read(struct mii_bus *bus, int phy_id, int reg)
{ … }
static int iproc_mdio_write(struct mii_bus *bus, int phy_id,
int reg, u16 val)
{ … }
static int iproc_mdio_probe(struct platform_device *pdev)
{ … }
static void iproc_mdio_remove(struct platform_device *pdev)
{ … }
#ifdef CONFIG_PM_SLEEP
static int iproc_mdio_resume(struct device *dev)
{ … }
static const struct dev_pm_ops iproc_mdio_pm_ops = …;
#endif
static const struct of_device_id iproc_mdio_of_match[] = …;
MODULE_DEVICE_TABLE(of, iproc_mdio_of_match);
static struct platform_driver iproc_mdio_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;