Please find attached the checked patch. Sorry for the inconvenience.
Kind regards,
Alain
Quoting Wolfgang Denk <w...@denx.de>:
Dear alain.pet...@space.unibe.ch,
In message <20110415124815.1253591nkjx5a...@mail.unibe.ch> you wrote:
The macro name configuring Ping/Pong didn't match. It has been
checked on a Spartan3e Starterkit.
This should probably be part of the commit message.
Your patch has a number of coding style issues: indentation not by
TAB, trailing white space, etc. Please fix, then verify by ruinning
through checkpatch, and resubmit.
Thanks.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
Children are natural mimics who act like their parents despite every
effort to teach them good manners.
>From 3de8fc98d5bc133e94092f5171eac1c57f3572b8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alain=20P=C3=A9teut?= <pet...@space.unibe.ch>
Date: Fri, 15 Apr 2011 14:40:52 +0200
Subject: [PATCH] xilinx_emaclite.c: Ping/Pong fixes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixed macro names for Ping/Pong implementation.
Initialisation for emaclite.nexttxbuffertouse and
emaclite.nextrxbuffertouse added.
Fixed a missed offset (XEL_BUFFER_OFFSET).
Signed-off-by: Alain Péteut <pet...@space.unibe.ch>
---
drivers/net/xilinx_emaclite.c | 21 ++++++++++++---------
1 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/drivers/net/xilinx_emaclite.c b/drivers/net/xilinx_emaclite.c
index 76af939..bc081d3 100644
--- a/drivers/net/xilinx_emaclite.c
+++ b/drivers/net/xilinx_emaclite.c
@@ -139,8 +139,10 @@ static int emaclite_init(struct eth_device *dev, bd_t *bis)
memset (&emaclite, 0, sizeof (xemaclite));
emaclite.baseaddress = dev->iobase;
+ emaclite.nexttxbuffertouse = 0x0;
+ emaclite.nextrxbuffertouse = 0x0;
/*
- * TX - TX_PING & TX_PONG initialization
+ TX - TX_PING & TX_PONG initialization
*/
/* Restart PING TX */
out_be32 (emaclite.baseaddress + XEL_TSR_OFFSET, 0);
@@ -155,12 +157,13 @@ static int emaclite_init(struct eth_device *dev, bd_t *bis)
while ((in_be32 (emaclite.baseaddress + XEL_TSR_OFFSET) &
XEL_TSR_PROG_MAC_ADDR) != 0) ;
-#ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG
+#ifdef XILINX_EMACLITE_TX_PING_PONG
/* The same operation with PONG TX */
out_be32 (emaclite.baseaddress + XEL_TSR_OFFSET + XEL_BUFFER_OFFSET, 0);
xemaclite_alignedwrite (dev->enetaddr, emaclite.baseaddress +
XEL_BUFFER_OFFSET, ENET_ADDR_LENGTH);
- out_be32 (emaclite.baseaddress + XEL_TPLR_OFFSET, ENET_ADDR_LENGTH);
+ out_be32 (emaclite.baseaddress + XEL_TPLR_OFFSET + XEL_BUFFER_OFFSET,
+ ENET_ADDR_LENGTH);
out_be32 (emaclite.baseaddress + XEL_TSR_OFFSET + XEL_BUFFER_OFFSET,
XEL_TSR_PROG_MAC_ADDR);
while ((in_be32 (emaclite.baseaddress + XEL_TSR_OFFSET +
@@ -172,7 +175,7 @@ static int emaclite_init(struct eth_device *dev, bd_t *bis)
*/
/* Write out the value to flush the RX buffer */
out_be32 (emaclite.baseaddress + XEL_RSR_OFFSET, XEL_RSR_RECV_IE_MASK);
-#ifdef CONFIG_XILINX_EMACLITE_RX_PING_PONG
+#ifdef XILINX_EMACLITE_RX_PING_PONG
out_be32 (emaclite.baseaddress + XEL_RSR_OFFSET + XEL_BUFFER_OFFSET,
XEL_RSR_RECV_IE_MASK);
#endif
@@ -222,7 +225,7 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len)
printf ("Error: Timeout waiting for ethernet TX buffer\n");
/* Restart PING TX */
out_be32 (emaclite.baseaddress + XEL_TSR_OFFSET, 0);
-#ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG
+#ifdef XILINX_EMACLITE_TX_PING_PONG
out_be32 (emaclite.baseaddress + XEL_TSR_OFFSET +
XEL_BUFFER_OFFSET, 0);
#endif
@@ -238,7 +241,7 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len)
&& ((in_be32 ((baseaddress) + XEL_TSR_OFFSET)
& XEL_TSR_XMIT_ACTIVE_MASK) == 0)) {
-#ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG
+#ifdef XILINX_EMACLITE_TX_PING_PONG
emaclite.nexttxbuffertouse ^= XEL_BUFFER_OFFSET;
#endif
debug ("Send packet from 0x%x\n", baseaddress);
@@ -254,7 +257,7 @@ static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len)
out_be32 (baseaddress + XEL_TSR_OFFSET, reg);
return 1;
}
-#ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG
+#ifdef XILINX_EMACLITE_TX_PING_PONG
/* Switch to second buffer */
baseaddress ^= XEL_BUFFER_OFFSET;
/* Determine if the expected buffer address is empty */
@@ -290,11 +293,11 @@ static int emaclite_recv(struct eth_device *dev)
reg = in_be32 (baseaddress + XEL_RSR_OFFSET);
debug ("Testing data at address 0x%x\n", baseaddress);
if ((reg & XEL_RSR_RECV_DONE_MASK) == XEL_RSR_RECV_DONE_MASK) {
-#ifdef CONFIG_XILINX_EMACLITE_RX_PING_PONG
+#ifdef XILINX_EMACLITE_RX_PING_PONG
emaclite.nextrxbuffertouse ^= XEL_BUFFER_OFFSET;
#endif
} else {
-#ifndef CONFIG_XILINX_EMACLITE_RX_PING_PONG
+#ifndef XILINX_EMACLITE_RX_PING_PONG
debug ("No data was available - address 0x%x\n", baseaddress);
return 0;
#else
--
1.7.2.5
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot