#include <linux/delay.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/mdio-mux.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 MDIOC_REG …
#define MDIOC_EXT_MASK …
#define MDIOC_REG_SHIFT …
#define MDIOC_PHYID_SHIFT …
#define MDIOC_RD_MASK …
#define MDIOC_WR_MASK …
#define MDIOD_REG …
struct bcm6368_mdiomux_desc { … };
static int bcm6368_mdiomux_read(struct mii_bus *bus, int phy_id, int loc)
{ … }
static int bcm6368_mdiomux_write(struct mii_bus *bus, int phy_id, int loc,
uint16_t val)
{ … }
static int bcm6368_mdiomux_switch_fn(int current_child, int desired_child,
void *data)
{ … }
static int bcm6368_mdiomux_probe(struct platform_device *pdev)
{ … }
static void bcm6368_mdiomux_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id bcm6368_mdiomux_ids[] = …;
MODULE_DEVICE_TABLE(of, bcm6368_mdiomux_ids);
static struct platform_driver bcm6368_mdiomux_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;