|
@@ -926,6 +926,14 @@ static void mv88e6xxx_port_stp_state_set(struct dsa_switch *ds, int port,
|
|
|
dev_err(ds->dev, "p%d: failed to update state\n", port);
|
|
|
}
|
|
|
|
|
|
+static int mv88e6xxx_rsvd2cpu_setup(struct mv88e6xxx_chip *chip)
|
|
|
+{
|
|
|
+ if (chip->info->ops->mgmt_rsvd2cpu)
|
|
|
+ return chip->info->ops->mgmt_rsvd2cpu(chip);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static int mv88e6xxx_atu_setup(struct mv88e6xxx_chip *chip)
|
|
|
{
|
|
|
int err;
|
|
@@ -2142,16 +2150,9 @@ static int mv88e6xxx_setup(struct dsa_switch *ds)
|
|
|
if (err)
|
|
|
goto unlock;
|
|
|
|
|
|
- /* Some generations have the configuration of sending reserved
|
|
|
- * management frames to the CPU in global2, others in
|
|
|
- * global1. Hence it does not fit the two setup functions
|
|
|
- * above.
|
|
|
- */
|
|
|
- if (chip->info->ops->mgmt_rsvd2cpu) {
|
|
|
- err = chip->info->ops->mgmt_rsvd2cpu(chip);
|
|
|
- if (err)
|
|
|
- goto unlock;
|
|
|
- }
|
|
|
+ err = mv88e6xxx_rsvd2cpu_setup(chip);
|
|
|
+ if (err)
|
|
|
+ goto unlock;
|
|
|
|
|
|
unlock:
|
|
|
mutex_unlock(&chip->reg_lock);
|
|
@@ -2385,7 +2386,7 @@ static const struct mv88e6xxx_ops mv88e6085_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
.ppu_enable = mv88e6185_g1_ppu_enable,
|
|
|
.ppu_disable = mv88e6185_g1_ppu_disable,
|
|
|
.reset = mv88e6185_g1_reset,
|
|
@@ -2408,7 +2409,7 @@ static const struct mv88e6xxx_ops mv88e6095_ops = {
|
|
|
.stats_get_sset_count = mv88e6095_stats_get_sset_count,
|
|
|
.stats_get_strings = mv88e6095_stats_get_strings,
|
|
|
.stats_get_stats = mv88e6095_stats_get_stats,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6185_g2_mgmt_rsvd2cpu,
|
|
|
.ppu_enable = mv88e6185_g1_ppu_enable,
|
|
|
.ppu_disable = mv88e6185_g1_ppu_disable,
|
|
|
.reset = mv88e6185_g1_reset,
|
|
@@ -2441,7 +2442,7 @@ static const struct mv88e6xxx_ops mv88e6097_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2467,7 +2468,7 @@ static const struct mv88e6xxx_ops mv88e6123_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2496,7 +2497,7 @@ static const struct mv88e6xxx_ops mv88e6131_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6185_g2_mgmt_rsvd2cpu,
|
|
|
.ppu_enable = mv88e6185_g1_ppu_enable,
|
|
|
.ppu_disable = mv88e6185_g1_ppu_disable,
|
|
|
.reset = mv88e6185_g1_reset,
|
|
@@ -2563,7 +2564,7 @@ static const struct mv88e6xxx_ops mv88e6161_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2587,7 +2588,7 @@ static const struct mv88e6xxx_ops mv88e6165_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2619,7 +2620,7 @@ static const struct mv88e6xxx_ops mv88e6171_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2653,7 +2654,7 @@ static const struct mv88e6xxx_ops mv88e6172_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2686,7 +2687,7 @@ static const struct mv88e6xxx_ops mv88e6175_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2720,7 +2721,7 @@ static const struct mv88e6xxx_ops mv88e6176_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2746,7 +2747,7 @@ static const struct mv88e6xxx_ops mv88e6185_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6185_g2_mgmt_rsvd2cpu,
|
|
|
.ppu_enable = mv88e6185_g1_ppu_enable,
|
|
|
.ppu_disable = mv88e6185_g1_ppu_disable,
|
|
|
.reset = mv88e6185_g1_reset,
|
|
@@ -2884,7 +2885,7 @@ static const struct mv88e6xxx_ops mv88e6240_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2952,7 +2953,7 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
|
|
|
.stats_get_stats = mv88e6320_stats_get_stats,
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6185_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6185_g1_vtu_loadpurge,
|
|
@@ -3049,7 +3050,7 @@ static const struct mv88e6xxx_ops mv88e6350_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -3081,7 +3082,7 @@ static const struct mv88e6xxx_ops mv88e6351_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -3115,7 +3116,7 @@ static const struct mv88e6xxx_ops mv88e6352_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
- .mgmt_rsvd2cpu = mv88e6095_g2_mgmt_rsvd2cpu,
|
|
|
+ .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|