#include <linux/bitfield.h>
#include <linux/clk.h>
#include <linux/clk-provider.h>
#include <linux/device.h>
#include <linux/ethtool.h>
#include <linux/io.h>
#include <linux/ioport.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_net.h>
#include <linux/mfd/syscon.h>
#include <linux/platform_device.h>
#include <linux/stmmac.h>
#include "stmmac_platform.h"
#define PRG_ETH0 …
#define PRG_ETH0_RGMII_MODE …
#define PRG_ETH0_EXT_PHY_MODE_MASK …
#define PRG_ETH0_EXT_RGMII_MODE …
#define PRG_ETH0_EXT_RMII_MODE …
#define PRG_ETH0_CLK_M250_SEL_MASK …
#define PRG_ETH0_TXDLY_MASK …
#define PRG_ETH0_CLK_M250_DIV_SHIFT …
#define PRG_ETH0_CLK_M250_DIV_WIDTH …
#define PRG_ETH0_RGMII_TX_CLK_EN …
#define PRG_ETH0_INVERTED_RMII_CLK …
#define PRG_ETH0_TX_AND_PHY_REF_CLK …
#define PRG_ETH0_ADJ_ENABLE …
#define PRG_ETH0_ADJ_SETUP …
#define PRG_ETH0_ADJ_DELAY …
#define PRG_ETH0_ADJ_SKEW …
#define PRG_ETH1 …
#define PRG_ETH1_CFG_RXCLK_DLY …
struct meson8b_dwmac;
struct meson8b_dwmac_data { … };
struct meson8b_dwmac { … };
struct meson8b_dwmac_clk_configs { … };
static void meson8b_dwmac_mask_bits(struct meson8b_dwmac *dwmac, u32 reg,
u32 mask, u32 value)
{ … }
static struct clk *meson8b_dwmac_register_clk(struct meson8b_dwmac *dwmac,
const char *name_suffix,
const struct clk_parent_data *parents,
int num_parents,
const struct clk_ops *ops,
struct clk_hw *hw)
{ … }
static int meson8b_init_rgmii_tx_clk(struct meson8b_dwmac *dwmac)
{ … }
static int meson8b_set_phy_mode(struct meson8b_dwmac *dwmac)
{ … }
static int meson_axg_set_phy_mode(struct meson8b_dwmac *dwmac)
{ … }
static void meson8b_clk_disable_unprepare(void *data)
{ … }
static int meson8b_devm_clk_prepare_enable(struct meson8b_dwmac *dwmac,
struct clk *clk)
{ … }
static int meson8b_init_rgmii_delays(struct meson8b_dwmac *dwmac)
{ … }
static int meson8b_init_prg_eth(struct meson8b_dwmac *dwmac)
{ … }
static int meson8b_dwmac_probe(struct platform_device *pdev)
{ … }
static const struct meson8b_dwmac_data meson8b_dwmac_data = …;
static const struct meson8b_dwmac_data meson_axg_dwmac_data = …;
static const struct meson8b_dwmac_data meson_g12a_dwmac_data = …;
static const struct of_device_id meson8b_dwmac_match[] = …;
MODULE_DEVICE_TABLE(of, meson8b_dwmac_match);
static struct platform_driver meson8b_dwmac_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;