All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v2] Aquantia: Print information about system interface and firmware version
@ 2018-11-06 12:16 Valentin-catalin Neacsu
  2019-01-22 21:51 ` Joe Hershberger
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Valentin-catalin Neacsu @ 2018-11-06 12:16 UTC (permalink / raw)
  To: u-boot

Print information about Aquantia firmware loaded on the phy.

Signed-off-by: Valentin Catalin Neacsu <valentin-catalin.neacsu@nxp.com>
---
V2:
 - Fix typo in title. (Clement Peron)

 drivers/net/phy/aquantia.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/net/phy/aquantia.c b/drivers/net/phy/aquantia.c
index 553069f3dc..2609664c69 100644
--- a/drivers/net/phy/aquantia.c
+++ b/drivers/net/phy/aquantia.c
@@ -22,6 +22,11 @@
 
 #define AQUANTIA_SYSTEM_INTERFACE_SR     0xe812
 #define AQUANTIA_VENDOR_PROVISIONING_REG 0xC441
+#define AQUANTIA_FIRMWARE_ID		 0x20
+#define AQUANTIA_RESERVED_STATUS	 0xc885
+#define AQUANTIA_FIRMWARE_MAJOR_MASK	 0xff00
+#define AQUANTIA_FIRMWARE_MINOR_MASK	 0xff
+#define AQUANTIA_FIRMWARE_BUILD_MASK	 0xf0
 
 #define AQUANTIA_USX_AUTONEG_CONTROL_ENA 0x0008
 #define AQUANTIA_SI_IN_USE_MASK          0x0078
@@ -30,6 +35,7 @@
 int aquantia_config(struct phy_device *phydev)
 {
 	u32 val = phy_read(phydev, MDIO_MMD_PMAPMD, MII_BMCR);
+	u32 reg_val1 = 0;
 
 	if (phydev->interface == PHY_INTERFACE_MODE_SGMII) {
 		/* 1000BASE-T mode */
@@ -56,6 +62,11 @@ int aquantia_config(struct phy_device *phydev)
 			phy_write(phydev, MDIO_MMD_PHYXS,
 				  AQUANTIA_VENDOR_PROVISIONING_REG,
 				  AQUANTIA_USX_AUTONEG_CONTROL_ENA);
+			printf("%s: system interface USXGMII\n",
+			       phydev->dev->name);
+		} else {
+			printf("%s: system interface XFI\n",
+			       phydev->dev->name);
 		}
 
 	} else if (phydev->interface == PHY_INTERFACE_MODE_SGMII_2500) {
@@ -73,6 +84,16 @@ int aquantia_config(struct phy_device *phydev)
 		val = (val & ~AQUNTIA_SPEED_MSB_MASK) | AQUNTIA_SPEED_LSB_MASK;
 		phy_write(phydev, MDIO_MMD_PMAPMD, MII_BMCR, val);
 	}
+
+	val = phy_read(phydev, MDIO_MMD_VEND1, AQUANTIA_RESERVED_STATUS);
+	reg_val1 = phy_read(phydev, MDIO_MMD_VEND1, AQUANTIA_FIRMWARE_ID);
+
+	printf("%s: %s Firmware Version %x.%x.%x\n", phydev->dev->name,
+	       phydev->drv->name,
+	       (reg_val1 & AQUANTIA_FIRMWARE_MAJOR_MASK) >> 8,
+	       reg_val1 & AQUANTIA_FIRMWARE_MINOR_MASK,
+	       (val & AQUANTIA_FIRMWARE_BUILD_MASK) >> 4);
+
 	return 0;
 }
 
-- 
2.17.1

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

end of thread, other threads:[~2019-01-24 17:39 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-06 12:16 [U-Boot] [PATCH v2] Aquantia: Print information about system interface and firmware version Valentin-catalin Neacsu
2019-01-22 21:51 ` Joe Hershberger
2019-01-22 23:14 ` Joe Hershberger
2019-01-22 23:29   ` Joe Hershberger
2019-01-24 17:39 ` [U-Boot] net: phy: aquantia: Print information on config Joe Hershberger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.