mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 13:11:31 +00:00
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>
This commit is contained in:
parent
f641a8ac93
commit
e2ffeaa162
3 changed files with 23 additions and 0 deletions
|
@ -545,6 +545,9 @@ int phy_init(void)
|
|||
#ifdef CONFIG_PHY_FIXED
|
||||
phy_fixed_init();
|
||||
#endif
|
||||
#ifdef CONFIG_PHY_NCSI
|
||||
phy_ncsi_init();
|
||||
#endif
|
||||
#ifdef CONFIG_PHY_XILINX_GMII2RGMII
|
||||
phy_xilinx_gmii2rgmii_init();
|
||||
#endif
|
||||
|
@ -1002,6 +1005,12 @@ struct phy_device *phy_connect(struct mii_dev *bus, int addr,
|
|||
#ifdef CONFIG_PHY_FIXED
|
||||
phydev = phy_connect_fixed(bus, dev, interface);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PHY_NCSI
|
||||
if (!phydev)
|
||||
phydev = phy_device_create(bus, 0, PHY_NCSI_ID, false, interface);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PHY_XILINX_GMII2RGMII
|
||||
if (!phydev)
|
||||
phydev = phy_connect_gmii2rgmii(bus, dev, interface);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -31,6 +31,7 @@ typedef enum {
|
|||
PHY_INTERFACE_MODE_XLAUI,
|
||||
PHY_INTERFACE_MODE_CAUI2,
|
||||
PHY_INTERFACE_MODE_CAUI4,
|
||||
PHY_INTERFACE_MODE_NCSI,
|
||||
PHY_INTERFACE_MODE_XFI,
|
||||
PHY_INTERFACE_MODE_USXGMII,
|
||||
PHY_INTERFACE_MODE_NONE, /* Must be last */
|
||||
|
@ -60,6 +61,7 @@ static const char * const phy_interface_strings[] = {
|
|||
[PHY_INTERFACE_MODE_XLAUI] = "xlaui4",
|
||||
[PHY_INTERFACE_MODE_CAUI2] = "caui2",
|
||||
[PHY_INTERFACE_MODE_CAUI4] = "caui4",
|
||||
[PHY_INTERFACE_MODE_NCSI] = "NC-SI",
|
||||
[PHY_INTERFACE_MODE_XFI] = "xfi",
|
||||
[PHY_INTERFACE_MODE_USXGMII] = "usxgmii",
|
||||
[PHY_INTERFACE_MODE_NONE] = "",
|
||||
|
|
Loading…
Add table
Reference in a new issue