All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ben Warren <biggerbadderben@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 2/4] net: Move Emaclite to NET_MULTI
Date: Tue, 31 Aug 2010 22:48:10 -0700	[thread overview]
Message-ID: <4C7DE91A.4040102@gmail.com> (raw)
In-Reply-To: <1280753377-2894-2-git-send-email-monstr@monstr.eu>

  Hi Michal,

Sorry for the delay in reviewing

On 8/2/2010 5:49 AM, Michal Simek wrote:
> Emaclite was using old net api that's why
> this patch move emaclite to NET_MULTI api.
>
> Signed-off-by: Michal Simek<monstr@monstr.eu>
> ---
>   drivers/net/xilinx_emaclite.c |   84 +++++++++++++++++++++++------------------
>   include/netdev.h              |    1 +
>   2 files changed, 48 insertions(+), 37 deletions(-)
>
> diff --git a/drivers/net/xilinx_emaclite.c b/drivers/net/xilinx_emaclite.c
> index 0820daa..f460525 100644
> --- a/drivers/net/xilinx_emaclite.c
> +++ b/drivers/net/xilinx_emaclite.c
> @@ -26,6 +26,7 @@
>   #include<common.h>
>   #include<net.h>
>   #include<config.h>
> +#include<malloc.h>
>   #include<asm/io.h>
>
>   #undef DEBUG
> @@ -63,26 +64,19 @@
>   #define XEL_RSR_RECV_IE_MASK		0x00000008UL
>
>   typedef struct {
> -	unsigned int baseaddress;	/* Base address for device (IPIF) */
> -	unsigned int nexttxbuffertouse;	/* Next TX buffer to write to */
> -	unsigned int nextrxbuffertouse;	/* Next RX buffer to read from */
> -	unsigned char deviceid;		/* Unique ID of device - for future */
> +	u32 baseaddress;	/* Base address for device (IPIF) */
> +	u32 nexttxbuffertouse;	/* Next TX buffer to write to */
> +	u32 nextrxbuffertouse;	/* Next RX buffer to read from */
> +	uchar deviceid;		/* Unique ID of device - for future */
>   } xemaclite;
>
>   static xemaclite emaclite;
>
>   static u32 etherrxbuff[PKTSIZE_ALIGN/4]; /* Receive buffer */
>
> -/* hardcoded MAC address for the Xilinx EMAC Core when env is nowhere*/
> -#ifdef CONFIG_ENV_IS_NOWHERE
> -static u8 emacaddr[ENET_ADDR_LENGTH] = { 0x00, 0x0a, 0x35, 0x00, 0x22, 0x01 };
> -#else
> -static u8 emacaddr[ENET_ADDR_LENGTH];
> -#endif
> -
> -void xemaclite_alignedread (u32 * srcptr, void *destptr, unsigned bytecount)
> +static void xemaclite_alignedread (u32 *srcptr, void *destptr, u32 bytecount)
>   {
> -	unsigned int i;
> +	u32 i;
>   	u32 alignbuffer;
>   	u32 *to32ptr;
>   	u32 *from32ptr;
> @@ -107,9 +101,9 @@ void xemaclite_alignedread (u32 * srcptr, void *destptr, unsigned bytecount)
>   	}
>   }
>
> -void xemaclite_alignedwrite (void *srcptr, u32 destptr, unsigned bytecount)
> +static void xemaclite_alignedwrite (void *srcptr, u32 destptr, u32 bytecount)
>   {
> -	unsigned i;
> +	u32 i;
>   	u32 alignbuffer;
>   	u32 *to32ptr = (u32 *) destptr;
>   	u32 *from32ptr;
> @@ -134,23 +128,16 @@ void xemaclite_alignedwrite (void *srcptr, u32 destptr, unsigned bytecount)
>   	*to32ptr++ = alignbuffer;
>   }
>
> -void eth_halt (void)
> +static void emaclite_halt(struct eth_device *dev)
>   {
>   	debug ("eth_halt\n");
>   }
>
> -int eth_init (bd_t * bis)
> +static int emaclite_init(struct eth_device *dev, bd_t *bis)
>   {
> -	uchar enetaddr[6];
> -
>   	debug ("EmacLite Initialization Started\n");
>   	memset (&emaclite, 0, sizeof (xemaclite));
> -	emaclite.baseaddress = XILINX_EMACLITE_BASEADDR;
> -
> -	if (!eth_getenv_enetaddr("ethaddr", enetaddr)) {
> -		memcpy(enetaddr, emacaddr, ENET_ADDR_LENGTH);
> -		eth_setenv_enetaddr("ethaddr", enetaddr);
> -	}
> +	emaclite.baseaddress = dev->iobase;
>
>   /*
>    * TX - TX_PING&  TX_PONG initialization
> @@ -158,7 +145,7 @@ int eth_init (bd_t * bis)
>   	/* Restart PING TX */
>   	out_be32 (emaclite.baseaddress + XEL_TSR_OFFSET, 0);
>   	/* Copy MAC address */
> -	xemaclite_alignedwrite (enetaddr,
> +	xemaclite_alignedwrite (dev->enetaddr,
>   		emaclite.baseaddress, ENET_ADDR_LENGTH);
>   	/* Set the length */
>   	out_be32 (emaclite.baseaddress + XEL_TPLR_OFFSET, ENET_ADDR_LENGTH);
> @@ -171,7 +158,7 @@ int eth_init (bd_t * bis)
>   #ifdef CONFIG_XILINX_EMACLITE_TX_PING_PONG
>   	/* The same operation with PONG TX */
>   	out_be32 (emaclite.baseaddress + XEL_TSR_OFFSET + XEL_BUFFER_OFFSET, 0);
> -	xemaclite_alignedwrite (enetaddr, emaclite.baseaddress +
> +	xemaclite_alignedwrite (dev->enetaddr, emaclite.baseaddress +
>   		XEL_BUFFER_OFFSET, ENET_ADDR_LENGTH);
>   	out_be32 (emaclite.baseaddress + XEL_TPLR_OFFSET, ENET_ADDR_LENGTH);
Please consider moving this stuff to a separate function.  If you bind 
it to dev->write_hwaddr(), programming will occur at initialization time.
>   	out_be32 (emaclite.baseaddress + XEL_TSR_OFFSET + XEL_BUFFER_OFFSET,
> @@ -194,7 +181,7 @@ int eth_init (bd_t * bis)
>   	return 0;
>   }
>
> -int xemaclite_txbufferavailable (xemaclite * instanceptr)
> +static int xemaclite_txbufferavailable (xemaclite *instanceptr)
>   {
>   	u32 reg;
>   	u32 txpingbusy;
> @@ -216,12 +203,12 @@ int xemaclite_txbufferavailable (xemaclite * instanceptr)
>   	return (!(txpingbusy&&  txpongbusy));
>   }
>
> -int eth_send (volatile void *ptr, int len) {
> -
> -	unsigned int reg;
> -	unsigned int baseaddress;
> +static int emaclite_send (struct eth_device *dev, volatile void *ptr, int len)
> +{
> +	u32 reg;
> +	u32 baseaddress;
>
> -	unsigned maxtry = 1000;
> +	u32 maxtry = 1000;
>
>   	if (len>  ENET_MAX_MTU)
>   		len = ENET_MAX_MTU;
> @@ -293,11 +280,11 @@ int eth_send (volatile void *ptr, int len) {
>   	return 0;
>   }
>
> -int eth_rx (void)
> +static int emaclite_recv(struct eth_device *dev)
>   {
> -	unsigned int length;
> -	unsigned int reg;
> -	unsigned int baseaddress;
> +	u32 length;
> +	u32 reg;
> +	u32 baseaddress;
>
>   	baseaddress = emaclite.baseaddress + emaclite.nextrxbuffertouse;
>   	reg = in_be32 (baseaddress + XEL_RSR_OFFSET);
> @@ -353,3 +340,26 @@ int eth_rx (void)
>   	return 1;
>
>   }
> +
> +int xilinx_emaclite_initialize (bd_t *bis)
> +{
> +	struct eth_device *dev;
> +
> +	dev = malloc(sizeof(*dev));
> +	if (dev == NULL)
> +		hang();
> +
> +	memset(dev, 0, sizeof(*dev));
> +	sprintf(dev->name, "Xilinx Emaclite");
> +
> +	dev->iobase = XILINX_EMACLITE_BASEADDR;
Can you pass this in as a parameter instead?  You don't seem to use 
'bis', so it's not necessary
> +	dev->priv = 0;
> +	dev->init = emaclite_init;
> +	dev->halt = emaclite_halt;
> +	dev->send = emaclite_send;
> +	dev->recv = emaclite_recv;
> +
> +	eth_register(dev);
> +
> +	return 0;
> +}
> diff --git a/include/netdev.h b/include/netdev.h
> index 94eedfe..979fb57 100644
> --- a/include/netdev.h
> +++ b/include/netdev.h
> @@ -88,6 +88,7 @@ int tsi108_eth_initialize(bd_t *bis);
>   int uec_initialize(int index);
>   int uec_standard_init(bd_t *bis);
>   int uli526x_initialize(bd_t *bis);
> +int xilinx_emaclite_initialize (bd_t *bis);
>   int sh_eth_initialize(bd_t *bis);
>   int dm9000_initialize(bd_t *bis);
regards,
Ben

  parent reply	other threads:[~2010-09-01  5:48 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-02 12:49 [U-Boot] [PATCH 1/4] microblaze: Fix microblaze-generic config file Michal Simek
2010-08-02 12:49 ` [U-Boot] [PATCH 2/4] net: Move Emaclite to NET_MULTI Michal Simek
2010-08-02 12:49   ` [U-Boot] [PATCH 3/4] microblaze: Add support for NET_MULTI api Michal Simek
2010-08-02 12:49     ` [U-Boot] [PATCH 4/4] net: Add LL TEMAC driver to u-boot Michal Simek
2010-08-26 12:16       ` Michal Simek
2010-11-28 20:35       ` Wolfgang Denk
2010-12-03  9:33         ` Michal Simek
2010-08-26 12:16   ` [U-Boot] [PATCH 2/4] net: Move Emaclite to NET_MULTI Michal Simek
2010-09-01  5:48   ` Ben Warren [this message]
2010-10-11  1:37     ` Michal Simek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C7DE91A.4040102@gmail.com \
    --to=biggerbadderben@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.