2017-02-06 10:46:48 +00:00
|
|
|
From: Russell King <rmk+kernel@armlinux.org.uk>
|
|
|
|
Date: Mon, 2 Jan 2017 17:52:18 +0000
|
|
|
|
Subject: [PATCH] net: phy: split out PHY speed and duplex string
|
|
|
|
generation
|
|
|
|
|
|
|
|
Other code would like to make use of this, so make the speed and duplex
|
|
|
|
string generation visible, and place it in a separate file.
|
|
|
|
|
|
|
|
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|
|
|
---
|
|
|
|
|
|
|
|
--- a/drivers/net/phy/phy.c
|
|
|
|
+++ b/drivers/net/phy/phy.c
|
|
|
|
@@ -38,26 +38,6 @@
|
|
|
|
|
|
|
|
#include <asm/irq.h>
|
|
|
|
|
|
|
|
-static const char *phy_speed_to_str(int speed)
|
|
|
|
-{
|
|
|
|
- switch (speed) {
|
|
|
|
- case SPEED_10:
|
|
|
|
- return "10Mbps";
|
|
|
|
- case SPEED_100:
|
|
|
|
- return "100Mbps";
|
|
|
|
- case SPEED_1000:
|
|
|
|
- return "1Gbps";
|
|
|
|
- case SPEED_2500:
|
|
|
|
- return "2.5Gbps";
|
|
|
|
- case SPEED_10000:
|
|
|
|
- return "10Gbps";
|
|
|
|
- case SPEED_UNKNOWN:
|
|
|
|
- return "Unknown";
|
|
|
|
- default:
|
|
|
|
- return "Unsupported (update phy.c)";
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
#define PHY_STATE_STR(_state) \
|
|
|
|
case PHY_##_state: \
|
|
|
|
return __stringify(_state); \
|
|
|
|
@@ -93,7 +73,7 @@ void phy_print_status(struct phy_device
|
|
|
|
netdev_info(phydev->attached_dev,
|
|
|
|
"Link is Up - %s/%s - flow control %s\n",
|
|
|
|
phy_speed_to_str(phydev->speed),
|
|
|
|
- DUPLEX_FULL == phydev->duplex ? "Full" : "Half",
|
|
|
|
+ phy_duplex_to_str(phydev->duplex),
|
|
|
|
phydev->pause ? "rx/tx" : "off");
|
|
|
|
} else {
|
|
|
|
netdev_info(phydev->attached_dev, "Link is Down\n");
|
|
|
|
--- a/drivers/net/phy/phy-core.c
|
|
|
|
+++ b/drivers/net/phy/phy-core.c
|
|
|
|
@@ -9,6 +9,39 @@
|
|
|
|
#include <linux/export.h>
|
|
|
|
#include <linux/phy.h>
|
|
|
|
|
|
|
|
+const char *phy_speed_to_str(int speed)
|
|
|
|
+{
|
|
|
|
+ switch (speed) {
|
|
|
|
+ case SPEED_10:
|
|
|
|
+ return "10Mbps";
|
|
|
|
+ case SPEED_100:
|
|
|
|
+ return "100Mbps";
|
|
|
|
+ case SPEED_1000:
|
|
|
|
+ return "1Gbps";
|
|
|
|
+ case SPEED_2500:
|
|
|
|
+ return "2.5Gbps";
|
|
|
|
+ case SPEED_10000:
|
|
|
|
+ return "10Gbps";
|
|
|
|
+ case SPEED_UNKNOWN:
|
|
|
|
+ return "Unknown";
|
|
|
|
+ default:
|
|
|
|
+ return "Unsupported (update phy-core.c)";
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+EXPORT_SYMBOL_GPL(phy_speed_to_str);
|
|
|
|
+
|
|
|
|
+const char *phy_duplex_to_str(unsigned int duplex)
|
|
|
|
+{
|
|
|
|
+ if (duplex == DUPLEX_HALF)
|
|
|
|
+ return "Half";
|
|
|
|
+ if (duplex == DUPLEX_FULL)
|
|
|
|
+ return "Full";
|
|
|
|
+ if (duplex == DUPLEX_UNKNOWN)
|
|
|
|
+ return "Unknown";
|
|
|
|
+ return "Unsupported (update phy-core.c)";
|
|
|
|
+}
|
|
|
|
+EXPORT_SYMBOL_GPL(phy_duplex_to_str);
|
|
|
|
+
|
|
|
|
static inline void mmd_phy_indirect(struct mii_bus *bus, int prtad, int devad,
|
|
|
|
int addr)
|
|
|
|
{
|
|
|
|
--- a/include/linux/phy.h
|
|
|
|
+++ b/include/linux/phy.h
|
2017-11-20 09:51:09 +00:00
|
|
|
@@ -641,6 +641,9 @@ struct phy_fixup {
|
2017-02-06 10:46:48 +00:00
|
|
|
int (*run)(struct phy_device *phydev);
|
|
|
|
};
|
|
|
|
|
|
|
|
+const char *phy_speed_to_str(int speed);
|
|
|
|
+const char *phy_duplex_to_str(unsigned int duplex);
|
|
|
|
+
|
|
|
|
/**
|
|
|
|
* phy_read_mmd - Convenience function for reading a register
|
|
|
|
* from an MMD on a given PHY.
|