diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2011-07-28 11:56:15 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2011-07-29 12:05:26 +0200 |
commit | 2fd4fa2e99552e728aab10be1b1d9d67a3844982 (patch) | |
tree | bbfa4ca3d8f8b550991e9cab4b319c34d9e72414 | |
parent | c46b04542f57ad4d0429ae72f47775d027b12ac6 (diff) | |
download | barebox-2fd4fa2e99552e728aab10be1b1d9d67a3844982.tar.gz barebox-2fd4fa2e99552e728aab10be1b1d9d67a3844982.tar.xz |
ARM i.MX: rework IIM MAC address setting
Switch to the generic way of setting a MAC address for a
device.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c | 2 | ||||
-rw-r--r-- | arch/arm/boards/freescale-mx25-3-stack/3stack.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/iim.c | 13 | ||||
-rw-r--r-- | arch/arm/mach-imx/include/mach/iim.h | 30 | ||||
-rw-r--r-- | drivers/net/fec_imx.c | 4 |
5 files changed, 31 insertions, 20 deletions
diff --git a/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c b/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c index 6ea4a6ec71..d7978465f0 100644 --- a/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c +++ b/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c @@ -37,6 +37,7 @@ #include <generated/mach-types.h> #include <mach/imx-nand.h> #include <mach/imxfb.h> +#include <mach/iim.h> #include <fec.h> #include <nand.h> #include <mach/imx-flash-header.h> @@ -251,6 +252,7 @@ static int eukrea_cpuimx25_devices_init(void) led_gpio_register(&led0); + imx25_iim_register_fec_ethaddr(); imx25_add_fec(&fec_info); nand_info.width = 1; diff --git a/arch/arm/boards/freescale-mx25-3-stack/3stack.c b/arch/arm/boards/freescale-mx25-3-stack/3stack.c index 6d4bde5893..f71cb4b3d7 100644 --- a/arch/arm/boards/freescale-mx25-3-stack/3stack.c +++ b/arch/arm/boards/freescale-mx25-3-stack/3stack.c @@ -37,6 +37,7 @@ #include <mach/imx-flash-header.h> #include <mach/iomux-mx25.h> #include <mach/generic.h> +#include <mach/iim.h> #include <linux/err.h> #include <i2c/i2c.h> #include <mfd/mc34704.h> @@ -210,6 +211,7 @@ static int imx25_devices_init(void) register_device(&usbh2_dev); #endif + imx25_iim_register_fec_ethaddr(); imx25_add_fec(&fec_info); if (readl(IMX_CCM_BASE + CCM_RCSR) & (1 << 14)) diff --git a/arch/arm/mach-imx/iim.c b/arch/arm/mach-imx/iim.c index 80dfa9becb..59793b86ff 100644 --- a/arch/arm/mach-imx/iim.c +++ b/arch/arm/mach-imx/iim.c @@ -316,16 +316,3 @@ int imx_iim_read(unsigned int bank, int offset, void *buf, int count) return ret; } - -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 69357f3d17..532acbd79e 100644 --- a/arch/arm/mach-imx/include/mach/iim.h +++ b/arch/arm/mach-imx/include/mach/iim.h @@ -24,6 +24,7 @@ #define __MACH_IMX_IIM_H #include <errno.h> +#include <net.h> #define IIM_STAT 0x0000 #define IIM_STATM 0x0004 @@ -54,11 +55,34 @@ static inline int imx_iim_read(unsigned int bank, int offset, void *buf, { return -EINVAL; } +#endif /* CONFIG_IMX_IIM */ -static inline int imx_iim_get_mac(unsigned char *mac) +static inline int imx51_iim_register_fec_ethaddr(void) { - return -EINVAL; + int ret; + u8 buf[6]; + + ret = imx_iim_read(1, 9, buf, 6); + if (ret != 6) + return -EINVAL; + + eth_register_ethaddr(0, buf); + + return 0; +} + +static inline int imx25_iim_register_fec_ethaddr(void) +{ + int ret; + u8 buf[6]; + + ret = imx_iim_read(0, 26, buf, 6); + if (ret != 6) + return -EINVAL; + + eth_register_ethaddr(0, buf); + + return 0; } -#endif /* CONFIG_IMX_IIM */ #endif /* __MACH_IMX_IIM_H */ diff --git a/drivers/net/fec_imx.c b/drivers/net/fec_imx.c index fcb8cc5bdc..619504ee7f 100644 --- a/drivers/net/fec_imx.c +++ b/drivers/net/fec_imx.c @@ -269,11 +269,7 @@ static void fec_rbd_clean(int last, struct buffer_descriptor __iomem *pRbd) static int fec_get_hwaddr(struct eth_device *dev, unsigned char *mac) { -#ifdef CONFIG_ARCH_MXS return -1; -#else - return imx_iim_get_mac(mac); -#endif } static int fec_set_hwaddr(struct eth_device *dev, unsigned char *mac) |