Netdev List
 help / color / mirror / Atom feed
* [PATCH net-next v3 0/3] mv88e6xxx: SERDES on mv88e6321
@ 2026-05-28 21:03 Fidan Aliyeva
  2026-05-28 21:03 ` [PATCH net-next v3 1/3] mv88e6xxx: Add mv88e6352_serdes_get_lane Fidan Aliyeva
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Fidan Aliyeva @ 2026-05-28 21:03 UTC (permalink / raw)
  To: andrew, olteanv, davem, edumazet, kuba, pabeni, marek.behun
  Cc: netdev, linux-kernel, fidan.aliyeva.ext

This patch series add code support to be able to use SERDES feature of
mv88e6321 version of Marvel mv88e6xxx series. mv88e6321 has 2 ports to
support high speed SERDES but the support is lacking in the driver.

mv88e6321 version has a similar architecture to mv88e6352 version making it
possible to reuse its pcs functions. That's why the patch series consist of
2 parts:

1. Refactor the serdes functions and pcs_init of mv88e6352 to be more
generic (patches 1-2).
2. Add the SERDES support for mv88e6321 reusing 6352's pcs functions

The final code has been tested on mv88e6321 ethernet device directly by ip
ping tests, performance tests and also verifying the switch's expected
register values.

Referred document: 88E6321/88E6320 Functional Specification

---
Changes in v3:
  - After 'Cache scratch config3 of 6352' series, make all the serdes
  related functions of 6352 in serdes.c generic and make 6321 reuse them.

v2 link:
https://lore.kernel.org/netdev/20260507200109.3726627-1-fidan.aliyeva.ext@ericsson.com/

Above mentioned series:
https://lore.kernel.org/netdev/20260521202924.727929-1-fidan.aliyeva.ext@ericsson.com/

Changes in v2:
  - Removed 6321-specific pcs_init and made 6352's pcs_init more generic
  as suggested by Andrew Lunn
  - Added the correct mailing list

---
Fidan Aliyeva (3):
  mv88e6xxx: Add mv88e6352_serdes_get_lane
  mv88e6xxx: Refactor 6352's serdes functions
  mv88e6xxx: Add SERDES Support for mv88e6321

 drivers/net/dsa/mv88e6xxx/chip.c     |  8 +++
 drivers/net/dsa/mv88e6xxx/pcs-6352.c | 10 ++--
 drivers/net/dsa/mv88e6xxx/serdes.c   | 82 +++++++++++++++++++---------
 drivers/net/dsa/mv88e6xxx/serdes.h   |  4 ++
 4 files changed, 74 insertions(+), 30 deletions(-)

--
2.36.0


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH net-next v3 1/3] mv88e6xxx: Add mv88e6352_serdes_get_lane
  2026-05-28 21:03 [PATCH net-next v3 0/3] mv88e6xxx: SERDES on mv88e6321 Fidan Aliyeva
@ 2026-05-28 21:03 ` Fidan Aliyeva
  2026-05-28 21:26   ` Andrew Lunn
  2026-05-28 21:03 ` [PATCH net-next v3 2/3] mv88e6xxx: Refactor 6352's serdes functions Fidan Aliyeva
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 9+ messages in thread
From: Fidan Aliyeva @ 2026-05-28 21:03 UTC (permalink / raw)
  To: andrew, olteanv, davem, edumazet, kuba, pabeni, marek.behun
  Cc: netdev, linux-kernel, fidan.aliyeva.ext, Thomas Eckerman

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>
---
 drivers/net/dsa/mv88e6xxx/chip.c   |  4 ++++
 drivers/net/dsa/mv88e6xxx/serdes.c | 11 +++++++++++
 drivers/net/dsa/mv88e6xxx/serdes.h |  1 +
 3 files changed, 16 insertions(+)

diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 63cdcce3d8c7..30c8f6e1b367 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -4673,6 +4673,7 @@ static const struct mv88e6xxx_ops mv88e6172_ops = {
 	.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
 	.stu_getnext = mv88e6352_g1_stu_getnext,
 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
+	.serdes_get_lane = mv88e6352_serdes_get_lane,
 	.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6352_serdes_get_regs,
 	.gpio_ops = &mv88e6352_gpio_ops,
@@ -4776,6 +4777,7 @@ static const struct mv88e6xxx_ops mv88e6176_ops = {
 	.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
 	.stu_getnext = mv88e6352_g1_stu_getnext,
 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
+	.serdes_get_lane = mv88e6352_serdes_get_lane,
 	.serdes_irq_mapping = mv88e6352_serdes_irq_mapping,
 	.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6352_serdes_get_regs,
@@ -5051,6 +5053,7 @@ static const struct mv88e6xxx_ops mv88e6240_ops = {
 	.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
 	.stu_getnext = mv88e6352_g1_stu_getnext,
 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
+	.serdes_get_lane = mv88e6352_serdes_get_lane,
 	.serdes_irq_mapping = mv88e6352_serdes_irq_mapping,
 	.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6352_serdes_get_regs,
@@ -5486,6 +5489,7 @@ static const struct mv88e6xxx_ops mv88e6352_ops = {
 	.gpio_ops = &mv88e6352_gpio_ops,
 	.avb_ops = &mv88e6352_avb_ops,
 	.ptp_ops = &mv88e6352_ptp_ops,
+	.serdes_get_lane = mv88e6352_serdes_get_lane,
 	.serdes_get_sset_count = mv88e6352_serdes_get_sset_count,
 	.serdes_get_strings = mv88e6352_serdes_get_strings,
 	.serdes_get_stats = mv88e6352_serdes_get_stats,
diff --git a/drivers/net/dsa/mv88e6xxx/serdes.c b/drivers/net/dsa/mv88e6xxx/serdes.c
index d3d3c121a32d..a23eb3d50b6e 100644
--- a/drivers/net/dsa/mv88e6xxx/serdes.c
+++ b/drivers/net/dsa/mv88e6xxx/serdes.c
@@ -102,6 +102,17 @@ int mv88e6xxx_pcs_decode_state(struct device *dev, u16 bmsr, u16 lpa,
 	return 0;
 }

+int mv88e6352_serdes_get_lane(struct mv88e6xxx_chip *chip, int port)
+{
+	int has_serdes;
+
+	has_serdes = mv88e6352_g2_scratch_port_has_serdes(chip, port);
+	if (has_serdes == 0)
+		return -ENODEV;
+
+	return MV88E6352_ADDR_SERDES;
+}
+
 struct mv88e6352_serdes_hw_stat {
 	char string[ETH_GSTRING_LEN];
 	int sizeof_stat;
diff --git a/drivers/net/dsa/mv88e6xxx/serdes.h b/drivers/net/dsa/mv88e6xxx/serdes.h
index 17a3e85fabaa..21e050b328cc 100644
--- a/drivers/net/dsa/mv88e6xxx/serdes.h
+++ b/drivers/net/dsa/mv88e6xxx/serdes.h
@@ -115,6 +115,7 @@ int mv88e6xxx_pcs_decode_state(struct device *dev, u16 bmsr, u16 lpa,
 			       u16 status, struct phylink_link_state *state);

 int mv88e6341_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
+int mv88e6352_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
 int mv88e6390_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
 int mv88e6390x_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
 int mv88e6393x_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
--
2.36.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH net-next v3 2/3] mv88e6xxx: Refactor 6352's serdes functions
  2026-05-28 21:03 [PATCH net-next v3 0/3] mv88e6xxx: SERDES on mv88e6321 Fidan Aliyeva
  2026-05-28 21:03 ` [PATCH net-next v3 1/3] mv88e6xxx: Add mv88e6352_serdes_get_lane Fidan Aliyeva
@ 2026-05-28 21:03 ` Fidan Aliyeva
  2026-05-28 21:27   ` Andrew Lunn
  2026-06-02  2:13   ` Jakub Kicinski
  2026-05-28 21:03 ` [PATCH net-next v3 3/3] mv88e6xxx: Add SERDES Support for mv88e6321 Fidan Aliyeva
  2026-06-02  2:20 ` [PATCH net-next v3 0/3] mv88e6xxx: SERDES on mv88e6321 patchwork-bot+netdevbpf
  3 siblings, 2 replies; 9+ messages in thread
From: Fidan Aliyeva @ 2026-05-28 21:03 UTC (permalink / raw)
  To: andrew, olteanv, davem, edumazet, kuba, pabeni, marek.behun
  Cc: netdev, linux-kernel, fidan.aliyeva.ext, Thomas Eckerman

Changes:
1. Replace serdes check by mv88e6352_g2_scratch_port_has_serdes in
mv88e6352_pcs_init function by mv88e6xxx_serdes_get_lane function making it
more generic.
2. Replace serdes checks in mv88e6352_serdes_get_* functions with
mv88e6xxx_serdes_get_lane making them more generic.
3. Add lane argument to mv88e6352_serdes_read so it can be reused later for
6321.

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>
---
 drivers/net/dsa/mv88e6xxx/pcs-6352.c | 10 +++---
 drivers/net/dsa/mv88e6xxx/serdes.c   | 53 +++++++++++++++-------------
 2 files changed, 33 insertions(+), 30 deletions(-)

diff --git a/drivers/net/dsa/mv88e6xxx/pcs-6352.c b/drivers/net/dsa/mv88e6xxx/pcs-6352.c
index 308655d72d52..4228ae5bb9db 100644
--- a/drivers/net/dsa/mv88e6xxx/pcs-6352.c
+++ b/drivers/net/dsa/mv88e6xxx/pcs-6352.c
@@ -324,17 +324,17 @@ static int mv88e6352_pcs_init(struct mv88e6xxx_chip *chip, int port)
 	struct mii_bus *bus;
 	struct device *dev;
 	unsigned int irq;
-	int err;
+	int lane, err;

-	err = mv88e6352_g2_scratch_port_has_serdes(chip, port);
-	if (err <= 0)
-		return err;
+	lane = mv88e6xxx_serdes_get_lane(chip, port);
+	if (lane < 0)
+		return 0;

 	irq = mv88e6xxx_serdes_irq_mapping(chip, port);
 	bus = mv88e6xxx_default_mdio_bus(chip);
 	dev = chip->dev;

-	mpcs = marvell_c22_pcs_alloc(dev, bus, MV88E6352_ADDR_SERDES);
+	mpcs = marvell_c22_pcs_alloc(dev, bus, lane);
 	if (!mpcs)
 		return -ENOMEM;

diff --git a/drivers/net/dsa/mv88e6xxx/serdes.c b/drivers/net/dsa/mv88e6xxx/serdes.c
index a23eb3d50b6e..48db9932b989 100644
--- a/drivers/net/dsa/mv88e6xxx/serdes.c
+++ b/drivers/net/dsa/mv88e6xxx/serdes.c
@@ -17,10 +17,10 @@
 #include "port.h"
 #include "serdes.h"

-static int mv88e6352_serdes_read(struct mv88e6xxx_chip *chip, int reg,
-				 u16 *val)
+static int mv88e6352_serdes_read(struct mv88e6xxx_chip *chip, int lane,
+				 int reg, u16 *val)
 {
-	return mv88e6xxx_phy_page_read(chip, MV88E6352_ADDR_SERDES,
+	return mv88e6xxx_phy_page_read(chip, lane,
 				       MV88E6352_SERDES_PAGE_FIBER,
 				       reg, val);
 }
@@ -126,11 +126,11 @@ static struct mv88e6352_serdes_hw_stat mv88e6352_serdes_hw_stats[] = {

 int mv88e6352_serdes_get_sset_count(struct mv88e6xxx_chip *chip, int port)
 {
-	int err;
+	int lane = -ENODEV;

-	err = mv88e6352_g2_scratch_port_has_serdes(chip, port);
-	if (err <= 0)
-		return err;
+	lane = mv88e6xxx_serdes_get_lane(chip, port);
+	if (lane < 0)
+		return 0;

 	return ARRAY_SIZE(mv88e6352_serdes_hw_stats);
 }
@@ -139,11 +139,12 @@ int mv88e6352_serdes_get_strings(struct mv88e6xxx_chip *chip, int port,
 				 uint8_t **data)
 {
 	struct mv88e6352_serdes_hw_stat *stat;
-	int err, i;
+	int lane = -ENODEV;
+	int i;

-	err = mv88e6352_g2_scratch_port_has_serdes(chip, port);
-	if (err <= 0)
-		return err;
+	lane = mv88e6xxx_serdes_get_lane(chip, port);
+	if (lane < 0)
+		return 0;

 	for (i = 0; i < ARRAY_SIZE(mv88e6352_serdes_hw_stats); i++) {
 		stat = &mv88e6352_serdes_hw_stats[i];
@@ -152,14 +153,14 @@ int mv88e6352_serdes_get_strings(struct mv88e6xxx_chip *chip, int port,
 	return ARRAY_SIZE(mv88e6352_serdes_hw_stats);
 }

-static uint64_t mv88e6352_serdes_get_stat(struct mv88e6xxx_chip *chip,
+static uint64_t mv88e6352_serdes_get_stat(struct mv88e6xxx_chip *chip, int lane,
 					  struct mv88e6352_serdes_hw_stat *stat)
 {
 	u64 val = 0;
 	u16 reg;
 	int err;

-	err = mv88e6352_serdes_read(chip, stat->reg, &reg);
+	err = mv88e6352_serdes_read(chip, lane, stat->reg, &reg);
 	if (err) {
 		dev_err(chip->dev, "failed to read statistic\n");
 		return 0;
@@ -168,7 +169,7 @@ static uint64_t mv88e6352_serdes_get_stat(struct mv88e6xxx_chip *chip,
 	val = reg;

 	if (stat->sizeof_stat == 32) {
-		err = mv88e6352_serdes_read(chip, stat->reg + 1, &reg);
+		err = mv88e6352_serdes_read(chip, lane, stat->reg + 1, &reg);
 		if (err) {
 			dev_err(chip->dev, "failed to read statistic\n");
 			return 0;
@@ -184,11 +185,12 @@ size_t mv88e6352_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
 {
 	struct mv88e6xxx_port *mv88e6xxx_port = &chip->ports[port];
 	struct mv88e6352_serdes_hw_stat *stat;
-	int i, err;
+	int lane = -ENODEV;
 	u64 value;
+	int i;

-	err = mv88e6352_g2_scratch_port_has_serdes(chip, port);
-	if (err <= 0)
+	lane = mv88e6xxx_serdes_get_lane(chip, port);
+	if (lane < 0)
 		return 0;

 	BUILD_BUG_ON(ARRAY_SIZE(mv88e6352_serdes_hw_stats) >
@@ -196,7 +198,7 @@ size_t mv88e6352_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,

 	for (i = 0; i < ARRAY_SIZE(mv88e6352_serdes_hw_stats); i++) {
 		stat = &mv88e6352_serdes_hw_stats[i];
-		value = mv88e6352_serdes_get_stat(chip, stat);
+		value = mv88e6352_serdes_get_stat(chip, lane, stat);
 		mv88e6xxx_port->serdes_stats[i] += value;
 		data[i] = mv88e6xxx_port->serdes_stats[i];
 	}
@@ -211,28 +213,29 @@ unsigned int mv88e6352_serdes_irq_mapping(struct mv88e6xxx_chip *chip, int port)

 int mv88e6352_serdes_get_regs_len(struct mv88e6xxx_chip *chip, int port)
 {
-	int err;
+	int lane = -ENODEV;

-	err = mv88e6352_g2_scratch_port_has_serdes(chip, port);
-	if (err <= 0)
-		return err;
+	lane = mv88e6xxx_serdes_get_lane(chip, port);
+	if (lane < 0)
+		return 0;

 	return 32 * sizeof(u16);
 }

 void mv88e6352_serdes_get_regs(struct mv88e6xxx_chip *chip, int port, void *_p)
 {
+	int lane = -ENODEV;
 	u16 *p = _p;
 	u16 reg;
 	int err;
 	int i;

-	err = mv88e6352_g2_scratch_port_has_serdes(chip, port);
-	if (err <= 0)
+	lane = mv88e6xxx_serdes_get_lane(chip, port);
+	if (lane < 0)
 		return;

 	for (i = 0 ; i < 32; i++) {
-		err = mv88e6352_serdes_read(chip, i, &reg);
+		err = mv88e6352_serdes_read(chip, lane, i, &reg);
 		if (!err)
 			p[i] = reg;
 	}
--
2.36.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH net-next v3 3/3] mv88e6xxx: Add SERDES Support for mv88e6321
  2026-05-28 21:03 [PATCH net-next v3 0/3] mv88e6xxx: SERDES on mv88e6321 Fidan Aliyeva
  2026-05-28 21:03 ` [PATCH net-next v3 1/3] mv88e6xxx: Add mv88e6352_serdes_get_lane Fidan Aliyeva
  2026-05-28 21:03 ` [PATCH net-next v3 2/3] mv88e6xxx: Refactor 6352's serdes functions Fidan Aliyeva
@ 2026-05-28 21:03 ` Fidan Aliyeva
  2026-05-28 21:30   ` Andrew Lunn
  2026-06-02  2:20 ` [PATCH net-next v3 0/3] mv88e6xxx: SERDES on mv88e6321 patchwork-bot+netdevbpf
  3 siblings, 1 reply; 9+ messages in thread
From: Fidan Aliyeva @ 2026-05-28 21:03 UTC (permalink / raw)
  To: andrew, olteanv, davem, edumazet, kuba, pabeni, marek.behun
  Cc: netdev, linux-kernel, fidan.aliyeva.ext, Thomas Eckerman

Add serdes and pcs_ops functions for mv88e6321. In mv88e6321
2 ports support serdes functionality; port 0 and port 1. These ports are
serdes-only ports.

Changes:

1. Add a function support to return the lane address for the port based on
cmode.
2. Reuse mv88e6352's serdes_get_regs* and pcs_init functions for mv88e6321.

Tested on mv88e6321 switch port 0.

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>
---
 drivers/net/dsa/mv88e6xxx/chip.c   |  4 ++++
 drivers/net/dsa/mv88e6xxx/serdes.c | 18 ++++++++++++++++++
 drivers/net/dsa/mv88e6xxx/serdes.h |  3 +++
 3 files changed, 25 insertions(+)

diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 30c8f6e1b367..6c48a99c3b7f 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -5270,10 +5270,14 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
 	.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
 	.stu_getnext = mv88e6352_g1_stu_getnext,
 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
+	.serdes_get_lane = mv88e6321_serdes_get_lane,
+	.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
+	.serdes_get_regs = mv88e6352_serdes_get_regs,
 	.gpio_ops = &mv88e6352_gpio_ops,
 	.avb_ops = &mv88e6352_avb_ops,
 	.ptp_ops = &mv88e6352_ptp_ops,
 	.phylink_get_caps = mv88e632x_phylink_get_caps,
+	.pcs_ops = &mv88e6352_pcs_ops,
 };

 static const struct mv88e6xxx_ops mv88e6341_ops = {
diff --git a/drivers/net/dsa/mv88e6xxx/serdes.c b/drivers/net/dsa/mv88e6xxx/serdes.c
index 48db9932b989..4a394d47923e 100644
--- a/drivers/net/dsa/mv88e6xxx/serdes.c
+++ b/drivers/net/dsa/mv88e6xxx/serdes.c
@@ -241,6 +241,24 @@ void mv88e6352_serdes_get_regs(struct mv88e6xxx_chip *chip, int port, void *_p)
 	}
 }

+int mv88e6321_serdes_get_lane(struct mv88e6xxx_chip *chip, int port)
+{
+	int lane = -ENODEV;
+	u8 cmode;
+
+	if (port != 0 && port != 1)
+		return lane;
+
+	cmode = chip->ports[port].cmode;
+
+	if (cmode == MV88E6XXX_PORT_STS_CMODE_100BASEX ||
+	    cmode == MV88E6XXX_PORT_STS_CMODE_1000BASEX ||
+	    cmode == MV88E6XXX_PORT_STS_CMODE_SGMII)
+		lane = port + MV88E6321_PORT0_LANE;
+
+	return lane;
+}
+
 int mv88e6341_serdes_get_lane(struct mv88e6xxx_chip *chip, int port)
 {
 	u8 cmode = chip->ports[port].cmode;
diff --git a/drivers/net/dsa/mv88e6xxx/serdes.h b/drivers/net/dsa/mv88e6xxx/serdes.h
index 21e050b328cc..e8f254909d6b 100644
--- a/drivers/net/dsa/mv88e6xxx/serdes.h
+++ b/drivers/net/dsa/mv88e6xxx/serdes.h
@@ -14,6 +14,8 @@

 struct phylink_link_state;

+#define MV88E6321_PORT0_LANE		0x0c
+
 #define MV88E6352_ADDR_SERDES		0x0f
 #define MV88E6352_SERDES_PAGE_FIBER	0x01
 #define MV88E6352_SERDES_IRQ		0x0b
@@ -114,6 +116,7 @@ struct phylink_link_state;
 int mv88e6xxx_pcs_decode_state(struct device *dev, u16 bmsr, u16 lpa,
 			       u16 status, struct phylink_link_state *state);

+int mv88e6321_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
 int mv88e6341_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
 int mv88e6352_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
 int mv88e6390_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
--
2.36.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH net-next v3 1/3] mv88e6xxx: Add mv88e6352_serdes_get_lane
  2026-05-28 21:03 ` [PATCH net-next v3 1/3] mv88e6xxx: Add mv88e6352_serdes_get_lane Fidan Aliyeva
@ 2026-05-28 21:26   ` Andrew Lunn
  0 siblings, 0 replies; 9+ messages in thread
From: Andrew Lunn @ 2026-05-28 21:26 UTC (permalink / raw)
  To: Fidan Aliyeva
  Cc: olteanv, davem, edumazet, kuba, pabeni, marek.behun, netdev,
	linux-kernel, Thomas Eckerman

On Thu, May 28, 2026 at 11:03:08PM +0200, Fidan Aliyeva wrote:
> 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>

    Andrew

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH net-next v3 2/3] mv88e6xxx: Refactor 6352's serdes functions
  2026-05-28 21:03 ` [PATCH net-next v3 2/3] mv88e6xxx: Refactor 6352's serdes functions Fidan Aliyeva
@ 2026-05-28 21:27   ` Andrew Lunn
  2026-06-02  2:13   ` Jakub Kicinski
  1 sibling, 0 replies; 9+ messages in thread
From: Andrew Lunn @ 2026-05-28 21:27 UTC (permalink / raw)
  To: Fidan Aliyeva
  Cc: olteanv, davem, edumazet, kuba, pabeni, marek.behun, netdev,
	linux-kernel, Thomas Eckerman

On Thu, May 28, 2026 at 11:03:09PM +0200, Fidan Aliyeva wrote:
> Changes:
> 1. Replace serdes check by mv88e6352_g2_scratch_port_has_serdes in
> mv88e6352_pcs_init function by mv88e6xxx_serdes_get_lane function making it
> more generic.
> 2. Replace serdes checks in mv88e6352_serdes_get_* functions with
> mv88e6xxx_serdes_get_lane making them more generic.
> 3. Add lane argument to mv88e6352_serdes_read so it can be reused later for
> 6321.
> 
> 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>

    Andrew

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH net-next v3 3/3] mv88e6xxx: Add SERDES Support for mv88e6321
  2026-05-28 21:03 ` [PATCH net-next v3 3/3] mv88e6xxx: Add SERDES Support for mv88e6321 Fidan Aliyeva
@ 2026-05-28 21:30   ` Andrew Lunn
  0 siblings, 0 replies; 9+ messages in thread
From: Andrew Lunn @ 2026-05-28 21:30 UTC (permalink / raw)
  To: Fidan Aliyeva
  Cc: olteanv, davem, edumazet, kuba, pabeni, marek.behun, netdev,
	linux-kernel, Thomas Eckerman

On Thu, May 28, 2026 at 11:03:10PM +0200, Fidan Aliyeva wrote:
> Add serdes and pcs_ops functions for mv88e6321. In mv88e6321
> 2 ports support serdes functionality; port 0 and port 1. These ports are
> serdes-only ports.
> 
> Changes:
> 
> 1. Add a function support to return the lane address for the port based on
> cmode.
> 2. Reuse mv88e6352's serdes_get_regs* and pcs_init functions for mv88e6321.
> 
> Tested on mv88e6321 switch port 0.
> 
> 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>

    Andrew

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH net-next v3 2/3] mv88e6xxx: Refactor 6352's serdes functions
  2026-05-28 21:03 ` [PATCH net-next v3 2/3] mv88e6xxx: Refactor 6352's serdes functions Fidan Aliyeva
  2026-05-28 21:27   ` Andrew Lunn
@ 2026-06-02  2:13   ` Jakub Kicinski
  1 sibling, 0 replies; 9+ messages in thread
From: Jakub Kicinski @ 2026-06-02  2:13 UTC (permalink / raw)
  To: Fidan Aliyeva
  Cc: andrew, olteanv, davem, edumazet, pabeni, marek.behun, netdev,
	linux-kernel, Thomas Eckerman

On Thu, 28 May 2026 23:03:09 +0200 Fidan Aliyeva wrote:
> 1. Replace serdes check by mv88e6352_g2_scratch_port_has_serdes in
> mv88e6352_pcs_init function by mv88e6xxx_serdes_get_lane function making it
> more generic.
> 2. Replace serdes checks in mv88e6352_serdes_get_* functions with
> mv88e6xxx_serdes_get_lane making them more generic.
> 3. Add lane argument to mv88e6352_serdes_read so it can be reused later for
> 6321.

For the future -- if you're making a list in the commit message your
should rethink whether the commit should be split into multiple
individual changes..

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH net-next v3 0/3] mv88e6xxx: SERDES on mv88e6321
  2026-05-28 21:03 [PATCH net-next v3 0/3] mv88e6xxx: SERDES on mv88e6321 Fidan Aliyeva
                   ` (2 preceding siblings ...)
  2026-05-28 21:03 ` [PATCH net-next v3 3/3] mv88e6xxx: Add SERDES Support for mv88e6321 Fidan Aliyeva
@ 2026-06-02  2:20 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 9+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-06-02  2:20 UTC (permalink / raw)
  To: Fidan Aliyeva
  Cc: andrew, olteanv, davem, edumazet, kuba, pabeni, marek.behun,
	netdev, linux-kernel

Hello:

This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Thu, 28 May 2026 23:03:07 +0200 you wrote:
> This patch series add code support to be able to use SERDES feature of
> mv88e6321 version of Marvel mv88e6xxx series. mv88e6321 has 2 ports to
> support high speed SERDES but the support is lacking in the driver.
> 
> mv88e6321 version has a similar architecture to mv88e6352 version making it
> possible to reuse its pcs functions. That's why the patch series consist of
> 2 parts:
> 
> [...]

Here is the summary with links:
  - [net-next,v3,1/3] mv88e6xxx: Add mv88e6352_serdes_get_lane
    https://git.kernel.org/netdev/net-next/c/1a79978dd271
  - [net-next,v3,2/3] mv88e6xxx: Refactor 6352's serdes functions
    https://git.kernel.org/netdev/net-next/c/348a46c93e53
  - [net-next,v3,3/3] mv88e6xxx: Add SERDES Support for mv88e6321
    https://git.kernel.org/netdev/net-next/c/f456c9b936b6

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-06-02  2:20 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-28 21:03 [PATCH net-next v3 0/3] mv88e6xxx: SERDES on mv88e6321 Fidan Aliyeva
2026-05-28 21:03 ` [PATCH net-next v3 1/3] mv88e6xxx: Add mv88e6352_serdes_get_lane Fidan Aliyeva
2026-05-28 21:26   ` Andrew Lunn
2026-05-28 21:03 ` [PATCH net-next v3 2/3] mv88e6xxx: Refactor 6352's serdes functions Fidan Aliyeva
2026-05-28 21:27   ` Andrew Lunn
2026-06-02  2:13   ` Jakub Kicinski
2026-05-28 21:03 ` [PATCH net-next v3 3/3] mv88e6xxx: Add SERDES Support for mv88e6321 Fidan Aliyeva
2026-05-28 21:30   ` Andrew Lunn
2026-06-02  2:20 ` [PATCH net-next v3 0/3] mv88e6xxx: SERDES on mv88e6321 patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox