diff options
| author | Vladimir Oltean <vladimir.oltean@nxp.com> | 2024-05-30 19:33:32 +0300 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2024-06-03 13:06:16 +0100 |
| commit | efdbee7d07916d994bc0ff0235d00d46fa991b61 (patch) | |
| tree | 8cbac6075dc6cc5e9980ee2b19781394cab40b6b /drivers/net/dsa/ocelot/felix.h | |
| parent | 4ca54dd96eca57adea961c0e6cca28bf76168429 (diff) | |
| download | linux-efdbee7d07916d994bc0ff0235d00d46fa991b61.tar.gz linux-efdbee7d07916d994bc0ff0235d00d46fa991b61.tar.bz2 linux-efdbee7d07916d994bc0ff0235d00d46fa991b61.zip | |
net: dsa: ocelot: common probing code
Russell King suggested that felix_vsc9959, seville_vsc9953 and
ocelot_ext have a large portion of duplicated init code, which could be
made common [1].
[1]: https://lore.kernel.org/all/Zh1GvcOTXqb7CpQt@shell.armlinux.org.uk/
Here, we take the following common steps:
- "felix" and "ds" structure allocation
- "felix", "ocelot" and "ds" basic structure initialization
- dsa_register_switch() call
and we make a common function out of them.
For every driver except felix_vsc9959, this is also the entire probing
procedure. For felix_vsc9959, we also need to do some PCI-specific
stuff, which can easily be reordered to be done before, and unwound on
failure.
We also have to convert the bus-specific platform_set_drvdata() and
pci_set_drvdata() calls into dev_set_drvdata(). But this should have no
impact on the behavior.
Suggested-by: "Russell King (Oracle)" <linux@armlinux.org.uk>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Tested-by: Colin Foster <colin.foster@in-advantage.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/dsa/ocelot/felix.h')
| -rw-r--r-- | drivers/net/dsa/ocelot/felix.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/dsa/ocelot/felix.h b/drivers/net/dsa/ocelot/felix.h index e0bfea10ff52..85b4f8616003 100644 --- a/drivers/net/dsa/ocelot/felix.h +++ b/drivers/net/dsa/ocelot/felix.h @@ -100,6 +100,11 @@ struct felix { unsigned long host_flood_mc_mask; }; +int felix_register_switch(struct device *dev, resource_size_t switch_base, + int num_flooding_pgids, bool ptp, + bool mm_supported, + enum dsa_tag_protocol init_tag_proto, + const struct felix_info *info); struct net_device *felix_port_to_netdev(struct ocelot *ocelot, int port); int felix_netdev_to_port(struct net_device *dev); |
