From 4d3234fd67a1e629ebd8138c3eaaadcf64d67a8a Mon Sep 17 00:00:00 2001 From: Baruch Siach Date: Tue, 17 Aug 2010 11:00:44 +0300 Subject: imx iim: add mac address support Signed-off-by: Sascha Hauer --- arch/arm/mach-imx/iim.c | 22 +++++++++++++++++++++- arch/arm/mach-imx/include/mach/iim.h | 13 +++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) (limited to 'arch/arm') 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 */ -- cgit v1.2.3