|
@@ -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_pot_setup(struct mv88e6xxx_chip *chip)
|
|
|
+{
|
|
|
+ if (chip->info->ops->pot_clear)
|
|
|
+ return chip->info->ops->pot_clear(chip);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static int mv88e6xxx_rsvd2cpu_setup(struct mv88e6xxx_chip *chip)
|
|
|
{
|
|
|
if (chip->info->ops->mgmt_rsvd2cpu)
|
|
@@ -2150,6 +2158,10 @@ static int mv88e6xxx_setup(struct dsa_switch *ds)
|
|
|
if (err)
|
|
|
goto unlock;
|
|
|
|
|
|
+ err = mv88e6xxx_pot_setup(chip);
|
|
|
+ if (err)
|
|
|
+ goto unlock;
|
|
|
+
|
|
|
err = mv88e6xxx_rsvd2cpu_setup(chip);
|
|
|
if (err)
|
|
|
goto unlock;
|
|
@@ -2387,6 +2399,7 @@ static const struct mv88e6xxx_ops mv88e6085_ops = {
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.ppu_enable = mv88e6185_g1_ppu_enable,
|
|
|
.ppu_disable = mv88e6185_g1_ppu_disable,
|
|
|
.reset = mv88e6185_g1_reset,
|
|
@@ -2443,6 +2456,7 @@ static const struct mv88e6xxx_ops mv88e6097_ops = {
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2469,6 +2483,7 @@ static const struct mv88e6xxx_ops mv88e6123_ops = {
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2534,6 +2549,7 @@ static const struct mv88e6xxx_ops mv88e6141_ops = {
|
|
|
.set_egress_port = mv88e6390_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6390_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6390_g1_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2565,6 +2581,7 @@ static const struct mv88e6xxx_ops mv88e6161_ops = {
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2589,6 +2606,7 @@ static const struct mv88e6xxx_ops mv88e6165_ops = {
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2621,6 +2639,7 @@ static const struct mv88e6xxx_ops mv88e6171_ops = {
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2655,6 +2674,7 @@ static const struct mv88e6xxx_ops mv88e6172_ops = {
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2688,6 +2708,7 @@ static const struct mv88e6xxx_ops mv88e6175_ops = {
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2722,6 +2743,7 @@ static const struct mv88e6xxx_ops mv88e6176_ops = {
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2783,6 +2805,7 @@ static const struct mv88e6xxx_ops mv88e6190_ops = {
|
|
|
.set_egress_port = mv88e6390_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6390_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6390_g1_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6390_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6390_g1_vtu_loadpurge,
|
|
@@ -2817,6 +2840,7 @@ static const struct mv88e6xxx_ops mv88e6190x_ops = {
|
|
|
.set_egress_port = mv88e6390_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6390_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6390_g1_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6390_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6390_g1_vtu_loadpurge,
|
|
@@ -2851,6 +2875,7 @@ static const struct mv88e6xxx_ops mv88e6191_ops = {
|
|
|
.set_egress_port = mv88e6390_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6390_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6390_g1_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6390_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6390_g1_vtu_loadpurge,
|
|
@@ -2886,6 +2911,7 @@ static const struct mv88e6xxx_ops mv88e6240_ops = {
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -2921,6 +2947,7 @@ static const struct mv88e6xxx_ops mv88e6290_ops = {
|
|
|
.set_egress_port = mv88e6390_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6390_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6390_g1_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6390_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6390_g1_vtu_loadpurge,
|
|
@@ -2954,6 +2981,7 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
|
|
|
.set_cpu_port = mv88e6095_g1_set_cpu_port,
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6185_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6185_g1_vtu_loadpurge,
|
|
@@ -3019,6 +3047,7 @@ static const struct mv88e6xxx_ops mv88e6341_ops = {
|
|
|
.set_egress_port = mv88e6390_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6390_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6390_g1_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -3051,6 +3080,7 @@ static const struct mv88e6xxx_ops mv88e6350_ops = {
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -3083,6 +3113,7 @@ static const struct mv88e6xxx_ops mv88e6351_ops = {
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -3117,6 +3148,7 @@ static const struct mv88e6xxx_ops mv88e6352_ops = {
|
|
|
.set_egress_port = mv88e6095_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6097_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6352_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
@@ -3154,6 +3186,7 @@ static const struct mv88e6xxx_ops mv88e6390_ops = {
|
|
|
.set_egress_port = mv88e6390_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6390_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6390_g1_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6390_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6390_g1_vtu_loadpurge,
|
|
@@ -3190,6 +3223,7 @@ static const struct mv88e6xxx_ops mv88e6390x_ops = {
|
|
|
.set_egress_port = mv88e6390_g1_set_egress_port,
|
|
|
.watchdog_ops = &mv88e6390_watchdog_ops,
|
|
|
.mgmt_rsvd2cpu = mv88e6390_g1_mgmt_rsvd2cpu,
|
|
|
+ .pot_clear = mv88e6xxx_g2_pot_clear,
|
|
|
.reset = mv88e6352_g1_reset,
|
|
|
.vtu_getnext = mv88e6390_g1_vtu_getnext,
|
|
|
.vtu_loadpurge = mv88e6390_g1_vtu_loadpurge,
|