summaryrefslogtreecommitdiffstats
path: root/arch/arm/boards/karo-tx28
diff options
context:
space:
mode:
authorWolfram Sang <w.sang@pengutronix.de>2012-04-05 11:05:40 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2012-04-05 18:26:18 +0200
commit8bcf2c465aa52706fc645f5c257a33d7b3493a6b (patch)
treeb9aa925811233ed8249eb0809648bf05e2848e72 /arch/arm/boards/karo-tx28
parent4be0faccd722a74e7cf7aa20b446c7057938d6df (diff)
downloadbarebox-8bcf2c465aa52706fc645f5c257a33d7b3493a6b.tar.gz
barebox-8bcf2c465aa52706fc645f5c257a33d7b3493a6b.tar.xz
arm: mxs: tx28: get MAC from OCOTP
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/boards/karo-tx28')
-rw-r--r--arch/arm/boards/karo-tx28/tx28-stk5.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/arch/arm/boards/karo-tx28/tx28-stk5.c b/arch/arm/boards/karo-tx28/tx28-stk5.c
index b36d8226e5..04fdbc37b9 100644
--- a/arch/arm/boards/karo-tx28/tx28-stk5.c
+++ b/arch/arm/boards/karo-tx28/tx28-stk5.c
@@ -21,11 +21,13 @@
#include <fec.h>
#include <sizes.h>
#include <io.h>
+#include <net.h>
#include <asm/sections.h>
#include <mach/imx-regs.h>
#include <mach/clock.h>
#include <mach/mci.h>
#include <mach/fb.h>
+#include <mach/ocotp.h>
static struct mxs_mci_platform_data mci_pdata = {
.caps = MMC_MODE_4BIT,
@@ -345,6 +347,22 @@ static int register_persistent_environment(void)
DEVFS_PARTITION_FIXED, "env0");
}
+void tx28_get_ethaddr(void)
+{
+ u32 buf[2]; /* to make use of cpu_to_be32 */
+ u32 ethaddr[2];
+ int ret;
+
+ ret = mxs_ocotp_read(buf, 8, 0);
+ if (ret != 8)
+ return;
+
+ ethaddr[0] = cpu_to_be32(buf[0]);
+ ethaddr[1] = cpu_to_be32(buf[1]);
+
+ eth_register_ethaddr(0, (char *)ethaddr);
+}
+
void base_board_init(void)
{
int i, ret;
@@ -369,6 +387,11 @@ void base_board_init(void)
add_generic_device("stmfb", 0, NULL, IMX_FB_BASE, 4096,
IORESOURCE_MEM, &tx28_fb_pdata);
+ add_generic_device("ocotp", 0, NULL, IMX_OCOTP_BASE, 0,
+ IORESOURCE_MEM, NULL);
+
+ tx28_get_ethaddr();
+
imx_enable_enetclk();
add_generic_device("fec_imx", 0, NULL, IMX_FEC0_BASE, 0,
IORESOURCE_MEM, &fec_info);