[U-Boot] [PATCH v2 6/6] cm-t35: use the new EEPROM module to read the MAC address
Igor Grinberg
grinberg at compulab.co.il
Thu Jan 12 14:28:09 CET 2012
From: Nikita Kiryanov <nikita at compulab.co.il>
Switch to the new EEPROM module and fix the problem of MAC address
being read from the wrong offset due to lack of distinction between
EEPROM layouts.
Signed-off-by: Nikita Kiryanov <nikita at compulab.co.il>
Signed-off-by: Igor Grinberg <grinberg at compulab.co.il>
---
Changes in v2:
* Make the cm_t3x_eeprom_read_mac_addr() stub static inline.
* Remove unused include from eeprom.h
board/cm_t35/cm_t35.c | 6 +++---
board/cm_t35/eeprom.c | 18 ++++++++++++++++++
board/cm_t35/eeprom.h | 33 +++++++++++++++++++++++++++++++++
3 files changed, 54 insertions(+), 3 deletions(-)
create mode 100644 board/cm_t35/eeprom.h
diff --git a/board/cm_t35/cm_t35.c b/board/cm_t35/cm_t35.c
index 0d5a401..0a04994 100644
--- a/board/cm_t35/cm_t35.c
+++ b/board/cm_t35/cm_t35.c
@@ -42,6 +42,8 @@
#include <asm/arch/sys_proto.h>
#include <asm/mach-types.h>
+#include "eeprom.h"
+
DECLARE_GLOBAL_DATA_PTR;
const omap3_sysinfo sysinfo = {
@@ -383,11 +385,9 @@ static int handle_mac_address(void)
if (rc)
return 0;
-#ifdef CONFIG_DRIVER_OMAP34XX_I2C
- rc = i2c_read(0x50, 0, 1, enetaddr, 6);
+ rc = cm_t3x_eeprom_read_mac_addr(enetaddr);
if (rc)
return rc;
-#endif
if (!is_valid_ether_addr(enetaddr))
return -1;
diff --git a/board/cm_t35/eeprom.c b/board/cm_t35/eeprom.c
index b3d332f..dfa171d 100644
--- a/board/cm_t35/eeprom.c
+++ b/board/cm_t35/eeprom.c
@@ -29,6 +29,8 @@
#define BOARD_REV_OFFSET_LEGACY 6
#define BOARD_REV_SIZE 4
#define BOARD_REV_SIZE_LEGACY 2
+#define MAC_ADDR_OFFSET 4
+#define MAC_ADDR_OFFSET_LEGACY 0
#define LAYOUT_INVALID 0
#define LAYOUT_LEGACY 0xff
@@ -82,6 +84,22 @@ void get_board_serial(struct tag_serialnr *serialnr)
}
/*
+ * Routine: cm_t3x_eeprom_read_mac_addr
+ * Description: read mac address and store it in buf.
+ */
+int cm_t3x_eeprom_read_mac_addr(uchar *buf)
+{
+ uint offset;
+
+ if (eeprom_setup_layout())
+ return 0;
+
+ offset = (eeprom_layout != LAYOUT_LEGACY) ?
+ MAC_ADDR_OFFSET : MAC_ADDR_OFFSET_LEGACY;
+ return cm_t3x_eeprom_read(offset, buf, 6);
+}
+
+/*
* Routine: get_board_rev
* Description: read system revision
*/
diff --git a/board/cm_t35/eeprom.h b/board/cm_t35/eeprom.h
new file mode 100644
index 0000000..ec772c6
--- /dev/null
+++ b/board/cm_t35/eeprom.h
@@ -0,0 +1,33 @@
+/*
+ * (C) Copyright 2011 CompuLab, Ltd. <www.compulab.co.il>
+ *
+ * Authors: Nikita Kiryanov <nikita at compulab.co.il>
+ * Igor Grinberg <grinberg at compulab.co.il>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc.
+ */
+#ifndef _EEPROM_
+#define _EEPROM_
+
+#ifdef CONFIG_DRIVER_OMAP34XX_I2C
+int cm_t3x_eeprom_read_mac_addr(uchar *buf);
+#else
+static inline int cm_t3x_eeprom_read_mac_addr(uchar *buf)
+{
+ return 1;
+}
+#endif
+
+#endif
--
1.7.3.4
More information about the U-Boot
mailing list