diff mbox

[U-Boot,fix,for,v2014.10] sunxi: Fix gmac not working reliable on the Bananapi

Message ID 1412095532-9385-2-git-send-email-hdegoede@redhat.com
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Hans de Goede Sept. 30, 2014, 4:45 p.m. UTC
In order for the gmac nic to work reliable on the Bananapi, we need to set
bits 10-12 GTXDC "GMAC Transmit Clock Delay Chain" of the GMAC clk register
(0x01c20164) to 3.

Without this about 9 out of 10 ethernet packets get lost, with this setting
there is no packet loss.

So far setting these bits is only necessary on the Bananapi, so this commit
solves this with a bit of #ifdef CONFIG_BANANAPI code. If in the future we
need to do something similar for other boards, we can create a specific
CONFIG_FOO option for this then.

Reported-by: Karsten Merker <merker@debian.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Tested-by: Karsten Merker <merker@debian.org>
Tested-by: Zoltan HERPAI <wigyori@openwrt.org>
Tested-by: Tony Zhang <tony.zhang@lemaker.org>
Acked-by: Ian Campbell <ijc@hellion.org.uk>
---
 board/sunxi/gmac.c | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Tom Rini Oct. 10, 2014, 2:39 p.m. UTC | #1
On Tue, Sep 30, 2014 at 06:45:32PM +0200, Hans de Goede wrote:

> In order for the gmac nic to work reliable on the Bananapi, we need to set
> bits 10-12 GTXDC "GMAC Transmit Clock Delay Chain" of the GMAC clk register
> (0x01c20164) to 3.
> 
> Without this about 9 out of 10 ethernet packets get lost, with this setting
> there is no packet loss.
> 
> So far setting these bits is only necessary on the Bananapi, so this commit
> solves this with a bit of #ifdef CONFIG_BANANAPI code. If in the future we
> need to do something similar for other boards, we can create a specific
> CONFIG_FOO option for this then.
> 
> Reported-by: Karsten Merker <merker@debian.org>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> Tested-by: Karsten Merker <merker@debian.org>
> Tested-by: Zoltan HERPAI <wigyori@openwrt.org>
> Tested-by: Tony Zhang <tony.zhang@lemaker.org>
> Acked-by: Ian Campbell <ijc@hellion.org.uk>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/board/sunxi/gmac.c b/board/sunxi/gmac.c
index e7ff952..6348d27 100644
--- a/board/sunxi/gmac.c
+++ b/board/sunxi/gmac.c
@@ -24,6 +24,15 @@  int sunxi_gmac_initialize(bd_t *bis)
 		CCM_GMAC_CTRL_GPIT_MII);
 #endif
 
+	/*
+	 * In order for the gmac nic to work reliable on the Bananapi, we
+	 * need to set bits 10-12 GTXDC "GMAC Transmit Clock Delay Chain"
+	 * of the GMAC clk register to 3.
+	 */
+#ifdef CONFIG_BANANAPI
+	setbits_le32(&ccm->gmac_clk_cfg, 0x3 << 10);
+#endif
+
 	/* Configure pin mux settings for GMAC */
 	for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(16); pin++) {
 #ifdef CONFIG_RGMII