[PATCH 5/5] fec: add support for IIM stored mac address

Sascha Hauer s.hauer at pengutronix.de
Mon Aug 16 05:02:35 EDT 2010


On Mon, Aug 16, 2010 at 11:52:54AM +0300, Baruch Siach wrote:
> Hi Sascha,
> 
> On Mon, Aug 16, 2010 at 10:45:06AM +0200, Sascha Hauer wrote:
> > On Sun, Aug 15, 2010 at 04:39:28PM +0300, Baruch Siach wrote:
> > > This patch adds support for i.MX25 only, because that's what I have. Extending
> > > this to other i.MX chip should be trivial, given the right IIM_MAC_ADDR define.
> > 
> > This needs to be ifdeffed because this define is not present for
> > !i.MX25.
> 
> OK. I hoped we can avoid the ugly ifdef, but, obviously, this is not possible 
> here.

Well, we could. You could provide platform data to the iim device,
telling the iim driver where to find the mac address and a
imx_iim_get_mac() function. This function returns -EINVAL when the
platform data is missing.

Sascha

> 
> baruch
> 
> > > Signed-off-by: Baruch Siach <baruch at tkos.co.il>
> > > ---
> > >  arch/arm/mach-imx/include/mach/imx25-regs.h |    1 +
> > >  drivers/net/fec_imx.c                       |   11 +++++++++++
> > >  2 files changed, 12 insertions(+), 0 deletions(-)
> > > 
> > > diff --git a/arch/arm/mach-imx/include/mach/imx25-regs.h b/arch/arm/mach-imx/include/mach/imx25-regs.h
> > > index f8908f2..ddd3e04 100644
> > > --- a/arch/arm/mach-imx/include/mach/imx25-regs.h
> > > +++ b/arch/arm/mach-imx/include/mach/imx25-regs.h
> > > @@ -142,6 +142,7 @@
> > >  
> > >  /* IIM fuse definitions */
> > >  #define IIM_UID		0x820
> > > +#define IIM_MAC_ADDR	0x868
> > >  
> > >  #define IIM_BANK_SIZE	32	/* excluding alignment padding for each row */
> > >  #define IIM_BANK0_BASE	(IMX_IIM_BASE + 0x800)
> > > diff --git a/drivers/net/fec_imx.c b/drivers/net/fec_imx.c
> > > index 40a7543..c29119c 100644
> > > --- a/drivers/net/fec_imx.c
> > > +++ b/drivers/net/fec_imx.c
> > > @@ -32,6 +32,7 @@
> > >  #include <mach/imx-regs.h>
> > >  #include <clock.h>
> > >  #include <mach/clock.h>
> > > +#include <mach/generic.h>
> > >  #include <xfuncs.h>
> > >  
> > >  #include "fec_imx.h"
> > > @@ -235,6 +236,16 @@ static void fec_rbd_clean(int last, struct buffer_descriptor *pRbd)
> > >  
> > >  static int fec_get_hwaddr(struct eth_device *dev, unsigned char *mac)
> > >  {
> > > +	int i;
> > > +
> > > +	if (cpu_is_mx25()) {
> > > +		/* get MAC address from the IMM fusebox */
> > > +		for (i = 0; i < 6; i++)
> > > +			mac[i] = readb(IMX_IIM_BASE + IIM_MAC_ADDR + i*4);
> > > +
> > > +		return 0;
> > > +	}
> > > +
> > >  	/* no eeprom */
> > >  	return -1;
> > >  }
> 
> -- 
>                                                      ~. .~   Tk Open Systems
> =}------------------------------------------------ooO--U--Ooo------------{=
>    - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list