[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