Commit 5f109d45 authored by Alexandru Ardelean's avatar Alexandru Ardelean Committed by David S. Miller

net: stmmac: socfpga: re-use the `interface` parameter from platform data

The socfpga sub-driver defines an `interface` field in the `socfpga_dwmac`
struct and parses it on init.

The shared `stmmac_probe_config_dt()` function also parses this from the
device-tree and makes it available on the returned `plat_data` (which is
the same data available via `netdev_priv()`).

All that's needed now is to dig that information out, via some
`dev_get_drvdata()` && `netdev_priv()` calls and re-use it.
Signed-off-by: default avatarAlexandru Ardelean <alexandru.ardelean@analog.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 95cf6674
...@@ -46,7 +46,6 @@ struct socfpga_dwmac_ops { ...@@ -46,7 +46,6 @@ struct socfpga_dwmac_ops {
}; };
struct socfpga_dwmac { struct socfpga_dwmac {
int interface;
u32 reg_offset; u32 reg_offset;
u32 reg_shift; u32 reg_shift;
struct device *dev; struct device *dev;
...@@ -110,8 +109,6 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device * ...@@ -110,8 +109,6 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device *
struct resource res_tse_pcs; struct resource res_tse_pcs;
struct resource res_sgmii_adapter; struct resource res_sgmii_adapter;
dwmac->interface = of_get_phy_mode(np);
sys_mgr_base_addr = sys_mgr_base_addr =
altr_sysmgr_regmap_lookup_by_phandle(np, "altr,sysmgr-syscon"); altr_sysmgr_regmap_lookup_by_phandle(np, "altr,sysmgr-syscon");
if (IS_ERR(sys_mgr_base_addr)) { if (IS_ERR(sys_mgr_base_addr)) {
...@@ -231,6 +228,14 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device * ...@@ -231,6 +228,14 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device *
return ret; return ret;
} }
static int socfpga_get_plat_phymode(struct socfpga_dwmac *dwmac)
{
struct net_device *ndev = dev_get_drvdata(dwmac->dev);
struct stmmac_priv *priv = netdev_priv(ndev);
return priv->plat->interface;
}
static int socfpga_set_phy_mode_common(int phymode, u32 *val) static int socfpga_set_phy_mode_common(int phymode, u32 *val)
{ {
switch (phymode) { switch (phymode) {
...@@ -255,7 +260,7 @@ static int socfpga_set_phy_mode_common(int phymode, u32 *val) ...@@ -255,7 +260,7 @@ static int socfpga_set_phy_mode_common(int phymode, u32 *val)
static int socfpga_gen5_set_phy_mode(struct socfpga_dwmac *dwmac) static int socfpga_gen5_set_phy_mode(struct socfpga_dwmac *dwmac)
{ {
struct regmap *sys_mgr_base_addr = dwmac->sys_mgr_base_addr; struct regmap *sys_mgr_base_addr = dwmac->sys_mgr_base_addr;
int phymode = dwmac->interface; int phymode = socfpga_get_plat_phymode(dwmac);
u32 reg_offset = dwmac->reg_offset; u32 reg_offset = dwmac->reg_offset;
u32 reg_shift = dwmac->reg_shift; u32 reg_shift = dwmac->reg_shift;
u32 ctrl, val, module; u32 ctrl, val, module;
...@@ -314,7 +319,7 @@ static int socfpga_gen5_set_phy_mode(struct socfpga_dwmac *dwmac) ...@@ -314,7 +319,7 @@ static int socfpga_gen5_set_phy_mode(struct socfpga_dwmac *dwmac)
static int socfpga_gen10_set_phy_mode(struct socfpga_dwmac *dwmac) static int socfpga_gen10_set_phy_mode(struct socfpga_dwmac *dwmac)
{ {
struct regmap *sys_mgr_base_addr = dwmac->sys_mgr_base_addr; struct regmap *sys_mgr_base_addr = dwmac->sys_mgr_base_addr;
int phymode = dwmac->interface; int phymode = socfpga_get_plat_phymode(dwmac);
u32 reg_offset = dwmac->reg_offset; u32 reg_offset = dwmac->reg_offset;
u32 reg_shift = dwmac->reg_shift; u32 reg_shift = dwmac->reg_shift;
u32 ctrl, val, module; u32 ctrl, val, module;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment