aboutsummaryrefslogtreecommitdiffstats
path: root/main/linux-grsec/r8169-fix-mdio_read-and-update-mdio_write-according-to-hw-specs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/linux-grsec/r8169-fix-mdio_read-and-update-mdio_write-according-to-hw-specs.patch')
-rw-r--r--main/linux-grsec/r8169-fix-mdio_read-and-update-mdio_write-according-to-hw-specs.patch56
1 files changed, 56 insertions, 0 deletions
diff --git a/main/linux-grsec/r8169-fix-mdio_read-and-update-mdio_write-according-to-hw-specs.patch b/main/linux-grsec/r8169-fix-mdio_read-and-update-mdio_write-according-to-hw-specs.patch
new file mode 100644
index 0000000000..bd111e8772
--- /dev/null
+++ b/main/linux-grsec/r8169-fix-mdio_read-and-update-mdio_write-according-to-hw-specs.patch
@@ -0,0 +1,56 @@
+From patchwork Wed Jun 9 05:22:10 2010
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 8bit
+Subject: r8169: fix mdio_read and update mdio_write according to hw specs
+Date: Tue, 08 Jun 2010 19:22:10 -0000
+From: =?utf-8?b?VGltbyBUZXLDpHMgPHRpbW8udGVyYXNAaWtpLmZpPg==?=
+X-Patchwork-Id: 55049
+Message-Id: <1276060930-15697-1-git-send-email-timo.teras@iki.fi>
+To: netdev@vger.kernel.org
+Cc: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>,
+ Francois Romieu <romieu@fr.zoreil.com>, Hayeswang <hayeswang@realtek.com>
+
+Realtek confirmed that a 20us delay is needed after mdio_read and
+mdio_write operations. Reduce the delay in mdio_write, and add it
+to mdio_read too. Also add a comment that the 20us is from hw specs.
+
+Signed-off-by: Timo Teräs <timo.teras@iki.fi>
+Cc: Francois Romieu <romieu@fr.zoreil.com>
+Cc: Hayeswang <hayeswang@realtek.com>
+
+---
+drivers/net/r8169.c | 12 +++++++++---
+ 1 files changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
+index 03a8318..96b6cfb 100644
+--- a/drivers/net/r8169.c
++++ b/drivers/net/r8169.c
+@@ -560,10 +560,10 @@ static void mdio_write(void __iomem *ioaddr, int reg_addr, int value)
+ udelay(25);
+ }
+ /*
+- * Some configurations require a small delay even after the write
+- * completed indication or the next write might fail.
++ * According to hardware specs a 20us delay is required after write
++ * complete indication, but before sending next command.
+ */
+- udelay(25);
++ udelay(20);
+ }
+
+ static int mdio_read(void __iomem *ioaddr, int reg_addr)
+@@ -583,6 +583,12 @@ static int mdio_read(void __iomem *ioaddr, int reg_addr)
+ }
+ udelay(25);
+ }
++ /*
++ * According to hardware specs a 20us delay is required after read
++ * complete indication, but before sending next command.
++ */
++ udelay(20);
++
+ return value;
+ }
+