[U-Boot] [RFC] Support for SGMII 2500

Bhaskar Upadhaya bhaskar.upadhaya at nxp.com
Tue Nov 28 07:27:17 UTC 2017


+ Anji, Calvin, Prabhakar, Poonam.

-----Original Message-----
From: Madalin-cristian Bucur 
Sent: Tuesday, November 28, 2017 12:56 PM
To: Andrew Lunn <andrew at lunn.ch>; f.fainelli at gmail.com; netdev at vger.kernel.org
Cc: Bhaskar Upadhaya <bhaskar.upadhaya at nxp.com>; Shengzhou Liu <shengzhou.liu at nxp.com>; York Sun <york.sun at nxp.com>; u-boot at lists.denx.de
Subject: [RFC] Support for SGMII 2500

Hi,

There is a disconnect between the SGMII 2500 support in u-boot and Linux.
Bhaskar is trying to add support for a SGMII interface working at 2.5Gbps by using the PHY connection type "sgmii-2500" in the device tree:

	phy-connection-type = "sgmii-2500";

This is supported by u-boot, in include/phy.h:

	typedef enum {
	        PHY_INTERFACE_MODE_MII,
	        PHY_INTERFACE_MODE_GMII,
	        PHY_INTERFACE_MODE_SGMII,
	        PHY_INTERFACE_MODE_SGMII_2500,
	...

	static const char *phy_interface_strings[] = {
	        [PHY_INTERFACE_MODE_MII]                = "mii",
	        [PHY_INTERFACE_MODE_GMII]               = "gmii",
	        [PHY_INTERFACE_MODE_SGMII]              = "sgmii",
	        [PHY_INTERFACE_MODE_SGMII_2500]         = "sgmii-2500",
	...

since this commit:

	commit c35f8693942d8284c635592f263a0fe11abe1d1d	
	Author: Shengzhou Liu <Shengzhou.Liu at freescale.com>
	Date:   Thu Oct 23 17:20:57 2014 +0800

	    net/fm: add 2.5G SGMII support

	    As auto-negotiation is not supported for 2.5G SGMII, we need
	    to add a new type PHY_INTERFACE_MODE_SGMII_2500 to differentiate
	    SGMII-1G and SGMII-2.5G with different setting for auto-negotiation.

	    Signed-off-by: Shaohui Xie <Shaohui.Xie at freescale.com>
	    Signed-off-by: Shengzhou Liu <Shengzhou.Liu at freescale.com>
	    Reviewed-by: York Sun <yorksun at freescale.com>

In the Linux kernel we do not have a separate define for SGMII_2500, should we add something like the change below?

Thanks,
Madalin

---
diff --git a/include/linux/phy.h b/include/linux/phy.h index dc82a07..086f7a3 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -68,6 +68,7 @@ typedef enum {
	PHY_INTERFACE_MODE_MII,
	PHY_INTERFACE_MODE_GMII,
	PHY_INTERFACE_MODE_SGMII,
+	PHY_INTERFACE_MODE_SGMII_2500,
	PHY_INTERFACE_MODE_TBI,
	PHY_INTERFACE_MODE_REVMII,
	PHY_INTERFACE_MODE_RMII,
@@ -123,6 +124,8 @@ static inline const char *phy_modes(phy_interface_t interface)
		return "gmii";
	case PHY_INTERFACE_MODE_SGMII:
		return "sgmii";
+	case PHY_INTERFACE_MODE_SGMII_2500:
+		return "sgmii-2500";
	case PHY_INTERFACE_MODE_TBI:
		return "tbi";
	case PHY_INTERFACE_MODE_REVMII:


More information about the U-Boot mailing list