Commit bbb8d793 authored by Andrew Lunn's avatar Andrew Lunn Committed by David S. Miller

net: dsa: Pass the dsa device to the switch drivers

By passing a device structure to the switch devices, it allows them
to use devm_* methods for resource management.
Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Tested-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 71bbe25d
...@@ -135,7 +135,8 @@ static int bcm_sf2_sw_get_sset_count(struct dsa_switch *ds) ...@@ -135,7 +135,8 @@ static int bcm_sf2_sw_get_sset_count(struct dsa_switch *ds)
return BCM_SF2_STATS_SIZE; return BCM_SF2_STATS_SIZE;
} }
static char *bcm_sf2_sw_probe(struct device *host_dev, int sw_addr) static char *bcm_sf2_sw_probe(struct device *dsa_dev, struct device *host_dev,
int sw_addr)
{ {
return "Broadcom Starfighter 2"; return "Broadcom Starfighter 2";
} }
......
...@@ -57,7 +57,8 @@ static int reg_write(struct dsa_switch *ds, int addr, int reg, u16 val) ...@@ -57,7 +57,8 @@ static int reg_write(struct dsa_switch *ds, int addr, int reg, u16 val)
return __ret; \ return __ret; \
}) })
static char *mv88e6060_probe(struct device *host_dev, int sw_addr) static char *mv88e6060_probe(struct device *dsa_dev, struct device *host_dev,
int sw_addr)
{ {
struct mii_bus *bus = dsa_host_dev_to_mii_bus(host_dev); struct mii_bus *bus = dsa_host_dev_to_mii_bus(host_dev);
int ret; int ret;
......
...@@ -29,7 +29,8 @@ static const struct mv88e6xxx_switch_id mv88e6123_table[] = { ...@@ -29,7 +29,8 @@ static const struct mv88e6xxx_switch_id mv88e6123_table[] = {
{ PORT_SWITCH_ID_6165_A2, "Marvell 88e6165 (A2)" }, { PORT_SWITCH_ID_6165_A2, "Marvell 88e6165 (A2)" },
}; };
static char *mv88e6123_probe(struct device *host_dev, int sw_addr) static char *mv88e6123_probe(struct device *dsa_dev, struct device *host_dev,
int sw_addr)
{ {
return mv88e6xxx_lookup_name(host_dev, sw_addr, mv88e6123_table, return mv88e6xxx_lookup_name(host_dev, sw_addr, mv88e6123_table,
ARRAY_SIZE(mv88e6123_table)); ARRAY_SIZE(mv88e6123_table));
......
...@@ -25,7 +25,8 @@ static const struct mv88e6xxx_switch_id mv88e6131_table[] = { ...@@ -25,7 +25,8 @@ static const struct mv88e6xxx_switch_id mv88e6131_table[] = {
{ PORT_SWITCH_ID_6185, "Marvell 88E6185" }, { PORT_SWITCH_ID_6185, "Marvell 88E6185" },
}; };
static char *mv88e6131_probe(struct device *host_dev, int sw_addr) static char *mv88e6131_probe(struct device *dsa_dev, struct device *host_dev,
int sw_addr)
{ {
return mv88e6xxx_lookup_name(host_dev, sw_addr, mv88e6131_table, return mv88e6xxx_lookup_name(host_dev, sw_addr, mv88e6131_table,
ARRAY_SIZE(mv88e6131_table)); ARRAY_SIZE(mv88e6131_table));
......
...@@ -24,7 +24,8 @@ static const struct mv88e6xxx_switch_id mv88e6171_table[] = { ...@@ -24,7 +24,8 @@ static const struct mv88e6xxx_switch_id mv88e6171_table[] = {
{ PORT_SWITCH_ID_6351, "Marvell 88E6351" }, { PORT_SWITCH_ID_6351, "Marvell 88E6351" },
}; };
static char *mv88e6171_probe(struct device *host_dev, int sw_addr) static char *mv88e6171_probe(struct device *dsa_dev, struct device *host_dev,
int sw_addr)
{ {
return mv88e6xxx_lookup_name(host_dev, sw_addr, mv88e6171_table, return mv88e6xxx_lookup_name(host_dev, sw_addr, mv88e6171_table,
ARRAY_SIZE(mv88e6171_table)); ARRAY_SIZE(mv88e6171_table));
......
...@@ -37,7 +37,8 @@ static const struct mv88e6xxx_switch_id mv88e6352_table[] = { ...@@ -37,7 +37,8 @@ static const struct mv88e6xxx_switch_id mv88e6352_table[] = {
{ PORT_SWITCH_ID_6352_A1, "Marvell 88E6352 (A1)" }, { PORT_SWITCH_ID_6352_A1, "Marvell 88E6352 (A1)" },
}; };
static char *mv88e6352_probe(struct device *host_dev, int sw_addr) static char *mv88e6352_probe(struct device *dsa_dev, struct device *host_dev,
int sw_addr)
{ {
return mv88e6xxx_lookup_name(host_dev, sw_addr, mv88e6352_table, return mv88e6xxx_lookup_name(host_dev, sw_addr, mv88e6352_table,
ARRAY_SIZE(mv88e6352_table)); ARRAY_SIZE(mv88e6352_table));
......
...@@ -212,7 +212,8 @@ struct dsa_switch_driver { ...@@ -212,7 +212,8 @@ struct dsa_switch_driver {
/* /*
* Probing and setup. * Probing and setup.
*/ */
char *(*probe)(struct device *host_dev, int sw_addr); char *(*probe)(struct device *dsa_dev, struct device *host_dev,
int sw_addr);
int (*setup)(struct dsa_switch *ds); int (*setup)(struct dsa_switch *ds);
int (*set_addr)(struct dsa_switch *ds, u8 *addr); int (*set_addr)(struct dsa_switch *ds, u8 *addr);
u32 (*get_phy_flags)(struct dsa_switch *ds, int port); u32 (*get_phy_flags)(struct dsa_switch *ds, int port);
......
...@@ -51,7 +51,8 @@ void unregister_switch_driver(struct dsa_switch_driver *drv) ...@@ -51,7 +51,8 @@ void unregister_switch_driver(struct dsa_switch_driver *drv)
EXPORT_SYMBOL_GPL(unregister_switch_driver); EXPORT_SYMBOL_GPL(unregister_switch_driver);
static struct dsa_switch_driver * static struct dsa_switch_driver *
dsa_switch_probe(struct device *host_dev, int sw_addr, char **_name) dsa_switch_probe(struct device *parent, struct device *host_dev, int sw_addr,
char **_name)
{ {
struct dsa_switch_driver *ret; struct dsa_switch_driver *ret;
struct list_head *list; struct list_head *list;
...@@ -66,7 +67,7 @@ dsa_switch_probe(struct device *host_dev, int sw_addr, char **_name) ...@@ -66,7 +67,7 @@ dsa_switch_probe(struct device *host_dev, int sw_addr, char **_name)
drv = list_entry(list, struct dsa_switch_driver, list); drv = list_entry(list, struct dsa_switch_driver, list);
name = drv->probe(host_dev, sw_addr); name = drv->probe(parent, host_dev, sw_addr);
if (name != NULL) { if (name != NULL) {
ret = drv; ret = drv;
break; break;
...@@ -387,7 +388,7 @@ dsa_switch_setup(struct dsa_switch_tree *dst, int index, ...@@ -387,7 +388,7 @@ dsa_switch_setup(struct dsa_switch_tree *dst, int index,
/* /*
* Probe for switch model. * Probe for switch model.
*/ */
drv = dsa_switch_probe(host_dev, pd->sw_addr, &name); drv = dsa_switch_probe(parent, host_dev, pd->sw_addr, &name);
if (drv == NULL) { if (drv == NULL) {
netdev_err(dst->master_netdev, "[%d]: could not detect attached switch\n", netdev_err(dst->master_netdev, "[%d]: could not detect attached switch\n",
index); index);
......
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