summaryrefslogtreecommitdiff
path: root/include/phy.h
diff options
context:
space:
mode:
authorSamuel Mendoza-Jonas <sam@mendozajonas.com>2019-06-18 11:37:18 +1000
committerJoe Hershberger <joe.hershberger@ni.com>2020-03-09 18:11:23 -0500
commite2ffeaa16250ec6372412c0f268449803c321db6 (patch)
treed47454b8dda54689225136c99125c968f9230680 /include/phy.h
parentf641a8ac93e0c0179fe6f73429812af228109ff2 (diff)
phy: Include NC-SI in phy setup
Add NC-SI to the usual phy handling. This makes two notable changes: - Somewhat similar to a fixed phy, phy_connect() will create an NC-SI phy if CONFIG_PHY_NCSI is defined. - An early return is added to phy_read() and phy_write() to handle a case like the NC-SI phy which does not define a bus. Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com> Reviewed-by: Joel Stanley <joel@jms.id.au> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'include/phy.h')
-rw-r--r--include/phy.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/include/phy.h b/include/phy.h
index 400ca25a35..edc702a1f7 100644
--- a/include/phy.h
+++ b/include/phy.h
@@ -15,6 +15,7 @@
#include <linux/mii.h>
#include <linux/ethtool.h>
#include <linux/mdio.h>
+#include <log.h>
#include <phy_interface.h>
#define PHY_FIXED_ID 0xa5a55a5a
@@ -173,6 +174,11 @@ static inline int phy_read(struct phy_device *phydev, int devad, int regnum)
{
struct mii_dev *bus = phydev->bus;
+ if (!bus || !bus->read) {
+ debug("%s: No bus configured\n", __func__);
+ return -1;
+ }
+
return bus->read(bus, phydev->addr, devad, regnum);
}
@@ -181,6 +187,11 @@ static inline int phy_write(struct phy_device *phydev, int devad, int regnum,
{
struct mii_dev *bus = phydev->bus;
+ if (!bus || !bus->read) {
+ debug("%s: No bus configured\n", __func__);
+ return -1;
+ }
+
return bus->write(bus, phydev->addr, devad, regnum, val);
}
@@ -402,6 +413,7 @@ int phy_vitesse_init(void);
int phy_xilinx_init(void);
int phy_mscc_init(void);
int phy_fixed_init(void);
+int phy_ncsi_init(void);
int phy_xilinx_gmii2rgmii_init(void);
int board_phy_config(struct phy_device *phydev);