Skip to content

Commit e5b732a

Browse files
Russell King (Oracle)davem330
authored andcommitted
net: dsa: mv88e6xxx: convert 88e639x to phylink_pcs
Convert the 88E6390, 88E6390X, and 88E6393X family of switches to use the phylink_pcs infrastructure. Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 8576455 commit e5b732a

File tree

5 files changed

+914
-881
lines changed

5 files changed

+914
-881
lines changed

drivers/net/dsa/mv88e6xxx/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ mv88e6xxx-objs += global2_scratch.o
1111
mv88e6xxx-$(CONFIG_NET_DSA_MV88E6XXX_PTP) += hwtstamp.o
1212
mv88e6xxx-objs += pcs-6185.o
1313
mv88e6xxx-objs += pcs-6352.o
14+
mv88e6xxx-objs += pcs-639x.o
1415
mv88e6xxx-objs += phy.o
1516
mv88e6xxx-objs += port.o
1617
mv88e6xxx-objs += port_hidden.o

drivers/net/dsa/mv88e6xxx/chip.c

Lines changed: 9 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -4417,23 +4417,16 @@ static const struct mv88e6xxx_ops mv88e6141_ops = {
44174417
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
44184418
.stu_getnext = mv88e6352_g1_stu_getnext,
44194419
.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
4420-
.serdes_power = mv88e6390_serdes_power,
44214420
.serdes_get_lane = mv88e6341_serdes_get_lane,
4422-
/* Check status register pause & lpa register */
4423-
.serdes_pcs_get_state = mv88e6390_serdes_pcs_get_state,
4424-
.serdes_pcs_config = mv88e6390_serdes_pcs_config,
4425-
.serdes_pcs_an_restart = mv88e6390_serdes_pcs_an_restart,
4426-
.serdes_pcs_link_up = mv88e6390_serdes_pcs_link_up,
44274421
.serdes_irq_mapping = mv88e6390_serdes_irq_mapping,
4428-
.serdes_irq_enable = mv88e6390_serdes_irq_enable,
4429-
.serdes_irq_status = mv88e6390_serdes_irq_status,
44304422
.gpio_ops = &mv88e6352_gpio_ops,
44314423
.serdes_get_sset_count = mv88e6390_serdes_get_sset_count,
44324424
.serdes_get_strings = mv88e6390_serdes_get_strings,
44334425
.serdes_get_stats = mv88e6390_serdes_get_stats,
44344426
.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
44354427
.serdes_get_regs = mv88e6390_serdes_get_regs,
44364428
.phylink_get_caps = mv88e6341_phylink_get_caps,
4429+
.pcs_ops = &mv88e6390_pcs_ops,
44374430
};
44384431

44394432
static const struct mv88e6xxx_ops mv88e6161_ops = {
@@ -4808,22 +4801,15 @@ static const struct mv88e6xxx_ops mv88e6190_ops = {
48084801
.vtu_loadpurge = mv88e6390_g1_vtu_loadpurge,
48094802
.stu_getnext = mv88e6390_g1_stu_getnext,
48104803
.stu_loadpurge = mv88e6390_g1_stu_loadpurge,
4811-
.serdes_power = mv88e6390_serdes_power,
48124804
.serdes_get_lane = mv88e6390_serdes_get_lane,
4813-
/* Check status register pause & lpa register */
4814-
.serdes_pcs_get_state = mv88e6390_serdes_pcs_get_state,
4815-
.serdes_pcs_config = mv88e6390_serdes_pcs_config,
4816-
.serdes_pcs_an_restart = mv88e6390_serdes_pcs_an_restart,
4817-
.serdes_pcs_link_up = mv88e6390_serdes_pcs_link_up,
48184805
.serdes_irq_mapping = mv88e6390_serdes_irq_mapping,
4819-
.serdes_irq_enable = mv88e6390_serdes_irq_enable,
4820-
.serdes_irq_status = mv88e6390_serdes_irq_status,
48214806
.serdes_get_strings = mv88e6390_serdes_get_strings,
48224807
.serdes_get_stats = mv88e6390_serdes_get_stats,
48234808
.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
48244809
.serdes_get_regs = mv88e6390_serdes_get_regs,
48254810
.gpio_ops = &mv88e6352_gpio_ops,
48264811
.phylink_get_caps = mv88e6390_phylink_get_caps,
4812+
.pcs_ops = &mv88e6390_pcs_ops,
48274813
};
48284814

48294815
static const struct mv88e6xxx_ops mv88e6190x_ops = {
@@ -4873,22 +4859,15 @@ static const struct mv88e6xxx_ops mv88e6190x_ops = {
48734859
.vtu_loadpurge = mv88e6390_g1_vtu_loadpurge,
48744860
.stu_getnext = mv88e6390_g1_stu_getnext,
48754861
.stu_loadpurge = mv88e6390_g1_stu_loadpurge,
4876-
.serdes_power = mv88e6390_serdes_power,
48774862
.serdes_get_lane = mv88e6390x_serdes_get_lane,
4878-
/* Check status register pause & lpa register */
4879-
.serdes_pcs_get_state = mv88e6390_serdes_pcs_get_state,
4880-
.serdes_pcs_config = mv88e6390_serdes_pcs_config,
4881-
.serdes_pcs_an_restart = mv88e6390_serdes_pcs_an_restart,
4882-
.serdes_pcs_link_up = mv88e6390_serdes_pcs_link_up,
48834863
.serdes_irq_mapping = mv88e6390_serdes_irq_mapping,
4884-
.serdes_irq_enable = mv88e6390_serdes_irq_enable,
4885-
.serdes_irq_status = mv88e6390_serdes_irq_status,
48864864
.serdes_get_strings = mv88e6390_serdes_get_strings,
48874865
.serdes_get_stats = mv88e6390_serdes_get_stats,
48884866
.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
48894867
.serdes_get_regs = mv88e6390_serdes_get_regs,
48904868
.gpio_ops = &mv88e6352_gpio_ops,
48914869
.phylink_get_caps = mv88e6390x_phylink_get_caps,
4870+
.pcs_ops = &mv88e6390_pcs_ops,
48924871
};
48934872

48944873
static const struct mv88e6xxx_ops mv88e6191_ops = {
@@ -4936,23 +4915,16 @@ static const struct mv88e6xxx_ops mv88e6191_ops = {
49364915
.vtu_loadpurge = mv88e6390_g1_vtu_loadpurge,
49374916
.stu_getnext = mv88e6390_g1_stu_getnext,
49384917
.stu_loadpurge = mv88e6390_g1_stu_loadpurge,
4939-
.serdes_power = mv88e6390_serdes_power,
49404918
.serdes_get_lane = mv88e6390_serdes_get_lane,
4941-
/* Check status register pause & lpa register */
4942-
.serdes_pcs_get_state = mv88e6390_serdes_pcs_get_state,
4943-
.serdes_pcs_config = mv88e6390_serdes_pcs_config,
4944-
.serdes_pcs_an_restart = mv88e6390_serdes_pcs_an_restart,
4945-
.serdes_pcs_link_up = mv88e6390_serdes_pcs_link_up,
49464919
.serdes_irq_mapping = mv88e6390_serdes_irq_mapping,
4947-
.serdes_irq_enable = mv88e6390_serdes_irq_enable,
4948-
.serdes_irq_status = mv88e6390_serdes_irq_status,
49494920
.serdes_get_strings = mv88e6390_serdes_get_strings,
49504921
.serdes_get_stats = mv88e6390_serdes_get_stats,
49514922
.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
49524923
.serdes_get_regs = mv88e6390_serdes_get_regs,
49534924
.avb_ops = &mv88e6390_avb_ops,
49544925
.ptp_ops = &mv88e6352_ptp_ops,
49554926
.phylink_get_caps = mv88e6390_phylink_get_caps,
4927+
.pcs_ops = &mv88e6390_pcs_ops,
49564928
};
49574929

49584930
static const struct mv88e6xxx_ops mv88e6240_ops = {
@@ -5102,16 +5074,8 @@ static const struct mv88e6xxx_ops mv88e6290_ops = {
51025074
.vtu_loadpurge = mv88e6390_g1_vtu_loadpurge,
51035075
.stu_getnext = mv88e6390_g1_stu_getnext,
51045076
.stu_loadpurge = mv88e6390_g1_stu_loadpurge,
5105-
.serdes_power = mv88e6390_serdes_power,
51065077
.serdes_get_lane = mv88e6390_serdes_get_lane,
5107-
/* Check status register pause & lpa register */
5108-
.serdes_pcs_get_state = mv88e6390_serdes_pcs_get_state,
5109-
.serdes_pcs_config = mv88e6390_serdes_pcs_config,
5110-
.serdes_pcs_an_restart = mv88e6390_serdes_pcs_an_restart,
5111-
.serdes_pcs_link_up = mv88e6390_serdes_pcs_link_up,
51125078
.serdes_irq_mapping = mv88e6390_serdes_irq_mapping,
5113-
.serdes_irq_enable = mv88e6390_serdes_irq_enable,
5114-
.serdes_irq_status = mv88e6390_serdes_irq_status,
51155079
.serdes_get_strings = mv88e6390_serdes_get_strings,
51165080
.serdes_get_stats = mv88e6390_serdes_get_stats,
51175081
.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
@@ -5120,6 +5084,7 @@ static const struct mv88e6xxx_ops mv88e6290_ops = {
51205084
.avb_ops = &mv88e6390_avb_ops,
51215085
.ptp_ops = &mv88e6390_ptp_ops,
51225086
.phylink_get_caps = mv88e6390_phylink_get_caps,
5087+
.pcs_ops = &mv88e6390_pcs_ops,
51235088
};
51245089

51255090
static const struct mv88e6xxx_ops mv88e6320_ops = {
@@ -5264,16 +5229,8 @@ static const struct mv88e6xxx_ops mv88e6341_ops = {
52645229
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
52655230
.stu_getnext = mv88e6352_g1_stu_getnext,
52665231
.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
5267-
.serdes_power = mv88e6390_serdes_power,
52685232
.serdes_get_lane = mv88e6341_serdes_get_lane,
5269-
/* Check status register pause & lpa register */
5270-
.serdes_pcs_get_state = mv88e6390_serdes_pcs_get_state,
5271-
.serdes_pcs_config = mv88e6390_serdes_pcs_config,
5272-
.serdes_pcs_an_restart = mv88e6390_serdes_pcs_an_restart,
5273-
.serdes_pcs_link_up = mv88e6390_serdes_pcs_link_up,
52745233
.serdes_irq_mapping = mv88e6390_serdes_irq_mapping,
5275-
.serdes_irq_enable = mv88e6390_serdes_irq_enable,
5276-
.serdes_irq_status = mv88e6390_serdes_irq_status,
52775234
.gpio_ops = &mv88e6352_gpio_ops,
52785235
.avb_ops = &mv88e6390_avb_ops,
52795236
.ptp_ops = &mv88e6352_ptp_ops,
@@ -5283,6 +5240,7 @@ static const struct mv88e6xxx_ops mv88e6341_ops = {
52835240
.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
52845241
.serdes_get_regs = mv88e6390_serdes_get_regs,
52855242
.phylink_get_caps = mv88e6341_phylink_get_caps,
5243+
.pcs_ops = &mv88e6390_pcs_ops,
52865244
};
52875245

52885246
static const struct mv88e6xxx_ops mv88e6350_ops = {
@@ -5488,16 +5446,8 @@ static const struct mv88e6xxx_ops mv88e6390_ops = {
54885446
.vtu_loadpurge = mv88e6390_g1_vtu_loadpurge,
54895447
.stu_getnext = mv88e6390_g1_stu_getnext,
54905448
.stu_loadpurge = mv88e6390_g1_stu_loadpurge,
5491-
.serdes_power = mv88e6390_serdes_power,
54925449
.serdes_get_lane = mv88e6390_serdes_get_lane,
5493-
/* Check status register pause & lpa register */
5494-
.serdes_pcs_get_state = mv88e6390_serdes_pcs_get_state,
5495-
.serdes_pcs_config = mv88e6390_serdes_pcs_config,
5496-
.serdes_pcs_an_restart = mv88e6390_serdes_pcs_an_restart,
5497-
.serdes_pcs_link_up = mv88e6390_serdes_pcs_link_up,
54985450
.serdes_irq_mapping = mv88e6390_serdes_irq_mapping,
5499-
.serdes_irq_enable = mv88e6390_serdes_irq_enable,
5500-
.serdes_irq_status = mv88e6390_serdes_irq_status,
55015451
.gpio_ops = &mv88e6352_gpio_ops,
55025452
.avb_ops = &mv88e6390_avb_ops,
55035453
.ptp_ops = &mv88e6390_ptp_ops,
@@ -5507,6 +5457,7 @@ static const struct mv88e6xxx_ops mv88e6390_ops = {
55075457
.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
55085458
.serdes_get_regs = mv88e6390_serdes_get_regs,
55095459
.phylink_get_caps = mv88e6390_phylink_get_caps,
5460+
.pcs_ops = &mv88e6390_pcs_ops,
55105461
};
55115462

55125463
static const struct mv88e6xxx_ops mv88e6390x_ops = {
@@ -5557,15 +5508,8 @@ static const struct mv88e6xxx_ops mv88e6390x_ops = {
55575508
.vtu_loadpurge = mv88e6390_g1_vtu_loadpurge,
55585509
.stu_getnext = mv88e6390_g1_stu_getnext,
55595510
.stu_loadpurge = mv88e6390_g1_stu_loadpurge,
5560-
.serdes_power = mv88e6390_serdes_power,
55615511
.serdes_get_lane = mv88e6390x_serdes_get_lane,
5562-
.serdes_pcs_get_state = mv88e6390_serdes_pcs_get_state,
5563-
.serdes_pcs_config = mv88e6390_serdes_pcs_config,
5564-
.serdes_pcs_an_restart = mv88e6390_serdes_pcs_an_restart,
5565-
.serdes_pcs_link_up = mv88e6390_serdes_pcs_link_up,
55665512
.serdes_irq_mapping = mv88e6390_serdes_irq_mapping,
5567-
.serdes_irq_enable = mv88e6390_serdes_irq_enable,
5568-
.serdes_irq_status = mv88e6390_serdes_irq_status,
55695513
.serdes_get_sset_count = mv88e6390_serdes_get_sset_count,
55705514
.serdes_get_strings = mv88e6390_serdes_get_strings,
55715515
.serdes_get_stats = mv88e6390_serdes_get_stats,
@@ -5575,11 +5519,11 @@ static const struct mv88e6xxx_ops mv88e6390x_ops = {
55755519
.avb_ops = &mv88e6390_avb_ops,
55765520
.ptp_ops = &mv88e6390_ptp_ops,
55775521
.phylink_get_caps = mv88e6390x_phylink_get_caps,
5522+
.pcs_ops = &mv88e6390_pcs_ops,
55785523
};
55795524

55805525
static const struct mv88e6xxx_ops mv88e6393x_ops = {
55815526
/* MV88E6XXX_FAMILY_6393 */
5582-
.setup_errata = mv88e6393x_serdes_setup_errata,
55835527
.irl_init_all = mv88e6390_g2_irl_init_all,
55845528
.get_eeprom = mv88e6xxx_g2_get_eeprom8,
55855529
.set_eeprom = mv88e6xxx_g2_set_eeprom8,
@@ -5629,20 +5573,14 @@ static const struct mv88e6xxx_ops mv88e6393x_ops = {
56295573
.vtu_loadpurge = mv88e6390_g1_vtu_loadpurge,
56305574
.stu_getnext = mv88e6390_g1_stu_getnext,
56315575
.stu_loadpurge = mv88e6390_g1_stu_loadpurge,
5632-
.serdes_power = mv88e6393x_serdes_power,
56335576
.serdes_get_lane = mv88e6393x_serdes_get_lane,
5634-
.serdes_pcs_get_state = mv88e6393x_serdes_pcs_get_state,
5635-
.serdes_pcs_config = mv88e6390_serdes_pcs_config,
5636-
.serdes_pcs_an_restart = mv88e6390_serdes_pcs_an_restart,
5637-
.serdes_pcs_link_up = mv88e6390_serdes_pcs_link_up,
56385577
.serdes_irq_mapping = mv88e6390_serdes_irq_mapping,
5639-
.serdes_irq_enable = mv88e6393x_serdes_irq_enable,
5640-
.serdes_irq_status = mv88e6393x_serdes_irq_status,
56415578
/* TODO: serdes stats */
56425579
.gpio_ops = &mv88e6352_gpio_ops,
56435580
.avb_ops = &mv88e6390_avb_ops,
56445581
.ptp_ops = &mv88e6352_ptp_ops,
56455582
.phylink_get_caps = mv88e6393x_phylink_get_caps,
5583+
.pcs_ops = &mv88e6393x_pcs_ops,
56465584
};
56475585

56485586
static const struct mv88e6xxx_info mv88e6xxx_table[] = {

0 commit comments

Comments
 (0)