diff options
author | Vivien Didelot <vivien.didelot@savoirfairelinux.com> | 2016-04-17 13:24:00 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-04-17 18:54:15 -0400 |
commit | 22356476a86fc569c34cbf209d3a247c01e0ef6d (patch) | |
tree | 534a5deb79c017f80251838821987b3731da1559 | |
parent | f6271e676b7f62a609f8ee5523a6a8ed47c0f333 (diff) |
net: dsa: mv88e6xxx: add family to info
Add an mv88e6xxx_family enum to the info structure for better family
indentification.
Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/dsa/mv88e6123.c | 3 | ||||
-rw-r--r-- | drivers/net/dsa/mv88e6131.c | 4 | ||||
-rw-r--r-- | drivers/net/dsa/mv88e6171.c | 4 | ||||
-rw-r--r-- | drivers/net/dsa/mv88e6352.c | 6 | ||||
-rw-r--r-- | drivers/net/dsa/mv88e6xxx.c | 71 | ||||
-rw-r--r-- | drivers/net/dsa/mv88e6xxx.h | 13 |
6 files changed, 38 insertions, 63 deletions
diff --git a/drivers/net/dsa/mv88e6123.c b/drivers/net/dsa/mv88e6123.c index 62dffcf915a7..776e6ef3e29c 100644 --- a/drivers/net/dsa/mv88e6123.c +++ b/drivers/net/dsa/mv88e6123.c | |||
@@ -20,12 +20,15 @@ | |||
20 | static const struct mv88e6xxx_info mv88e6123_table[] = { | 20 | static const struct mv88e6xxx_info mv88e6123_table[] = { |
21 | { | 21 | { |
22 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6123, | 22 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6123, |
23 | .family = MV88E6XXX_FAMILY_6165, | ||
23 | .name = "Marvell 88E6123", | 24 | .name = "Marvell 88E6123", |
24 | }, { | 25 | }, { |
25 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6161, | 26 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6161, |
27 | .family = MV88E6XXX_FAMILY_6165, | ||
26 | .name = "Marvell 88E6161", | 28 | .name = "Marvell 88E6161", |
27 | }, { | 29 | }, { |
28 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6165, | 30 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6165, |
31 | .family = MV88E6XXX_FAMILY_6165, | ||
29 | .name = "Marvell 88E6165", | 32 | .name = "Marvell 88E6165", |
30 | } | 33 | } |
31 | }; | 34 | }; |
diff --git a/drivers/net/dsa/mv88e6131.c b/drivers/net/dsa/mv88e6131.c index 00567156f335..1986651ac054 100644 --- a/drivers/net/dsa/mv88e6131.c +++ b/drivers/net/dsa/mv88e6131.c | |||
@@ -20,15 +20,19 @@ | |||
20 | static const struct mv88e6xxx_info mv88e6131_table[] = { | 20 | static const struct mv88e6xxx_info mv88e6131_table[] = { |
21 | { | 21 | { |
22 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6095, | 22 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6095, |
23 | .family = MV88E6XXX_FAMILY_6095, | ||
23 | .name = "Marvell 88E6095/88E6095F", | 24 | .name = "Marvell 88E6095/88E6095F", |
24 | }, { | 25 | }, { |
25 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6085, | 26 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6085, |
27 | .family = MV88E6XXX_FAMILY_6097, | ||
26 | .name = "Marvell 88E6085", | 28 | .name = "Marvell 88E6085", |
27 | }, { | 29 | }, { |
28 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6131, | 30 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6131, |
31 | .family = MV88E6XXX_FAMILY_6185, | ||
29 | .name = "Marvell 88E6131", | 32 | .name = "Marvell 88E6131", |
30 | }, { | 33 | }, { |
31 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6185, | 34 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6185, |
35 | .family = MV88E6XXX_FAMILY_6185, | ||
32 | .name = "Marvell 88E6185", | 36 | .name = "Marvell 88E6185", |
33 | } | 37 | } |
34 | }; | 38 | }; |
diff --git a/drivers/net/dsa/mv88e6171.c b/drivers/net/dsa/mv88e6171.c index ea14ab22d313..9a3b1e19b01a 100644 --- a/drivers/net/dsa/mv88e6171.c +++ b/drivers/net/dsa/mv88e6171.c | |||
@@ -20,15 +20,19 @@ | |||
20 | static const struct mv88e6xxx_info mv88e6171_table[] = { | 20 | static const struct mv88e6xxx_info mv88e6171_table[] = { |
21 | { | 21 | { |
22 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6171, | 22 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6171, |
23 | .family = MV88E6XXX_FAMILY_6351, | ||
23 | .name = "Marvell 88E6171", | 24 | .name = "Marvell 88E6171", |
24 | }, { | 25 | }, { |
25 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6175, | 26 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6175, |
27 | .family = MV88E6XXX_FAMILY_6351, | ||
26 | .name = "Marvell 88E6175", | 28 | .name = "Marvell 88E6175", |
27 | }, { | 29 | }, { |
28 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6350, | 30 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6350, |
31 | .family = MV88E6XXX_FAMILY_6351, | ||
29 | .name = "Marvell 88E6350", | 32 | .name = "Marvell 88E6350", |
30 | }, { | 33 | }, { |
31 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6351, | 34 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6351, |
35 | .family = MV88E6XXX_FAMILY_6351, | ||
32 | .name = "Marvell 88E6351", | 36 | .name = "Marvell 88E6351", |
33 | } | 37 | } |
34 | }; | 38 | }; |
diff --git a/drivers/net/dsa/mv88e6352.c b/drivers/net/dsa/mv88e6352.c index 2f72606ecc9e..bae62eb9c3b5 100644 --- a/drivers/net/dsa/mv88e6352.c +++ b/drivers/net/dsa/mv88e6352.c | |||
@@ -25,21 +25,27 @@ | |||
25 | static const struct mv88e6xxx_info mv88e6352_table[] = { | 25 | static const struct mv88e6xxx_info mv88e6352_table[] = { |
26 | { | 26 | { |
27 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6320, | 27 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6320, |
28 | .family = MV88E6XXX_FAMILY_6320, | ||
28 | .name = "Marvell 88E6320", | 29 | .name = "Marvell 88E6320", |
29 | }, { | 30 | }, { |
30 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6321, | 31 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6321, |
32 | .family = MV88E6XXX_FAMILY_6320, | ||
31 | .name = "Marvell 88E6321", | 33 | .name = "Marvell 88E6321", |
32 | }, { | 34 | }, { |
33 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6172, | 35 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6172, |
36 | .family = MV88E6XXX_FAMILY_6352, | ||
34 | .name = "Marvell 88E6172", | 37 | .name = "Marvell 88E6172", |
35 | }, { | 38 | }, { |
36 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6176, | 39 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6176, |
40 | .family = MV88E6XXX_FAMILY_6352, | ||
37 | .name = "Marvell 88E6176", | 41 | .name = "Marvell 88E6176", |
38 | }, { | 42 | }, { |
39 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6240, | 43 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6240, |
44 | .family = MV88E6XXX_FAMILY_6352, | ||
40 | .name = "Marvell 88E6240", | 45 | .name = "Marvell 88E6240", |
41 | }, { | 46 | }, { |
42 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6352, | 47 | .prod_num = PORT_SWITCH_ID_PROD_NUM_6352, |
48 | .family = MV88E6XXX_FAMILY_6352, | ||
43 | .name = "Marvell 88E6352", | 49 | .name = "Marvell 88E6352", |
44 | } | 50 | } |
45 | }; | 51 | }; |
diff --git a/drivers/net/dsa/mv88e6xxx.c b/drivers/net/dsa/mv88e6xxx.c index 5fb21e059f35..8f8a1cf59fda 100644 --- a/drivers/net/dsa/mv88e6xxx.c +++ b/drivers/net/dsa/mv88e6xxx.c | |||
@@ -402,111 +402,56 @@ static bool mv88e6xxx_6065_family(struct dsa_switch *ds) | |||
402 | { | 402 | { |
403 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); | 403 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); |
404 | 404 | ||
405 | switch (ps->id) { | 405 | return ps->info->family == MV88E6XXX_FAMILY_6065; |
406 | case PORT_SWITCH_ID_6031: | ||
407 | case PORT_SWITCH_ID_6061: | ||
408 | case PORT_SWITCH_ID_6035: | ||
409 | case PORT_SWITCH_ID_6065: | ||
410 | return true; | ||
411 | } | ||
412 | return false; | ||
413 | } | 406 | } |
414 | 407 | ||
415 | static bool mv88e6xxx_6095_family(struct dsa_switch *ds) | 408 | static bool mv88e6xxx_6095_family(struct dsa_switch *ds) |
416 | { | 409 | { |
417 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); | 410 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); |
418 | 411 | ||
419 | switch (ps->id) { | 412 | return ps->info->family == MV88E6XXX_FAMILY_6095; |
420 | case PORT_SWITCH_ID_6092: | ||
421 | case PORT_SWITCH_ID_6095: | ||
422 | return true; | ||
423 | } | ||
424 | return false; | ||
425 | } | 413 | } |
426 | 414 | ||
427 | static bool mv88e6xxx_6097_family(struct dsa_switch *ds) | 415 | static bool mv88e6xxx_6097_family(struct dsa_switch *ds) |
428 | { | 416 | { |
429 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); | 417 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); |
430 | 418 | ||
431 | switch (ps->id) { | 419 | return ps->info->family == MV88E6XXX_FAMILY_6097; |
432 | case PORT_SWITCH_ID_6046: | ||
433 | case PORT_SWITCH_ID_6085: | ||
434 | case PORT_SWITCH_ID_6096: | ||
435 | case PORT_SWITCH_ID_6097: | ||
436 | return true; | ||
437 | } | ||
438 | return false; | ||
439 | } | 420 | } |
440 | 421 | ||
441 | static bool mv88e6xxx_6165_family(struct dsa_switch *ds) | 422 | static bool mv88e6xxx_6165_family(struct dsa_switch *ds) |
442 | { | 423 | { |
443 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); | 424 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); |
444 | 425 | ||
445 | switch (ps->id) { | 426 | return ps->info->family == MV88E6XXX_FAMILY_6165; |
446 | case PORT_SWITCH_ID_6123: | ||
447 | case PORT_SWITCH_ID_6161: | ||
448 | case PORT_SWITCH_ID_6165: | ||
449 | return true; | ||
450 | } | ||
451 | return false; | ||
452 | } | 427 | } |
453 | 428 | ||
454 | static bool mv88e6xxx_6185_family(struct dsa_switch *ds) | 429 | static bool mv88e6xxx_6185_family(struct dsa_switch *ds) |
455 | { | 430 | { |
456 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); | 431 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); |
457 | 432 | ||
458 | switch (ps->id) { | 433 | return ps->info->family == MV88E6XXX_FAMILY_6185; |
459 | case PORT_SWITCH_ID_6121: | ||
460 | case PORT_SWITCH_ID_6122: | ||
461 | case PORT_SWITCH_ID_6152: | ||
462 | case PORT_SWITCH_ID_6155: | ||
463 | case PORT_SWITCH_ID_6182: | ||
464 | case PORT_SWITCH_ID_6185: | ||
465 | case PORT_SWITCH_ID_6108: | ||
466 | case PORT_SWITCH_ID_6131: | ||
467 | return true; | ||
468 | } | ||
469 | return false; | ||
470 | } | 434 | } |
471 | 435 | ||
472 | static bool mv88e6xxx_6320_family(struct dsa_switch *ds) | 436 | static bool mv88e6xxx_6320_family(struct dsa_switch *ds) |
473 | { | 437 | { |
474 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); | 438 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); |
475 | 439 | ||
476 | switch (ps->id) { | 440 | return ps->info->family == MV88E6XXX_FAMILY_6320; |
477 | case PORT_SWITCH_ID_6320: | ||
478 | case PORT_SWITCH_ID_6321: | ||
479 | return true; | ||
480 | } | ||
481 | return false; | ||
482 | } | 441 | } |
483 | 442 | ||
484 | static bool mv88e6xxx_6351_family(struct dsa_switch *ds) | 443 | static bool mv88e6xxx_6351_family(struct dsa_switch *ds) |
485 | { | 444 | { |
486 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); | 445 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); |
487 | 446 | ||
488 | switch (ps->id) { | 447 | return ps->info->family == MV88E6XXX_FAMILY_6351; |
489 | case PORT_SWITCH_ID_6171: | ||
490 | case PORT_SWITCH_ID_6175: | ||
491 | case PORT_SWITCH_ID_6350: | ||
492 | case PORT_SWITCH_ID_6351: | ||
493 | return true; | ||
494 | } | ||
495 | return false; | ||
496 | } | 448 | } |
497 | 449 | ||
498 | static bool mv88e6xxx_6352_family(struct dsa_switch *ds) | 450 | static bool mv88e6xxx_6352_family(struct dsa_switch *ds) |
499 | { | 451 | { |
500 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); | 452 | struct mv88e6xxx_priv_state *ps = ds_to_priv(ds); |
501 | 453 | ||
502 | switch (ps->id) { | 454 | return ps->info->family == MV88E6XXX_FAMILY_6352; |
503 | case PORT_SWITCH_ID_6172: | ||
504 | case PORT_SWITCH_ID_6176: | ||
505 | case PORT_SWITCH_ID_6240: | ||
506 | case PORT_SWITCH_ID_6352: | ||
507 | return true; | ||
508 | } | ||
509 | return false; | ||
510 | } | 455 | } |
511 | 456 | ||
512 | static unsigned int mv88e6xxx_num_databases(struct dsa_switch *ds) | 457 | static unsigned int mv88e6xxx_num_databases(struct dsa_switch *ds) |
diff --git a/drivers/net/dsa/mv88e6xxx.h b/drivers/net/dsa/mv88e6xxx.h index b87f574a84de..b4eec9a8c8ff 100644 --- a/drivers/net/dsa/mv88e6xxx.h +++ b/drivers/net/dsa/mv88e6xxx.h | |||
@@ -369,7 +369,20 @@ | |||
369 | 369 | ||
370 | #define MV88E6XXX_N_FID 4096 | 370 | #define MV88E6XXX_N_FID 4096 |
371 | 371 | ||
372 | enum mv88e6xxx_family { | ||
373 | MV88E6XXX_FAMILY_NONE, | ||
374 | MV88E6XXX_FAMILY_6065, /* 6031 6035 6061 6065 */ | ||
375 | MV88E6XXX_FAMILY_6095, /* 6092 6095 */ | ||
376 | MV88E6XXX_FAMILY_6097, /* 6046 6085 6096 6097 */ | ||
377 | MV88E6XXX_FAMILY_6165, /* 6123 6161 6165 */ | ||
378 | MV88E6XXX_FAMILY_6185, /* 6108 6121 6122 6131 6152 6155 6182 6185 */ | ||
379 | MV88E6XXX_FAMILY_6320, /* 6320 6321 */ | ||
380 | MV88E6XXX_FAMILY_6351, /* 6171 6175 6350 6351 */ | ||
381 | MV88E6XXX_FAMILY_6352, /* 6172 6176 6240 6352 */ | ||
382 | }; | ||
383 | |||
372 | struct mv88e6xxx_info { | 384 | struct mv88e6xxx_info { |
385 | enum mv88e6xxx_family family; | ||
373 | u16 prod_num; | 386 | u16 prod_num; |
374 | const char *name; | 387 | const char *name; |
375 | }; | 388 | }; |