|
@@ -2132,7 +2132,7 @@ static int mv88e6xxx_setup(struct dsa_switch *ds)
|
|
goto unlock;
|
|
goto unlock;
|
|
|
|
|
|
/* Setup Switch Global 2 Registers */
|
|
/* Setup Switch Global 2 Registers */
|
|
- if (mv88e6xxx_has(chip, MV88E6XXX_FLAG_GLOBAL2)) {
|
|
|
|
|
|
+ if (chip->info->global2_addr) {
|
|
err = mv88e6xxx_g2_setup(chip);
|
|
err = mv88e6xxx_g2_setup(chip);
|
|
if (err)
|
|
if (err)
|
|
goto unlock;
|
|
goto unlock;
|
|
@@ -3240,6 +3240,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 8,
|
|
.g1_irqs = 8,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3259,6 +3260,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 8,
|
|
.g1_irqs = 8,
|
|
.atu_move_port_mask = 0xf,
|
|
.atu_move_port_mask = 0xf,
|
|
@@ -3276,6 +3278,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 8,
|
|
.g1_irqs = 8,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3295,6 +3298,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3314,6 +3318,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.atu_move_port_mask = 0xf,
|
|
.atu_move_port_mask = 0xf,
|
|
@@ -3331,6 +3336,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 3750,
|
|
.age_time_coeff = 3750,
|
|
.atu_move_port_mask = 0x1f,
|
|
.atu_move_port_mask = 0x1f,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3349,6 +3355,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3368,6 +3375,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3387,6 +3395,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3406,6 +3415,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3425,6 +3435,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3444,6 +3455,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3463,6 +3475,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 8,
|
|
.g1_irqs = 8,
|
|
.atu_move_port_mask = 0xf,
|
|
.atu_move_port_mask = 0xf,
|
|
@@ -3480,6 +3493,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 8191,
|
|
.max_vid = 8191,
|
|
.port_base_addr = 0x0,
|
|
.port_base_addr = 0x0,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.tag_protocol = DSA_TAG_PROTO_DSA,
|
|
.tag_protocol = DSA_TAG_PROTO_DSA,
|
|
.age_time_coeff = 3750,
|
|
.age_time_coeff = 3750,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
@@ -3499,6 +3513,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 8191,
|
|
.max_vid = 8191,
|
|
.port_base_addr = 0x0,
|
|
.port_base_addr = 0x0,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 3750,
|
|
.age_time_coeff = 3750,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 14,
|
|
.g2_irqs = 14,
|
|
@@ -3518,6 +3533,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 8191,
|
|
.max_vid = 8191,
|
|
.port_base_addr = 0x0,
|
|
.port_base_addr = 0x0,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 3750,
|
|
.age_time_coeff = 3750,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 14,
|
|
.g2_irqs = 14,
|
|
@@ -3537,6 +3553,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3556,6 +3573,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 8191,
|
|
.max_vid = 8191,
|
|
.port_base_addr = 0x0,
|
|
.port_base_addr = 0x0,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 3750,
|
|
.age_time_coeff = 3750,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 14,
|
|
.g2_irqs = 14,
|
|
@@ -3575,6 +3593,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 8,
|
|
.g1_irqs = 8,
|
|
.atu_move_port_mask = 0xf,
|
|
.atu_move_port_mask = 0xf,
|
|
@@ -3593,6 +3612,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 8,
|
|
.g1_irqs = 8,
|
|
.atu_move_port_mask = 0xf,
|
|
.atu_move_port_mask = 0xf,
|
|
@@ -3610,6 +3630,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 3750,
|
|
.age_time_coeff = 3750,
|
|
.atu_move_port_mask = 0x1f,
|
|
.atu_move_port_mask = 0x1f,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3628,6 +3649,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3647,6 +3669,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3666,6 +3689,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 4095,
|
|
.max_vid = 4095,
|
|
.port_base_addr = 0x10,
|
|
.port_base_addr = 0x10,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 15000,
|
|
.age_time_coeff = 15000,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 10,
|
|
.g2_irqs = 10,
|
|
@@ -3684,6 +3708,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 8191,
|
|
.max_vid = 8191,
|
|
.port_base_addr = 0x0,
|
|
.port_base_addr = 0x0,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 3750,
|
|
.age_time_coeff = 3750,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 14,
|
|
.g2_irqs = 14,
|
|
@@ -3702,6 +3727,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
|
|
.max_vid = 8191,
|
|
.max_vid = 8191,
|
|
.port_base_addr = 0x0,
|
|
.port_base_addr = 0x0,
|
|
.global1_addr = 0x1b,
|
|
.global1_addr = 0x1b,
|
|
|
|
+ .global2_addr = 0x1c,
|
|
.age_time_coeff = 3750,
|
|
.age_time_coeff = 3750,
|
|
.g1_irqs = 9,
|
|
.g1_irqs = 9,
|
|
.g2_irqs = 14,
|
|
.g2_irqs = 14,
|