Skip to content

Commit 1a79978

Browse files
fidanali16kuba-moo
authored andcommitted
mv88e6xxx: Add mv88e6352_serdes_get_lane
Changes: 1. Add mv88e6352_serdes_get_lane function which checks if the port supports SERDES by calling mv88e6352_g2_scratch_port_has_serdes. Then returns the address of the SERDES lane. 2. Add this function as .serdes_get_lane member to all the chip versions which use mv88e6352_pcs_init. Co-developed-by: Thomas Eckerman <thomas.eckerman.ext@ericsson.com> Signed-off-by: Thomas Eckerman <thomas.eckerman.ext@ericsson.com> Signed-off-by: Fidan Aliyeva <fidan.aliyeva.ext@ericsson.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Link: https://patch.msgid.link/20260528210310.1365858-2-fidan.aliyeva.ext@ericsson.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 046c89c commit 1a79978

3 files changed

Lines changed: 16 additions & 0 deletions

File tree

drivers/net/dsa/mv88e6xxx/chip.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4672,6 +4672,7 @@ static const struct mv88e6xxx_ops mv88e6172_ops = {
46724672
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
46734673
.stu_getnext = mv88e6352_g1_stu_getnext,
46744674
.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
4675+
.serdes_get_lane = mv88e6352_serdes_get_lane,
46754676
.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
46764677
.serdes_get_regs = mv88e6352_serdes_get_regs,
46774678
.gpio_ops = &mv88e6352_gpio_ops,
@@ -4775,6 +4776,7 @@ static const struct mv88e6xxx_ops mv88e6176_ops = {
47754776
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
47764777
.stu_getnext = mv88e6352_g1_stu_getnext,
47774778
.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
4779+
.serdes_get_lane = mv88e6352_serdes_get_lane,
47784780
.serdes_irq_mapping = mv88e6352_serdes_irq_mapping,
47794781
.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
47804782
.serdes_get_regs = mv88e6352_serdes_get_regs,
@@ -5047,6 +5049,7 @@ static const struct mv88e6xxx_ops mv88e6240_ops = {
50475049
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
50485050
.stu_getnext = mv88e6352_g1_stu_getnext,
50495051
.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
5052+
.serdes_get_lane = mv88e6352_serdes_get_lane,
50505053
.serdes_irq_mapping = mv88e6352_serdes_irq_mapping,
50515054
.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
50525055
.serdes_get_regs = mv88e6352_serdes_get_regs,
@@ -5487,6 +5490,7 @@ static const struct mv88e6xxx_ops mv88e6352_ops = {
54875490
.gpio_ops = &mv88e6352_gpio_ops,
54885491
.avb_ops = &mv88e6352_avb_ops,
54895492
.ptp_ops = &mv88e6352_ptp_ops,
5493+
.serdes_get_lane = mv88e6352_serdes_get_lane,
54905494
.serdes_get_sset_count = mv88e6352_serdes_get_sset_count,
54915495
.serdes_get_strings = mv88e6352_serdes_get_strings,
54925496
.serdes_get_stats = mv88e6352_serdes_get_stats,

drivers/net/dsa/mv88e6xxx/serdes.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,17 @@ int mv88e6xxx_pcs_decode_state(struct device *dev, u16 bmsr, u16 lpa,
102102
return 0;
103103
}
104104

105+
int mv88e6352_serdes_get_lane(struct mv88e6xxx_chip *chip, int port)
106+
{
107+
int has_serdes;
108+
109+
has_serdes = mv88e6352_g2_scratch_port_has_serdes(chip, port);
110+
if (has_serdes == 0)
111+
return -ENODEV;
112+
113+
return MV88E6352_ADDR_SERDES;
114+
}
115+
105116
struct mv88e6352_serdes_hw_stat {
106117
char string[ETH_GSTRING_LEN];
107118
int sizeof_stat;

drivers/net/dsa/mv88e6xxx/serdes.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ int mv88e6xxx_pcs_decode_state(struct device *dev, u16 bmsr, u16 lpa,
115115
u16 status, struct phylink_link_state *state);
116116

117117
int mv88e6341_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
118+
int mv88e6352_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
118119
int mv88e6390_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
119120
int mv88e6390x_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
120121
int mv88e6393x_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);

0 commit comments

Comments
 (0)