#include <linux/bitfield.h>
#include <linux/delay.h>
#include <linux/clk.h>
#include <linux/io.h>
#include <linux/mdio-mux.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#define ETH_REG2 …
#define REG2_PHYID …
#define EPHY_GXL_ID …
#define REG2_LEDACT …
#define REG2_LEDLINK …
#define REG2_DIV4SEL …
#define REG2_ADCBYPASS …
#define REG2_CLKINSEL …
#define ETH_REG3 …
#define REG3_ENH …
#define REG3_CFGMODE …
#define REG3_AUTOMDIX …
#define REG3_PHYADDR …
#define REG3_PWRUPRST …
#define REG3_PWRDOWN …
#define REG3_LEDPOL …
#define REG3_PHYMDI …
#define REG3_CLKINEN …
#define REG3_PHYIP …
#define REG3_PHYEN …
#define ETH_REG4 …
#define REG4_PWRUPRSTSIG …
#define MESON_GXL_MDIO_EXTERNAL_ID …
#define MESON_GXL_MDIO_INTERNAL_ID …
struct gxl_mdio_mux { … };
static void gxl_enable_internal_mdio(struct gxl_mdio_mux *priv)
{ … }
static void gxl_enable_external_mdio(struct gxl_mdio_mux *priv)
{ … }
static int gxl_mdio_switch_fn(int current_child, int desired_child,
void *data)
{ … }
static const struct of_device_id gxl_mdio_mux_match[] = …;
MODULE_DEVICE_TABLE(of, gxl_mdio_mux_match);
static int gxl_mdio_mux_probe(struct platform_device *pdev)
{ … }
static void gxl_mdio_mux_remove(struct platform_device *pdev)
{ … }
static struct platform_driver gxl_mdio_mux_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;