mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-13 00:29:50 +00:00
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: Andrew Lunn <andrew@lunn.ch> Acked-by: Florian Fainelli <f.fainelli@gmail.com> Tested-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
71bbe25d01
commit
bbb8d79399
@ -135,7 +135,8 @@ static int bcm_sf2_sw_get_sset_count(struct dsa_switch *ds)
|
||||
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";
|
||||
}
|
||||
|
@ -57,7 +57,8 @@ static int reg_write(struct dsa_switch *ds, int addr, int reg, u16 val)
|
||||
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);
|
||||
int ret;
|
||||
|
@ -29,7 +29,8 @@ static const struct mv88e6xxx_switch_id mv88e6123_table[] = {
|
||||
{ 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,
|
||||
ARRAY_SIZE(mv88e6123_table));
|
||||
|
@ -25,7 +25,8 @@ static const struct mv88e6xxx_switch_id mv88e6131_table[] = {
|
||||
{ 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,
|
||||
ARRAY_SIZE(mv88e6131_table));
|
||||
|
@ -24,7 +24,8 @@ static const struct mv88e6xxx_switch_id mv88e6171_table[] = {
|
||||
{ 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,
|
||||
ARRAY_SIZE(mv88e6171_table));
|
||||
|
@ -37,7 +37,8 @@ static const struct mv88e6xxx_switch_id mv88e6352_table[] = {
|
||||
{ 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,
|
||||
ARRAY_SIZE(mv88e6352_table));
|
||||
|
@ -212,7 +212,8 @@ struct dsa_switch_driver {
|
||||
/*
|
||||
* 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 (*set_addr)(struct dsa_switch *ds, u8 *addr);
|
||||
u32 (*get_phy_flags)(struct dsa_switch *ds, int port);
|
||||
|
@ -51,7 +51,8 @@ void unregister_switch_driver(struct dsa_switch_driver *drv)
|
||||
EXPORT_SYMBOL_GPL(unregister_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 list_head *list;
|
||||
@ -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);
|
||||
|
||||
name = drv->probe(host_dev, sw_addr);
|
||||
name = drv->probe(parent, host_dev, sw_addr);
|
||||
if (name != NULL) {
|
||||
ret = drv;
|
||||
break;
|
||||
@ -387,7 +388,7 @@ dsa_switch_setup(struct dsa_switch_tree *dst, int index,
|
||||
/*
|
||||
* 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) {
|
||||
netdev_err(dst->master_netdev, "[%d]: could not detect attached switch\n",
|
||||
index);
|
||||
|
Loading…
x
Reference in New Issue
Block a user