summaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorBaruch Siach <baruch@tkos.co.il>2010-08-17 11:00:44 +0300
committerSascha Hauer <s.hauer@pengutronix.de>2010-08-17 10:21:25 +0200
commit4d3234fd67a1e629ebd8138c3eaaadcf64d67a8a (patch)
tree0b52675178c6cbd01c61369f64bd3a7a45acf773 /arch/arm
parent5ccbeb3141c4814b17c4496e560cedc68a82548a (diff)
downloadbarebox-4d3234fd67a1e629ebd8138c3eaaadcf64d67a8a.tar.gz
barebox-4d3234fd67a1e629ebd8138c3eaaadcf64d67a8a.tar.xz
imx iim: add mac address support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-imx/iim.c22
-rw-r--r--arch/arm/mach-imx/include/mach/iim.h13
2 files changed, 34 insertions, 1 deletions
diff --git a/arch/arm/mach-imx/iim.c b/arch/arm/mach-imx/iim.c
index 1275fc89d2..0774ebba9c 100644
--- a/arch/arm/mach-imx/iim.c
+++ b/arch/arm/mach-imx/iim.c
@@ -29,6 +29,8 @@
#define DRIVERNAME "imx_iim"
+static unsigned long mac_addr_base;
+
static int do_fuse_sense(unsigned long reg_base, unsigned int bank,
unsigned int row)
{
@@ -224,6 +226,11 @@ static int imx_iim_blow_enable_set(struct device_d *dev, struct param_d *param,
static int imx_iim_probe(struct device_d *dev)
{
+ struct imx_iim_platform_data *pdata = dev->platform_data;
+
+ if (pdata)
+ mac_addr_base = pdata->mac_addr_base;
+
return 0;
}
@@ -288,4 +295,17 @@ static int imx_iim_init(void)
return 0;
}
-device_initcall(imx_iim_init);
+coredevice_initcall(imx_iim_init);
+
+int imx_iim_get_mac(unsigned char *mac)
+{
+ int i;
+
+ if (mac_addr_base == 0)
+ return -EINVAL;
+
+ for (i = 0; i < 6; i++)
+ mac[i] = readb(mac_addr_base + i*4);
+
+ return 0;
+}
diff --git a/arch/arm/mach-imx/include/mach/iim.h b/arch/arm/mach-imx/include/mach/iim.h
index 6e135475e0..1b290f2053 100644
--- a/arch/arm/mach-imx/include/mach/iim.h
+++ b/arch/arm/mach-imx/include/mach/iim.h
@@ -39,4 +39,17 @@
#define IIM_SCS2 0x0034
#define IIM_SCS3 0x0038
+struct imx_iim_platform_data {
+ unsigned long mac_addr_base;
+};
+
+#ifdef CONFIG_IMX_IIM
+int imx_iim_get_mac(unsigned char *mac);
+#else
+static inline int imx_iim_get_mac(unsigned char *mac)
+{
+ return -EINVAL;
+}
+#endif /* CONFIG_IMX_IIM */
+
#endif /* __MACH_IMX_IIM_H */