mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
Merge branch 'net-stmmac-pass-struct-device-to-init-exit'
Russell King says: ==================== net: stmmac: pass struct device to init/exit Rather than passing the platform device to the ->init() and ->exit() methods, make these methods useful for other devices by passing the struct device instead. Update the implementations appropriately for this change. Move the calls for these methods into the core driver's probe and remove methods from the stmmac_platform layer. Convert dwmac-rk to use ->init() and ->exit(). ==================== Link: https://patch.msgid.link/aR2V0Kib7j0L4FNN@shell.armlinux.org.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -34,7 +34,7 @@ static void gmac_write_reg(struct anarion_gmac *gmac, uint8_t reg, uint32_t val)
|
||||
writel(val, gmac->ctl_block + reg);
|
||||
}
|
||||
|
||||
static int anarion_gmac_init(struct platform_device *pdev, void *priv)
|
||||
static int anarion_gmac_init(struct device *dev, void *priv)
|
||||
{
|
||||
uint32_t sw_config;
|
||||
struct anarion_gmac *gmac = priv;
|
||||
@@ -52,7 +52,7 @@ static int anarion_gmac_init(struct platform_device *pdev, void *priv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void anarion_gmac_exit(struct platform_device *pdev, void *priv)
|
||||
static void anarion_gmac_exit(struct device *dev, void *priv)
|
||||
{
|
||||
struct anarion_gmac *gmac = priv;
|
||||
|
||||
|
||||
@@ -58,14 +58,14 @@ static int eic7700_clks_config(void *priv, bool enabled)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int eic7700_dwmac_init(struct platform_device *pdev, void *priv)
|
||||
static int eic7700_dwmac_init(struct device *dev, void *priv)
|
||||
{
|
||||
struct eic7700_qos_priv *dwc = priv;
|
||||
|
||||
return eic7700_clks_config(dwc, true);
|
||||
}
|
||||
|
||||
static void eic7700_dwmac_exit(struct platform_device *pdev, void *priv)
|
||||
static void eic7700_dwmac_exit(struct device *dev, void *priv)
|
||||
{
|
||||
struct eic7700_qos_priv *dwc = priv;
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ struct ls1x_dwmac {
|
||||
struct ls1x_data {
|
||||
int (*setup)(struct platform_device *pdev,
|
||||
struct plat_stmmacenet_data *plat_dat);
|
||||
int (*init)(struct platform_device *pdev, void *bsp_priv);
|
||||
int (*init)(struct device *dev, void *bsp_priv);
|
||||
};
|
||||
|
||||
static int ls1b_dwmac_setup(struct platform_device *pdev,
|
||||
@@ -79,7 +79,7 @@ static int ls1b_dwmac_setup(struct platform_device *pdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ls1b_dwmac_syscon_init(struct platform_device *pdev, void *priv)
|
||||
static int ls1b_dwmac_syscon_init(struct device *dev, void *priv)
|
||||
{
|
||||
struct ls1x_dwmac *dwmac = priv;
|
||||
struct plat_stmmacenet_data *plat = dwmac->plat_dat;
|
||||
@@ -98,7 +98,7 @@ static int ls1b_dwmac_syscon_init(struct platform_device *pdev, void *priv)
|
||||
GMAC0_USE_TXCLK | GMAC0_USE_PWM01);
|
||||
break;
|
||||
default:
|
||||
dev_err(&pdev->dev, "Unsupported PHY mode %u\n",
|
||||
dev_err(dev, "Unsupported PHY mode %u\n",
|
||||
plat->phy_interface);
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
@@ -122,7 +122,7 @@ static int ls1b_dwmac_syscon_init(struct platform_device *pdev, void *priv)
|
||||
GMAC1_USE_TXCLK | GMAC1_USE_PWM23);
|
||||
break;
|
||||
default:
|
||||
dev_err(&pdev->dev, "Unsupported PHY mode %u\n",
|
||||
dev_err(dev, "Unsupported PHY mode %u\n",
|
||||
plat->phy_interface);
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
@@ -133,7 +133,7 @@ static int ls1b_dwmac_syscon_init(struct platform_device *pdev, void *priv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ls1c_dwmac_syscon_init(struct platform_device *pdev, void *priv)
|
||||
static int ls1c_dwmac_syscon_init(struct device *dev, void *priv)
|
||||
{
|
||||
struct ls1x_dwmac *dwmac = priv;
|
||||
struct plat_stmmacenet_data *plat = dwmac->plat_dat;
|
||||
@@ -143,7 +143,7 @@ static int ls1c_dwmac_syscon_init(struct platform_device *pdev, void *priv)
|
||||
phy_intf_sel = stmmac_get_phy_intf_sel(plat->phy_interface);
|
||||
if (phy_intf_sel != PHY_INTF_SEL_GMII_MII &&
|
||||
phy_intf_sel != PHY_INTF_SEL_RMII) {
|
||||
dev_err(&pdev->dev, "Unsupported PHY-mode %u\n",
|
||||
dev_err(dev, "Unsupported PHY-mode %u\n",
|
||||
plat->phy_interface);
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ static struct phylink_pcs *renesas_gmac_select_pcs(struct stmmac_priv *priv,
|
||||
return priv->hw->phylink_pcs;
|
||||
}
|
||||
|
||||
static int renesas_gbeth_init(struct platform_device *pdev, void *priv)
|
||||
static int renesas_gbeth_init(struct device *dev, void *priv)
|
||||
{
|
||||
struct plat_stmmacenet_data *plat_dat;
|
||||
struct renesas_gbeth *gbeth = priv;
|
||||
@@ -113,7 +113,7 @@ static int renesas_gbeth_init(struct platform_device *pdev, void *priv)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void renesas_gbeth_exit(struct platform_device *pdev, void *priv)
|
||||
static void renesas_gbeth_exit(struct device *dev, void *priv)
|
||||
{
|
||||
struct plat_stmmacenet_data *plat_dat;
|
||||
struct renesas_gbeth *gbeth = priv;
|
||||
|
||||
@@ -1763,6 +1763,22 @@ static int rk_gmac_resume(struct device *dev, void *bsp_priv_)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rk_gmac_init(struct device *dev, void *bsp_priv)
|
||||
{
|
||||
return rk_gmac_powerup(bsp_priv);
|
||||
}
|
||||
|
||||
static void rk_gmac_exit(struct device *dev, void *bsp_priv_)
|
||||
{
|
||||
struct stmmac_priv *priv = netdev_priv(dev_get_drvdata(dev));
|
||||
struct rk_priv_data *bsp_priv = bsp_priv_;
|
||||
|
||||
rk_gmac_powerdown(bsp_priv);
|
||||
|
||||
if (priv->plat->phy_node && bsp_priv->integrated_phy)
|
||||
clk_put(bsp_priv->clk_phy);
|
||||
}
|
||||
|
||||
static int rk_gmac_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct plat_stmmacenet_data *plat_dat;
|
||||
@@ -1795,6 +1811,8 @@ static int rk_gmac_probe(struct platform_device *pdev)
|
||||
|
||||
plat_dat->get_interfaces = rk_get_interfaces;
|
||||
plat_dat->set_clk_tx_rate = rk_set_clk_tx_rate;
|
||||
plat_dat->init = rk_gmac_init;
|
||||
plat_dat->exit = rk_gmac_exit;
|
||||
plat_dat->suspend = rk_gmac_suspend;
|
||||
plat_dat->resume = rk_gmac_resume;
|
||||
|
||||
@@ -1806,33 +1824,7 @@ static int rk_gmac_probe(struct platform_device *pdev)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = rk_gmac_powerup(plat_dat->bsp_priv);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res);
|
||||
if (ret)
|
||||
goto err_gmac_powerdown;
|
||||
|
||||
return 0;
|
||||
|
||||
err_gmac_powerdown:
|
||||
rk_gmac_powerdown(plat_dat->bsp_priv);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void rk_gmac_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct stmmac_priv *priv = netdev_priv(platform_get_drvdata(pdev));
|
||||
struct rk_priv_data *bsp_priv = priv->plat->bsp_priv;
|
||||
|
||||
stmmac_dvr_remove(&pdev->dev);
|
||||
|
||||
rk_gmac_powerdown(bsp_priv);
|
||||
|
||||
if (priv->plat->phy_node && bsp_priv->integrated_phy)
|
||||
clk_put(bsp_priv->clk_phy);
|
||||
return devm_stmmac_pltfr_probe(pdev, plat_dat, &stmmac_res);
|
||||
}
|
||||
|
||||
static const struct of_device_id rk_gmac_dwmac_match[] = {
|
||||
@@ -1858,7 +1850,6 @@ MODULE_DEVICE_TABLE(of, rk_gmac_dwmac_match);
|
||||
|
||||
static struct platform_driver rk_gmac_dwmac_driver = {
|
||||
.probe = rk_gmac_probe,
|
||||
.remove = rk_gmac_remove,
|
||||
.driver = {
|
||||
.name = "rk_gmac-dwmac",
|
||||
.pm = &stmmac_simple_pm_ops,
|
||||
|
||||
@@ -47,7 +47,7 @@ static int s32_gmac_write_phy_intf_select(struct s32_priv_data *gmac)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int s32_gmac_init(struct platform_device *pdev, void *priv)
|
||||
static int s32_gmac_init(struct device *dev, void *priv)
|
||||
{
|
||||
struct s32_priv_data *gmac = priv;
|
||||
int ret;
|
||||
@@ -55,31 +55,31 @@ static int s32_gmac_init(struct platform_device *pdev, void *priv)
|
||||
/* Set initial TX interface clock */
|
||||
ret = clk_prepare_enable(gmac->tx_clk);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "Can't enable tx clock\n");
|
||||
dev_err(dev, "Can't enable tx clock\n");
|
||||
return ret;
|
||||
}
|
||||
ret = clk_set_rate(gmac->tx_clk, GMAC_INTF_RATE_125M);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "Can't set tx clock\n");
|
||||
dev_err(dev, "Can't set tx clock\n");
|
||||
goto err_tx_disable;
|
||||
}
|
||||
|
||||
/* Set initial RX interface clock */
|
||||
ret = clk_prepare_enable(gmac->rx_clk);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "Can't enable rx clock\n");
|
||||
dev_err(dev, "Can't enable rx clock\n");
|
||||
goto err_tx_disable;
|
||||
}
|
||||
ret = clk_set_rate(gmac->rx_clk, GMAC_INTF_RATE_125M);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "Can't set rx clock\n");
|
||||
dev_err(dev, "Can't set rx clock\n");
|
||||
goto err_txrx_disable;
|
||||
}
|
||||
|
||||
/* Set interface mode */
|
||||
ret = s32_gmac_write_phy_intf_select(gmac);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "Can't set PHY interface mode\n");
|
||||
dev_err(dev, "Can't set PHY interface mode\n");
|
||||
goto err_txrx_disable;
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ err_tx_disable:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void s32_gmac_exit(struct platform_device *pdev, void *priv)
|
||||
static void s32_gmac_exit(struct device *dev, void *priv)
|
||||
{
|
||||
struct s32_priv_data *gmac = priv;
|
||||
|
||||
|
||||
@@ -551,7 +551,7 @@ static struct phylink_pcs *socfpga_dwmac_select_pcs(struct stmmac_priv *priv,
|
||||
return priv->hw->phylink_pcs;
|
||||
}
|
||||
|
||||
static int socfpga_dwmac_init(struct platform_device *pdev, void *bsp_priv)
|
||||
static int socfpga_dwmac_init(struct device *dev, void *bsp_priv)
|
||||
{
|
||||
struct socfpga_dwmac *dwmac = bsp_priv;
|
||||
|
||||
|
||||
@@ -229,14 +229,14 @@ static int sti_dwmac_parse_data(struct sti_dwmac *dwmac,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sti_dwmac_init(struct platform_device *pdev, void *bsp_priv)
|
||||
static int sti_dwmac_init(struct device *dev, void *bsp_priv)
|
||||
{
|
||||
struct sti_dwmac *dwmac = bsp_priv;
|
||||
|
||||
return clk_prepare_enable(dwmac->clk);
|
||||
}
|
||||
|
||||
static void sti_dwmac_exit(struct platform_device *pdev, void *bsp_priv)
|
||||
static void sti_dwmac_exit(struct device *dev, void *bsp_priv)
|
||||
{
|
||||
struct sti_dwmac *dwmac = bsp_priv;
|
||||
|
||||
|
||||
@@ -571,16 +571,16 @@ static const struct stmmac_dma_ops sun8i_dwmac_dma_ops = {
|
||||
|
||||
static int sun8i_dwmac_power_internal_phy(struct stmmac_priv *priv);
|
||||
|
||||
static int sun8i_dwmac_init(struct platform_device *pdev, void *priv)
|
||||
static int sun8i_dwmac_init(struct device *dev, void *priv)
|
||||
{
|
||||
struct net_device *ndev = platform_get_drvdata(pdev);
|
||||
struct net_device *ndev = dev_get_drvdata(dev);
|
||||
struct sunxi_priv_data *gmac = priv;
|
||||
int ret;
|
||||
|
||||
if (gmac->regulator) {
|
||||
ret = regulator_enable(gmac->regulator);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "Fail to enable regulator\n");
|
||||
dev_err(dev, "Fail to enable regulator\n");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@@ -1005,7 +1005,7 @@ static void sun8i_dwmac_unset_syscon(struct sunxi_priv_data *gmac)
|
||||
(H3_EPHY_SHUTDOWN | H3_EPHY_SELECT));
|
||||
}
|
||||
|
||||
static void sun8i_dwmac_exit(struct platform_device *pdev, void *priv)
|
||||
static void sun8i_dwmac_exit(struct device *dev, void *priv)
|
||||
{
|
||||
struct sunxi_priv_data *gmac = priv;
|
||||
|
||||
@@ -1265,7 +1265,7 @@ static void sun8i_dwmac_shutdown(struct platform_device *pdev)
|
||||
struct stmmac_priv *priv = netdev_priv(ndev);
|
||||
struct sunxi_priv_data *gmac = priv->plat->bsp_priv;
|
||||
|
||||
sun8i_dwmac_exit(pdev, gmac);
|
||||
sun8i_dwmac_exit(&pdev->dev, gmac);
|
||||
}
|
||||
|
||||
static const struct of_device_id sun8i_dwmac_match[] = {
|
||||
|
||||
@@ -27,7 +27,7 @@ struct sunxi_priv_data {
|
||||
#define SUN7I_GMAC_GMII_RGMII_RATE 125000000
|
||||
#define SUN7I_GMAC_MII_RATE 25000000
|
||||
|
||||
static int sun7i_gmac_init(struct platform_device *pdev, void *priv)
|
||||
static int sun7i_gmac_init(struct device *dev, void *priv)
|
||||
{
|
||||
struct sunxi_priv_data *gmac = priv;
|
||||
int ret = 0;
|
||||
@@ -58,7 +58,7 @@ static int sun7i_gmac_init(struct platform_device *pdev, void *priv)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void sun7i_gmac_exit(struct platform_device *pdev, void *priv)
|
||||
static void sun7i_gmac_exit(struct device *dev, void *priv)
|
||||
{
|
||||
struct sunxi_priv_data *gmac = priv;
|
||||
|
||||
|
||||
@@ -186,7 +186,7 @@ static int thead_dwmac_enable_clk(struct plat_stmmacenet_data *plat)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int thead_dwmac_init(struct platform_device *pdev, void *priv)
|
||||
static int thead_dwmac_init(struct device *dev, void *priv)
|
||||
{
|
||||
struct thead_dwmac *dwmac = priv;
|
||||
unsigned int reg;
|
||||
|
||||
@@ -7593,19 +7593,9 @@ struct plat_stmmacenet_data *stmmac_plat_dat_alloc(struct device *dev)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(stmmac_plat_dat_alloc);
|
||||
|
||||
/**
|
||||
* stmmac_dvr_probe
|
||||
* @device: device pointer
|
||||
* @plat_dat: platform data pointer
|
||||
* @res: stmmac resource pointer
|
||||
* Description: this is the main probe function used to
|
||||
* call the alloc_etherdev, allocate the priv structure.
|
||||
* Return:
|
||||
* returns 0 on success, otherwise errno.
|
||||
*/
|
||||
int stmmac_dvr_probe(struct device *device,
|
||||
struct plat_stmmacenet_data *plat_dat,
|
||||
struct stmmac_resources *res)
|
||||
static int __stmmac_dvr_probe(struct device *device,
|
||||
struct plat_stmmacenet_data *plat_dat,
|
||||
struct stmmac_resources *res)
|
||||
{
|
||||
struct net_device *ndev = NULL;
|
||||
struct stmmac_priv *priv;
|
||||
@@ -7906,6 +7896,34 @@ error_wq_init:
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* stmmac_dvr_probe
|
||||
* @dev: device pointer
|
||||
* @plat_dat: platform data pointer
|
||||
* @res: stmmac resource pointer
|
||||
* Description: this is the main probe function used to
|
||||
* call the alloc_etherdev, allocate the priv structure.
|
||||
* Return:
|
||||
* returns 0 on success, otherwise errno.
|
||||
*/
|
||||
int stmmac_dvr_probe(struct device *dev, struct plat_stmmacenet_data *plat_dat,
|
||||
struct stmmac_resources *res)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (plat_dat->init) {
|
||||
ret = plat_dat->init(dev, plat_dat->bsp_priv);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = __stmmac_dvr_probe(dev, plat_dat, res);
|
||||
if (ret && plat_dat->exit)
|
||||
plat_dat->exit(dev, plat_dat->bsp_priv);
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(stmmac_dvr_probe);
|
||||
|
||||
/**
|
||||
@@ -7944,6 +7962,9 @@ void stmmac_dvr_remove(struct device *dev)
|
||||
|
||||
pm_runtime_disable(dev);
|
||||
pm_runtime_put_noidle(dev);
|
||||
|
||||
if (priv->plat->exit)
|
||||
priv->plat->exit(dev, priv->plat->bsp_priv);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(stmmac_dvr_remove);
|
||||
|
||||
|
||||
@@ -747,40 +747,40 @@ EXPORT_SYMBOL_GPL(stmmac_get_platform_resources);
|
||||
|
||||
/**
|
||||
* stmmac_pltfr_init
|
||||
* @pdev: pointer to the platform device
|
||||
* @dev: pointer to the device structure
|
||||
* @plat: driver data platform structure
|
||||
* Description: Call the platform's init callback (if any) and propagate
|
||||
* the return value.
|
||||
*/
|
||||
static int stmmac_pltfr_init(struct platform_device *pdev,
|
||||
static int stmmac_pltfr_init(struct device *dev,
|
||||
struct plat_stmmacenet_data *plat)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (plat->init)
|
||||
ret = plat->init(pdev, plat->bsp_priv);
|
||||
ret = plat->init(dev, plat->bsp_priv);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* stmmac_pltfr_exit
|
||||
* @pdev: pointer to the platform device
|
||||
* @dev: pointer to the device structure
|
||||
* @plat: driver data platform structure
|
||||
* Description: Call the platform's exit callback (if any).
|
||||
*/
|
||||
static void stmmac_pltfr_exit(struct platform_device *pdev,
|
||||
static void stmmac_pltfr_exit(struct device *dev,
|
||||
struct plat_stmmacenet_data *plat)
|
||||
{
|
||||
if (plat->exit)
|
||||
plat->exit(pdev, plat->bsp_priv);
|
||||
plat->exit(dev, plat->bsp_priv);
|
||||
}
|
||||
|
||||
static int stmmac_plat_suspend(struct device *dev, void *bsp_priv)
|
||||
{
|
||||
struct stmmac_priv *priv = netdev_priv(dev_get_drvdata(dev));
|
||||
|
||||
stmmac_pltfr_exit(to_platform_device(dev), priv->plat);
|
||||
stmmac_pltfr_exit(dev, priv->plat);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -789,7 +789,7 @@ static int stmmac_plat_resume(struct device *dev, void *bsp_priv)
|
||||
{
|
||||
struct stmmac_priv *priv = netdev_priv(dev_get_drvdata(dev));
|
||||
|
||||
return stmmac_pltfr_init(to_platform_device(dev), priv->plat);
|
||||
return stmmac_pltfr_init(dev, priv->plat);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -804,24 +804,12 @@ int stmmac_pltfr_probe(struct platform_device *pdev,
|
||||
struct plat_stmmacenet_data *plat,
|
||||
struct stmmac_resources *res)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!plat->suspend && plat->exit)
|
||||
plat->suspend = stmmac_plat_suspend;
|
||||
if (!plat->resume && plat->init)
|
||||
plat->resume = stmmac_plat_resume;
|
||||
|
||||
ret = stmmac_pltfr_init(pdev, plat);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = stmmac_dvr_probe(&pdev->dev, plat, res);
|
||||
if (ret) {
|
||||
stmmac_pltfr_exit(pdev, plat);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return ret;
|
||||
return stmmac_dvr_probe(&pdev->dev, plat, res);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(stmmac_pltfr_probe);
|
||||
|
||||
@@ -863,12 +851,7 @@ EXPORT_SYMBOL_GPL(devm_stmmac_pltfr_probe);
|
||||
*/
|
||||
void stmmac_pltfr_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *ndev = platform_get_drvdata(pdev);
|
||||
struct stmmac_priv *priv = netdev_priv(ndev);
|
||||
struct plat_stmmacenet_data *plat = priv->plat;
|
||||
|
||||
stmmac_dvr_remove(&pdev->dev);
|
||||
stmmac_pltfr_exit(pdev, plat);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(stmmac_pltfr_remove);
|
||||
|
||||
|
||||
@@ -264,8 +264,8 @@ struct plat_stmmacenet_data {
|
||||
unsigned int mode,
|
||||
phy_interface_t interface);
|
||||
void (*ptp_clk_freq_config)(struct stmmac_priv *priv);
|
||||
int (*init)(struct platform_device *pdev, void *priv);
|
||||
void (*exit)(struct platform_device *pdev, void *priv);
|
||||
int (*init)(struct device *dev, void *priv);
|
||||
void (*exit)(struct device *dev, void *priv);
|
||||
int (*suspend)(struct device *dev, void *priv);
|
||||
int (*resume)(struct device *dev, void *priv);
|
||||
int (*mac_setup)(void *priv, struct mac_device_info *mac);
|
||||
|
||||
Reference in New Issue
Block a user