aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVivien Didelot <vivien.didelot@savoirfairelinux.com>2016-04-17 13:24:00 -0400
committerDavid S. Miller <davem@davemloft.net>2016-04-17 18:54:15 -0400
commit22356476a86fc569c34cbf209d3a247c01e0ef6d (patch)
tree534a5deb79c017f80251838821987b3731da1559
parentf6271e676b7f62a609f8ee5523a6a8ed47c0f333 (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.c3
-rw-r--r--drivers/net/dsa/mv88e6131.c4
-rw-r--r--drivers/net/dsa/mv88e6171.c4
-rw-r--r--drivers/net/dsa/mv88e6352.c6
-rw-r--r--drivers/net/dsa/mv88e6xxx.c71
-rw-r--r--drivers/net/dsa/mv88e6xxx.h13
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 @@
20static const struct mv88e6xxx_info mv88e6123_table[] = { 20static 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 @@
20static const struct mv88e6xxx_info mv88e6131_table[] = { 20static 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 @@
20static const struct mv88e6xxx_info mv88e6171_table[] = { 20static 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 @@
25static const struct mv88e6xxx_info mv88e6352_table[] = { 25static 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
415static bool mv88e6xxx_6095_family(struct dsa_switch *ds) 408static 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
427static bool mv88e6xxx_6097_family(struct dsa_switch *ds) 415static 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
441static bool mv88e6xxx_6165_family(struct dsa_switch *ds) 422static 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
454static bool mv88e6xxx_6185_family(struct dsa_switch *ds) 429static 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
472static bool mv88e6xxx_6320_family(struct dsa_switch *ds) 436static 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
484static bool mv88e6xxx_6351_family(struct dsa_switch *ds) 443static 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
498static bool mv88e6xxx_6352_family(struct dsa_switch *ds) 450static 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
512static unsigned int mv88e6xxx_num_databases(struct dsa_switch *ds) 457static 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
372enum 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
372struct mv88e6xxx_info { 384struct 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};