summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/designware_eqos.c8
-rw-r--r--drivers/net/designware_eqos.h4
-rw-r--r--drivers/net/designware_stm32.c33
-rw-r--r--drivers/net/designware_tegra186.c47
4 files changed, 14 insertions, 78 deletions
diff --git a/drivers/net/designware_eqos.c b/drivers/net/designware_eqos.c
index 52a5ec272e..84dcd04a3f 100644
--- a/drivers/net/designware_eqos.c
+++ b/drivers/net/designware_eqos.c
@@ -365,7 +365,7 @@ static int phy_resume(struct phy_device *phydev)
return 0;
}
-int eqos_start(struct eth_device *edev)
+static int eqos_start(struct eth_device *edev)
{
struct eqos *eqos = edev->priv;
u32 val, tx_fifo_sz, rx_fifo_sz, tqs, rqs, pbl;
@@ -611,7 +611,7 @@ int eqos_start(struct eth_device *edev)
return 0;
}
-void eqos_stop(struct eth_device *edev)
+static void eqos_stop(struct eth_device *edev)
{
struct eqos *eqos = edev->priv;
int i;
@@ -841,10 +841,10 @@ int eqos_probe(struct device_d *dev, const struct eqos_ops *ops, void *priv)
dev->priv = edev->priv = eqos;
edev->parent = dev;
- edev->open = ops->start;
+ edev->open = eqos_start;
edev->send = eqos_send;
edev->recv = eqos_recv;
- edev->halt = ops->stop;
+ edev->halt = eqos_stop;
edev->get_ethaddr = ops->get_ethaddr;
edev->set_ethaddr = ops->set_ethaddr;
diff --git a/drivers/net/designware_eqos.h b/drivers/net/designware_eqos.h
index 969a524c0a..f794195db4 100644
--- a/drivers/net/designware_eqos.h
+++ b/drivers/net/designware_eqos.h
@@ -11,8 +11,6 @@ struct eth_device;
struct eqos_ops {
int (*init)(struct device_d *dev, struct eqos *priv);
- int (*start)(struct eth_device *edev);
- void (*stop)(struct eth_device *edev);
int (*get_ethaddr)(struct eth_device *dev, unsigned char *mac);
int (*set_ethaddr)(struct eth_device *edev, const unsigned char *mac);
void (*adjust_link)(struct eth_device *edev);
@@ -73,8 +71,6 @@ int eqos_reset(struct eqos *priv);
int eqos_get_ethaddr(struct eth_device *edev, unsigned char *mac);
int eqos_set_ethaddr(struct eth_device *edev, const unsigned char *mac);
-int eqos_start(struct eth_device *edev);
-void eqos_stop(struct eth_device *edev);
void eqos_adjust_link(struct eth_device *edev);
#define eqos_dbg(eqos, ...) dev_dbg(&eqos->netdev.dev, __VA_ARGS__)
diff --git a/drivers/net/designware_stm32.c b/drivers/net/designware_stm32.c
index ed54ff2b26..9acdf11903 100644
--- a/drivers/net/designware_stm32.c
+++ b/drivers/net/designware_stm32.c
@@ -164,16 +164,6 @@ static int eqos_init_stm32(struct device_d *dev, struct eqos *eqos)
dev_dbg(dev, "No phy clock provided. Continuing without.\n");
}
- return 0;
-
-}
-
-static int eqos_start_stm32(struct eth_device *edev)
-{
- struct eqos *eqos = edev->priv;
- struct eqos_stm32 *priv = to_stm32(eqos);
- int ret;
-
ret = clk_bulk_enable(priv->num_clks, priv->clks);
if (ret < 0) {
eqos_err(eqos, "clk_bulk_enable() failed: %s\n",
@@ -181,27 +171,7 @@ static int eqos_start_stm32(struct eth_device *edev)
return ret;
}
- udelay(10);
-
- ret = eqos_start(edev);
- if (ret)
- goto err_stop_clks;
-
return 0;
-
-err_stop_clks:
- clk_bulk_disable(priv->num_clks, priv->clks);
-
- return ret;
-}
-
-static void eqos_stop_stm32(struct eth_device *edev)
-{
- struct eqos_stm32 *priv = to_stm32(edev->priv);
-
- eqos_stop(edev);
-
- clk_bulk_disable(priv->num_clks, priv->clks);
}
// todo split!
@@ -209,8 +179,6 @@ static struct eqos_ops stm32_ops = {
.init = eqos_init_stm32,
.get_ethaddr = eqos_get_ethaddr,
.set_ethaddr = eqos_set_ethaddr,
- .start = eqos_start_stm32,
- .stop = eqos_stop_stm32,
.adjust_link = eqos_adjust_link,
.get_csr_clk_rate = eqos_get_csr_clk_rate_stm32,
@@ -230,6 +198,7 @@ static void eqos_remove_stm32(struct device_d *dev)
eqos_remove(dev);
+ clk_bulk_disable(priv->num_clks, priv->clks);
clk_bulk_put(priv->num_clks, priv->clks);
}
diff --git a/drivers/net/designware_tegra186.c b/drivers/net/designware_tegra186.c
index 618ae11397..20521db1c7 100644
--- a/drivers/net/designware_tegra186.c
+++ b/drivers/net/designware_tegra186.c
@@ -230,29 +230,16 @@ static int eqos_init_tegra186(struct device_d *dev, struct eqos *eqos)
priv->clks = xmemdup(tegra186_clks, sizeof(tegra186_clks));
priv->num_clks = ARRAY_SIZE(tegra186_clks);
- return 0;
-
-release_res:
- reset_control_put(priv->rst);
- return ret;
-}
-
-static int eqos_start_tegra186(struct eth_device *edev)
-{
- struct eqos *eqos = edev->priv;
- struct eqos_tegra186 *priv = to_tegra186(eqos);
- int ret;
-
ret = clk_bulk_enable(priv->num_clks, priv->clks);
if (ret < 0) {
eqos_err(eqos, "clk_bulk_enable() failed: %s\n", strerror(-ret));
- return ret;
+ goto release_res;
}
ret = eqos_clks_set_rate_tegra186(priv);
if (ret < 0) {
eqos_err(eqos, "clks_set_rate() failed: %s\n", strerror(-ret));
- goto err;
+ goto err_stop_clks;
}
eqos_reset_tegra186(priv, false);
@@ -261,32 +248,14 @@ static int eqos_start_tegra186(struct eth_device *edev)
goto err_stop_clks;
}
- udelay(10);
-
- ret = eqos_start(edev);
- if (ret)
- goto err_stop_resets;
-
return 0;
-err_stop_resets:
- eqos_reset_tegra186(priv, true);
err_stop_clks:
clk_bulk_disable(priv->num_clks, priv->clks);
-err:
- return ret;
-}
-
-
-static void eqos_stop_tegra186(struct eth_device *edev)
-{
- struct eqos_tegra186 *priv = to_tegra186(edev->priv);
-
- eqos_stop(edev);
-
- eqos_reset_tegra186(priv, true);
+release_res:
+ reset_control_put(priv->rst);
- clk_bulk_disable(priv->num_clks, priv->clks);
+ return ret;
}
static void eqos_adjust_link_tegra186(struct eth_device *edev)
@@ -308,8 +277,6 @@ static const struct eqos_ops tegra186_ops = {
.init = eqos_init_tegra186,
.get_ethaddr = eqos_get_ethaddr,
.set_ethaddr = eqos_set_ethaddr_tegra186,
- .start = eqos_start_tegra186,
- .stop = eqos_stop_tegra186,
.adjust_link = eqos_adjust_link_tegra186,
.get_csr_clk_rate = eqos_get_csr_clk_rate_tegra186,
@@ -329,6 +296,10 @@ static void eqos_remove_tegra186(struct device_d *dev)
eqos_remove(dev);
+ eqos_reset_tegra186(priv, true);
+
+ clk_bulk_disable(priv->num_clks, priv->clks);
+
clk_bulk_put(priv->num_clks, priv->clks);
gpio_free(priv->phy_reset_gpio);