#include <linux/platform_device.h>
#include <linux/module.h>
#include <linux/mfd/syscon.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_net.h>
#include <linux/phy.h>
#include <linux/phy/phy.h>
#include <linux/regmap.h>
#define AM33XX_GMII_SEL_MODE_MII …
#define AM33XX_GMII_SEL_MODE_RMII …
#define AM33XX_GMII_SEL_MODE_RGMII …
#define J72XX_GMII_SEL_MODE_SGMII …
#define J72XX_GMII_SEL_MODE_QSGMII …
#define J72XX_GMII_SEL_MODE_USXGMII …
#define J72XX_GMII_SEL_MODE_QSGMII_SUB …
#define PHY_GMII_PORT(n) …
enum { … };
struct phy_gmii_sel_phy_priv { … };
struct phy_gmii_sel_soc_data { … };
struct phy_gmii_sel_priv { … };
static int phy_gmii_sel_mode(struct phy *phy, enum phy_mode mode, int submode)
{ … }
static const
struct reg_field phy_gmii_sel_fields_am33xx[][PHY_GMII_SEL_LAST] = …;
static const
struct phy_gmii_sel_soc_data phy_gmii_sel_soc_am33xx = …;
static const
struct reg_field phy_gmii_sel_fields_dra7[][PHY_GMII_SEL_LAST] = …;
static const
struct phy_gmii_sel_soc_data phy_gmii_sel_soc_dra7 = …;
static const
struct phy_gmii_sel_soc_data phy_gmii_sel_soc_dm814 = …;
static const
struct reg_field phy_gmii_sel_fields_am654[][PHY_GMII_SEL_LAST] = …;
static const
struct phy_gmii_sel_soc_data phy_gmii_sel_soc_am654 = …;
static const
struct phy_gmii_sel_soc_data phy_gmii_sel_cpsw5g_soc_j7200 = …;
static const
struct phy_gmii_sel_soc_data phy_gmii_sel_cpsw9g_soc_j721e = …;
static const
struct phy_gmii_sel_soc_data phy_gmii_sel_cpsw9g_soc_j784s4 = …;
static const struct of_device_id phy_gmii_sel_id_table[] = …;
MODULE_DEVICE_TABLE(of, phy_gmii_sel_id_table);
static const struct phy_ops phy_gmii_sel_ops = …;
static struct phy *phy_gmii_sel_of_xlate(struct device *dev,
const struct of_phandle_args *args)
{ … }
static int phy_gmii_init_phy(struct phy_gmii_sel_priv *priv, int port,
struct phy_gmii_sel_phy_priv *if_phy)
{ … }
static int phy_gmii_sel_init_ports(struct phy_gmii_sel_priv *priv)
{ … }
static int phy_gmii_sel_probe(struct platform_device *pdev)
{ … }
static int phy_gmii_sel_resume_noirq(struct device *dev)
{ … }
static DEFINE_NOIRQ_DEV_PM_OPS(phy_gmii_sel_pm_ops, NULL, phy_gmii_sel_resume_noirq);
static struct platform_driver phy_gmii_sel_driver = …;
module_platform_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;