From patchwork Fri Apr 15 12:49:08 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [U-Boot] xilinx_emaclite.c ping-pong macro names Date: Fri, 15 Apr 2011 02:49:08 -0000 From: alain.peteut@space.unibe.ch X-Patchwork-Id: 91355 Message-Id: <20110415144908.16476jnz1wxcpps4@mail.unibe.ch> To: u-boot@lists.denx.de Please find attached the checked patch. Sorry for the inconvenience. Kind regards, Alain Quoting Wolfgang Denk : > Dear alain.peteut@space.unibe.ch, > > In message <20110415124815.1253591nkjx5al4f@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: wd@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?= 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 --- 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