diff options
author | Baruch Siach <baruch@tkos.co.il> | 2010-08-17 11:00:44 +0300 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2010-08-17 10:21:25 +0200 |
commit | 4d3234fd67a1e629ebd8138c3eaaadcf64d67a8a (patch) | |
tree | 0b52675178c6cbd01c61369f64bd3a7a45acf773 /arch/arm | |
parent | 5ccbeb3141c4814b17c4496e560cedc68a82548a (diff) | |
download | barebox-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.c | 22 | ||||
-rw-r--r-- | arch/arm/mach-imx/include/mach/iim.h | 13 |
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 */ |