summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/phy/marvell.c5
-rw-r--r--drivers/net/phy/micrel.c26
-rw-r--r--drivers/net/rtl8169.c13
-rw-r--r--net/nfs.c17
4 files changed, 52 insertions, 9 deletions
diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c
index d2e68d492a..58d287bb07 100644
--- a/drivers/net/phy/marvell.c
+++ b/drivers/net/phy/marvell.c
@@ -476,10 +476,7 @@ static int m88e1310_config(struct phy_device *phydev)
/* Ensure to return to page 0 */
phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1310_PHY_PAGE, 0x0000);
- genphy_config_aneg(phydev);
- phy_reset(phydev);
-
- return 0;
+ return genphy_config_aneg(phydev);
}
static struct phy_driver M88E1011S_driver = {
diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
index b08788a2b0..6b313a9fd3 100644
--- a/drivers/net/phy/micrel.c
+++ b/drivers/net/phy/micrel.c
@@ -487,6 +487,31 @@ static struct phy_driver ksz9031_driver = {
.readext = &ksz9031_phy_extread,
};
+int ksz886x_config(struct phy_device *phydev)
+{
+ /* we are connected directly to the switch without
+ * dedicated PHY. */
+ phydev->link = 1;
+ phydev->duplex = DUPLEX_FULL;
+ phydev->speed = SPEED_100;
+ return 0;
+}
+
+static int ksz886x_startup(struct phy_device *phydev)
+{
+ return 0;
+}
+
+static struct phy_driver ksz886x_driver = {
+ .name = "Micrel KSZ886x Switch",
+ .uid = 0x00221430,
+ .mask = 0xfffff0,
+ .features = PHY_BASIC_FEATURES,
+ .config = &ksz886x_config,
+ .startup = &ksz886x_startup,
+ .shutdown = &genphy_shutdown,
+};
+
int phy_micrel_init(void)
{
phy_register(&KSZ804_driver);
@@ -500,5 +525,6 @@ int phy_micrel_init(void)
#endif
phy_register(&ksz9031_driver);
phy_register(&ksz8895_driver);
+ phy_register(&ksz886x_driver);
return 0;
}
diff --git a/drivers/net/rtl8169.c b/drivers/net/rtl8169.c
index 163b9df55c..843b083f8f 100644
--- a/drivers/net/rtl8169.c
+++ b/drivers/net/rtl8169.c
@@ -850,9 +850,11 @@ static void rtl8169_init_ring(pci_dev_t dev)
}
#ifdef CONFIG_DM_ETH
-static void rtl8169_common_start(struct udevice *dev, unsigned char *enetaddr)
+static void rtl8169_common_start(struct udevice *dev, unsigned char *enetaddr,
+ unsigned long dev_iobase)
#else
-static void rtl8169_common_start(pci_dev_t dev, unsigned char *enetaddr)
+static void rtl8169_common_start(pci_dev_t dev, unsigned char *enetaddr,
+ unsigned long dev_iobase)
#endif
{
int i;
@@ -862,6 +864,8 @@ static void rtl8169_common_start(pci_dev_t dev, unsigned char *enetaddr)
printf ("%s\n", __FUNCTION__);
#endif
+ ioaddr = dev_iobase;
+
rtl8169_init_ring(dev);
rtl8169_hw_start(dev);
/* Construct a perfect filter frame with the mac address as first match
@@ -885,8 +889,9 @@ static void rtl8169_common_start(pci_dev_t dev, unsigned char *enetaddr)
static int rtl8169_eth_start(struct udevice *dev)
{
struct eth_pdata *plat = dev_get_platdata(dev);
+ struct rtl8169_private *priv = dev_get_priv(dev);
- rtl8169_common_start(dev, plat->enetaddr);
+ rtl8169_common_start(dev, plat->enetaddr, priv->iobase);
return 0;
}
@@ -897,7 +902,7 @@ RESET - Finish setting up the ethernet interface
static int rtl_reset(struct eth_device *dev, bd_t *bis)
{
rtl8169_common_start((pci_dev_t)(unsigned long)dev->priv,
- dev->enetaddr);
+ dev->enetaddr, dev->iobase);
return 0;
}
diff --git a/net/nfs.c b/net/nfs.c
index 78968d82e9..f60a037818 100644
--- a/net/nfs.c
+++ b/net/nfs.c
@@ -481,8 +481,23 @@ static int nfs_lookup_reply(uchar *pkt, unsigned len)
if (rpc_pkt.u.reply.rstatus ||
rpc_pkt.u.reply.verifier ||
rpc_pkt.u.reply.astatus ||
- rpc_pkt.u.reply.data[0])
+ rpc_pkt.u.reply.data[0]) {
+ switch (ntohl(rpc_pkt.u.reply.astatus)) {
+ case 0: /* Not an error */
+ break;
+ case 2: /* Remote can't support NFS version */
+ printf("*** ERROR: NFS version not supported: Requested: V%d, accepted: min V%d - max V%d\n",
+ 2,
+ ntohl(rpc_pkt.u.reply.data[0]),
+ ntohl(rpc_pkt.u.reply.data[1]));
+ break;
+ default: /* Unknown error on 'accept state' flag */
+ printf("*** ERROR: accept state error (%d)\n",
+ ntohl(rpc_pkt.u.reply.astatus));
+ break;
+ }
return -1;
+ }
memcpy(filefh, rpc_pkt.u.reply.data + 1, NFS_FHSIZE);
OpenPOWER on IntegriCloud