[PATCH 5/5] fec: add support for IIM stored mac address
Baruch Siach
baruch at tkos.co.il
Sun Aug 15 09:39:28 EDT 2010
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.
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;
}
--
1.7.1
More information about the barebox
mailing list