diff options
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.patch | 56 |
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; + } + |