Commit 242bd0c1 authored by Colin Foster's avatar Colin Foster Committed by Jakub Kicinski

net: dsa: ocelot: felix: add interface for custom regmaps

Add an interface so that non-mmio regmaps can be used
Signed-off-by: default avatarColin Foster <colin.foster@in-advantage.com>
Reviewed-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 49af6a76
...@@ -1028,7 +1028,7 @@ static int felix_init_structs(struct felix *felix, int num_phys_ports) ...@@ -1028,7 +1028,7 @@ static int felix_init_structs(struct felix *felix, int num_phys_ports)
res.start += felix->switch_base; res.start += felix->switch_base;
res.end += felix->switch_base; res.end += felix->switch_base;
target = ocelot_regmap_init(ocelot, &res); target = felix->info->init_regmap(ocelot, &res);
if (IS_ERR(target)) { if (IS_ERR(target)) {
dev_err(ocelot->dev, dev_err(ocelot->dev,
"Failed to map device memory space\n"); "Failed to map device memory space\n");
...@@ -1065,7 +1065,7 @@ static int felix_init_structs(struct felix *felix, int num_phys_ports) ...@@ -1065,7 +1065,7 @@ static int felix_init_structs(struct felix *felix, int num_phys_ports)
res.start += felix->switch_base; res.start += felix->switch_base;
res.end += felix->switch_base; res.end += felix->switch_base;
target = ocelot_regmap_init(ocelot, &res); target = felix->info->init_regmap(ocelot, &res);
if (IS_ERR(target)) { if (IS_ERR(target)) {
dev_err(ocelot->dev, dev_err(ocelot->dev,
"Failed to map memory space for port %d\n", "Failed to map memory space for port %d\n",
......
...@@ -50,6 +50,8 @@ struct felix_info { ...@@ -50,6 +50,8 @@ struct felix_info {
enum tc_setup_type type, void *type_data); enum tc_setup_type type, void *type_data);
void (*port_sched_speed_set)(struct ocelot *ocelot, int port, void (*port_sched_speed_set)(struct ocelot *ocelot, int port,
u32 speed); u32 speed);
struct regmap *(*init_regmap)(struct ocelot *ocelot,
struct resource *res);
}; };
extern const struct dsa_switch_ops felix_switch_ops; extern const struct dsa_switch_ops felix_switch_ops;
......
...@@ -2240,6 +2240,7 @@ static const struct felix_info felix_info_vsc9959 = { ...@@ -2240,6 +2240,7 @@ static const struct felix_info felix_info_vsc9959 = {
.prevalidate_phy_mode = vsc9959_prevalidate_phy_mode, .prevalidate_phy_mode = vsc9959_prevalidate_phy_mode,
.port_setup_tc = vsc9959_port_setup_tc, .port_setup_tc = vsc9959_port_setup_tc,
.port_sched_speed_set = vsc9959_sched_speed_set, .port_sched_speed_set = vsc9959_sched_speed_set,
.init_regmap = ocelot_regmap_init,
}; };
static irqreturn_t felix_irq_handler(int irq, void *data) static irqreturn_t felix_irq_handler(int irq, void *data)
......
...@@ -1104,6 +1104,7 @@ static const struct felix_info seville_info_vsc9953 = { ...@@ -1104,6 +1104,7 @@ static const struct felix_info seville_info_vsc9953 = {
.mdio_bus_free = vsc9953_mdio_bus_free, .mdio_bus_free = vsc9953_mdio_bus_free,
.phylink_validate = vsc9953_phylink_validate, .phylink_validate = vsc9953_phylink_validate,
.prevalidate_phy_mode = vsc9953_prevalidate_phy_mode, .prevalidate_phy_mode = vsc9953_prevalidate_phy_mode,
.init_regmap = ocelot_regmap_init,
}; };
static int seville_probe(struct platform_device *pdev) static int seville_probe(struct platform_device *pdev)
......
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