diff options
author | Faiz Abbas <faiz_abbas@ti.com> | 2019-03-18 13:54:32 +0530 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2019-04-12 08:05:52 -0400 |
commit | e50f878c98ddec1f8247b835335d7ea1ab8e7b3f (patch) | |
tree | 7e4fde03eec8aa8d96bc52b00c28a71e9b61a7f2 | |
parent | 3c6add986f1cfca8651e5bfd5a8dbefa6d89ecc9 (diff) |
net: ti: cpsw: Move cpsw_phy_sel() to _probe()
cpsw_phy_sel() is a configuration step that should not be in
ofdata_to_platdata(). Add phy_sel_compat to the cpsw_platform_data
structure so that it is accessible in _probe. Then move the call of
cpsw_phy_sel() to _probe.
Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>
-rw-r--r-- | drivers/net/ti/cpsw.c | 33 | ||||
-rw-r--r-- | include/cpsw.h | 1 |
2 files changed, 17 insertions, 17 deletions
diff --git a/drivers/net/ti/cpsw.c b/drivers/net/ti/cpsw.c index f5fd02efe1..bd33d80ab4 100644 --- a/drivers/net/ti/cpsw.c +++ b/drivers/net/ti/cpsw.c @@ -1048,16 +1048,6 @@ static void cpsw_eth_stop(struct udevice *dev) return _cpsw_halt(priv); } - -static int cpsw_eth_probe(struct udevice *dev) -{ - struct cpsw_priv *priv = dev_get_priv(dev); - - priv->dev = dev; - - return _cpsw_register(priv); -} - static const struct eth_ops cpsw_eth_ops = { .start = cpsw_eth_start, .send = cpsw_eth_send, @@ -1188,13 +1178,25 @@ static void cpsw_phy_sel(struct cpsw_priv *priv, const char *compat, cpsw_gmii_sel_dra7xx(priv, phy_mode); } +static int cpsw_eth_probe(struct udevice *dev) +{ + struct cpsw_priv *priv = dev_get_priv(dev); + struct eth_pdata *pdata = dev_get_platdata(dev); + + priv->dev = dev; + /* Select phy interface in control module */ + cpsw_phy_sel(priv, priv->data.phy_sel_compat, + pdata->phy_interface); + + return _cpsw_register(priv); +} + static int cpsw_eth_ofdata_to_platdata(struct udevice *dev) { struct eth_pdata *pdata = dev_get_platdata(dev); struct cpsw_priv *priv = dev_get_priv(dev); struct gpio_desc *mode_gpios; const char *phy_mode; - const char *phy_sel_compat = NULL; const void *fdt = gd->fdt_blob; int node = dev_of_offset(dev); int subnode; @@ -1315,9 +1317,9 @@ static int cpsw_eth_ofdata_to_platdata(struct udevice *dev) NULL)) priv->data.rmii_clock_external = true; - phy_sel_compat = fdt_getprop(fdt, subnode, "compatible", - NULL); - if (!phy_sel_compat) { + priv->data.phy_sel_compat = fdt_getprop(fdt, subnode, + "compatible", NULL); + if (!priv->data.phy_sel_compat) { pr_err("Not able to get gmii_sel compatible\n"); return -ENOENT; } @@ -1344,9 +1346,6 @@ static int cpsw_eth_ofdata_to_platdata(struct udevice *dev) return -EINVAL; } - /* Select phy interface in control module */ - cpsw_phy_sel(priv, phy_sel_compat, pdata->phy_interface); - return 0; } diff --git a/include/cpsw.h b/include/cpsw.h index 9f8ce8850f..55db277e73 100644 --- a/include/cpsw.h +++ b/include/cpsw.h @@ -50,6 +50,7 @@ struct cpsw_platform_data { u32 active_slave; bool rmii_clock_external; u8 version; + const char *phy_sel_compat; }; int cpsw_register(struct cpsw_platform_data *data); |