Thread (15 messages) 15 messages, 6 authors, 2011-09-20

[PATCH 4/4] net/fec: add imx6q enet support

flat view
STALE5508d

From: Shawn Guo <hidden>
Date: 2011-09-19 09:08:29
Also in: netdev

Revision v1 of 3 in this series.

Revisions (3)
  1. v1
  2. v1
  3. v1 current
On Sun, Sep 18, 2011 at 08:09:12PM +0200, Francois Romieu wrote:
Shawn Guo [off-list ref] :
[...]
quoted
diff --git a/drivers/net/fec.c b/drivers/net/fec.c
index 04206e4..849cb0b 100644
--- a/drivers/net/fec.c
+++ b/drivers/net/fec.c
@@ -442,18 +453,23 @@ fec_restart(struct net_device *ndev, int duplex)
 		/* Enable flow control and length check */
 		rcntl |= 0x40000000 | 0x00000020;
 
-		/* MII or RMII */
+		/* RGMII, RMII or MII */
+		if (fep->phy_interface == PHY_INTERFACE_MODE_RGMII)
+			rcntl |= (1 << 6);
 		if (fep->phy_interface == PHY_INTERFACE_MODE_RMII)
           ^^^^ missing "else"
Yes, my bad.
[...]
quoted
+		/* 1G, 100M or 10M */
+		if (fep->phy_dev) {
+			if (fep->phy_dev->speed == SPEED_1000)
+				ecntl |= (1 << 8);
Right, this is a typo.  It should be (1 << 5);
quoted
+			else if (fep->phy_dev->speed == SPEED_100)
+				rcntl &= ~(1 << 9);
+			else
+				rcntl |= (1 << 9);
+		}
[...]
quoted
+	if (id_entry->driver_data & FEC_QUIRK_ENET_MAC) {
+		/* enable ENET endian swap */
+		ecntl |= (1 << 8);
I do not understand why the endian swap bit of ecntl needs to be
set the same in these two different paths, especially as the latter
handles the old faulty imx28 and the former the newly fixed imx6q.
Typo ?
Nice catches.  Thanks a lot, Ueimor.

-- 
Regards,
Shawn
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help