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: Alexandru Ardelean <alexandru.ardelean@analog.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
95cf66747f
Коммит
5f109d45a4
|
@ -46,7 +46,6 @@ struct socfpga_dwmac_ops {
|
|||
};
|
||||
|
||||
struct socfpga_dwmac {
|
||||
int interface;
|
||||
u32 reg_offset;
|
||||
u32 reg_shift;
|
||||
struct device *dev;
|
||||
|
@ -110,8 +109,6 @@ static int socfpga_dwmac_parse_data(struct socfpga_dwmac *dwmac, struct device *
|
|||
struct resource res_tse_pcs;
|
||||
struct resource res_sgmii_adapter;
|
||||
|
||||
dwmac->interface = of_get_phy_mode(np);
|
||||
|
||||
sys_mgr_base_addr =
|
||||
altr_sysmgr_regmap_lookup_by_phandle(np, "altr,sysmgr-syscon");
|
||||
if (IS_ERR(sys_mgr_base_addr)) {
|
||||
|
@ -231,6 +228,14 @@ err_node_put:
|
|||
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)
|
||||
{
|
||||
switch (phymode) {
|
||||
|
@ -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)
|
||||
{
|
||||
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_shift = dwmac->reg_shift;
|
||||
u32 ctrl, val, module;
|
||||
|
@ -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)
|
||||
{
|
||||
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_shift = dwmac->reg_shift;
|
||||
u32 ctrl, val, module;
|
||||
|
|
Загрузка…
Ссылка в новой задаче