
On 20/12/2011 14:53, Fabio Estevam wrote:
MX28 has two built-in FECs (Fast Ethernet Controller).
OCOTP register can be used to only store 4 bytes of MAC addresses.
In order to workaround this limitation, let the MAC address of FEC1 be the FEC0 address plus one.
Signed-off-by: Fabio Estevam fabio.estevam@freescale.com
Hi Fabio,
Changes since v5: No changes. Newly introduced on this series
arch/arm/cpu/arm926ejs/mx28/mx28.c | 8 ++++++-- drivers/net/fec_mxc.c | 16 ++++++++++++++++ drivers/net/fec_mxc.h | 1 + 3 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/arch/arm/cpu/arm926ejs/mx28/mx28.c b/arch/arm/cpu/arm926ejs/mx28/mx28.c index a25814e..79b4001 100644 --- a/arch/arm/cpu/arm926ejs/mx28/mx28.c +++ b/arch/arm/cpu/arm926ejs/mx28/mx28.c @@ -227,7 +227,7 @@ void set_mac_vendor(char *mac)
#define MXS_OCOTP_MAX_TIMEOUT 1000000
-void imx_get_mac_from_fuse(char *mac) +void mx28_get_mac_from_fuse(int dev_id, char *mac) {
but imx_get_mac_from_fuse() is common to all IMX SOCs. Why do we need another name only for MX28 ? I think it is better to adjust imx_get_mac_from_fuse() to allow a second parameter (dev_id), that can be ignored in other SOCs implementations.
struct mx28_ocotp_regs *ocotp_regs = (struct mx28_ocotp_regs *)MXS_OCOTP_BASE; @@ -249,10 +249,14 @@ void imx_get_mac_from_fuse(char *mac) mac[3] = (data >> 16) & 0xff; mac[4] = (data >> 8) & 0xff; mac[5] = data & 0xff;
- /* Assume that FEC1 MAC address is MAC0 + 1 */
- if (dev_id == 1)
mac[5]+= 1;
- set_mac_vendor(mac);
Should be not better that the additional mac is computed by the (weak) board function ? Then it is responsibility of the board and his maintainer to change (if needed) the MAC for the second interface.
Best regards, Stefano Babic