Re: [U-Boot] [PATCH 05/14] ARM: AM43XX: board: add support for reading onboard EEPROM

2013-11-07 Thread Vaibhav Bedia
Hi Tom,

On Wed, Nov 6, 2013 at 4:37 PM, Tom Rini tr...@ti.com wrote:
 +
 +   if (header-magic != 0xEE3355AA) {

 Why is the header the same as AM335x? Shouldn't it be something
 like 0xEE3344AA or whatever?
 No, the header is still same. It is 0xEE3355AA.


 My question was why ;)
 What's the point of adding the same magic value for a different SoC?
 Unless there's a good reason for doing so i think this needs to be fixed
 in the EEPROM programmer.

 A magic value is sufficiently magical, I don't think we'll get anyone to
 change it at this point.


With almost half a dozen of AM335x board variants floating around this
thing is bound to cause problems eventually. The EEPROM format
can simply be updated to fix this. If there's a big resistance in doing
this then we might as well live with it - but i would at least ask once ;)

Regards,
Vaibhav
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 05/14] ARM: AM43XX: board: add support for reading onboard EEPROM

2013-11-07 Thread Tom Rini
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 11/07/2013 03:56 PM, Vaibhav Bedia wrote:
 Hi Tom,
 
 On Wed, Nov 6, 2013 at 4:37 PM, Tom Rini tr...@ti.com wrote:
 +
 +   if (header-magic != 0xEE3355AA) {

 Why is the header the same as AM335x? Shouldn't it be something
 like 0xEE3344AA or whatever?
 No, the header is still same. It is 0xEE3355AA.


 My question was why ;)
 What's the point of adding the same magic value for a different SoC?
 Unless there's a good reason for doing so i think this needs to be fixed
 in the EEPROM programmer.

 A magic value is sufficiently magical, I don't think we'll get anyone to
 change it at this point.
 
 With almost half a dozen of AM335x board variants floating around this
 thing is bound to cause problems eventually. The EEPROM format
 can simply be updated to fix this. If there's a big resistance in doing
 this then we might as well live with it - but i would at least ask once ;)

The thing is, customers drop the EEPROM or come up with their own, see
the Siemens am335x boards :)

- -- 
Tom
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJSfADXAAoJENk4IS6UOR1WRa0P/1EMaiNOZsztbkdosA+Gja5y
/FDdvJl8fWrKKMY0gBUNIplFNev2cDdOyb0EdglD77oinYM8cpdYHkh1rhZEv7rA
kvx5rFZ0iOftuavbgtUEBcTs2/oLbFjKZV8ajCkwuFig6E1XY49yeT9obsB9UKxG
uBYIs75SYBPZg/8RzDlQbwpyBR/3cSwRQ9t61p21lQVnZvenIwNPhVxCg++jxtdT
i0IuzraMwcdUXKIBoBkE6Lu+vYgbi4yWcrPIrllxo5C3vRkw9ua6rRHB9qTG60xM
V02CSxm9UTfrg4yMlBZHMkPDAHcbAirV4+z70vMdqsffzMhGspL3/Lo8+bf6FD31
xnlws8IVJTLjNTLL/ZZ6POcPXI2rHsLkdfVQoXYWVBVmn5ZHvfrCEL2ahkYBG40Y
y2rzyw/QiFCZz8GXPHNV7NNDaVTaasw7ph7dJ03/a3yMBJJNIK7OV3EdR22dtgUe
a2734X2DWbPQtdovkH5YQMULXi5pYH6aCXMbcPGsGWVN8HZXuEOdmNdWkdFyoD4W
/l8vx63X5BdUCsrbahp6KI9Es4AZN/QbNGbn5oLSkf/qVDdJTxW3RrZ/wcgk+r3I
F7ufYYetQi0nOE+2ri0ayFgZNNqNCbUZKeZEuEMzUNXwPfY4CZDTov3fk2C4rnfk
PewbVnXTpc2lnUyjxD1v
=B5PZ
-END PGP SIGNATURE-
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 05/14] ARM: AM43XX: board: add support for reading onboard EEPROM

2013-11-07 Thread Vaibhav Bedia
On Thu, Nov 7, 2013 at 4:06 PM, Tom Rini tr...@ti.com wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 On 11/07/2013 03:56 PM, Vaibhav Bedia wrote:
 Hi Tom,

 On Wed, Nov 6, 2013 at 4:37 PM, Tom Rini tr...@ti.com wrote:
 +
 +   if (header-magic != 0xEE3355AA) {

 Why is the header the same as AM335x? Shouldn't it be something
 like 0xEE3344AA or whatever?
 No, the header is still same. It is 0xEE3355AA.


 My question was why ;)
 What's the point of adding the same magic value for a different SoC?
 Unless there's a good reason for doing so i think this needs to be fixed
 in the EEPROM programmer.

 A magic value is sufficiently magical, I don't think we'll get anyone to
 change it at this point.

 With almost half a dozen of AM335x board variants floating around this
 thing is bound to cause problems eventually. The EEPROM format
 can simply be updated to fix this. If there's a big resistance in doing
 this then we might as well live with it - but i would at least ask once ;)

 The thing is, customers drop the EEPROM or come up with their own, see
 the Siemens am335x boards :)


Customers fix a design and get rid of whatever they can ;)

I always considered the EEPROM as one of the ways of maintaining some
sanity amongst the numerous board variants that go around internally :P

I'll leave this for the right folks to decide then :)

Regards,
Vaibhav
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 05/14] ARM: AM43XX: board: add support for reading onboard EEPROM

2013-11-06 Thread Vaibhav Bedia
On Mon, Nov 4, 2013 at 11:20 PM, Lokesh Vutla lokeshvu...@ti.com wrote:
 From: Sekhar Nori nsek...@ti.com

 Add support for reading onboard EEPROM to enable
 board detection.

 Signed-off-by: Sekhar Nori nsek...@ti.com
 Signed-off-by: Lokesh Vutla lokeshvu...@ti.com
 ---
  arch/arm/include/asm/arch-am33xx/omap.h |2 ++
  board/ti/am43xx/board.c |   46 
 +++
  board/ti/am43xx/board.h |   32 +
  include/configs/am43xx_evm.h|7 +
  4 files changed, 87 insertions(+)

 diff --git a/arch/arm/include/asm/arch-am33xx/omap.h 
 b/arch/arm/include/asm/arch-am33xx/omap.h
 index 2250721..10f05c9 100644
 --- a/arch/arm/include/asm/arch-am33xx/omap.h
 +++ b/arch/arm/include/asm/arch-am33xx/omap.h
 @@ -27,5 +27,7 @@
  #define NON_SECURE_SRAM_START  0x402F0400
  #define NON_SECURE_SRAM_END0x4034
  #define SRAM_SCRATCH_SPACE_ADDR0x4033C000
 +#define AM4372_BOARD_NAME_STARTSRAM_SCRATCH_SPACE_ADDR
 +#define AM4372_BOARD_NAME_END  SRAM_SCRATCH_SPACE_ADDR + 0xC
  #endif
  #endif
 diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c
 index dcd8cbb..4fc1a40 100644
 --- a/board/ti/am43xx/board.c
 +++ b/board/ti/am43xx/board.c
 @@ -9,6 +9,8 @@
   */

  #include common.h
 +#include i2c.h
 +#include asm/errno.h
  #include spl.h
  #include asm/arch/clock.h
  #include asm/arch/sys_proto.h
 @@ -17,6 +19,50 @@

  DECLARE_GLOBAL_DATA_PTR;

 +/*
 + * Read header information from EEPROM into global structure.
 + */
 +static int read_eeprom(struct am43xx_board_id *header)
 +{
 +   /* Check if baseboard eeprom is available */
 +   if (i2c_probe(CONFIG_SYS_I2C_EEPROM_ADDR)) {
 +   printf(Could not probe the EEPROM at 0x%x\n,
 +  CONFIG_SYS_I2C_EEPROM_ADDR);
 +   return -ENODEV;
 +   }
 +
 +   /* read the eeprom using i2c */
 +   if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0, 2, (uchar *)header,
 +sizeof(struct am43xx_board_id))) {
 +   printf(Could not read the EEPROM\n);
 +   return -EIO;
 +   }
 +
 +   if (header-magic != 0xEE3355AA) {

Why is the header the same as AM335x? Shouldn't it be something
like 0xEE3344AA or whatever?

 +   /*
 +* read the eeprom using i2c again,
 +* but use only a 1 byte address
 +*/
 +   if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0, 1, (uchar 
 *)header,
 +sizeof(struct am43xx_board_id))) {
 +   printf(Could not read the EEPROM at 0x%x\n,
 +  CONFIG_SYS_I2C_EEPROM_ADDR);
 +   return -EIO;
 +   }
 +
 +   if (header-magic != 0xEE3355AA) {

Same here.

Regards,
Vaibhav
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 05/14] ARM: AM43XX: board: add support for reading onboard EEPROM

2013-11-06 Thread Lokesh Vutla
On Wednesday 06 November 2013 06:08 PM, Vaibhav Bedia wrote:
 On Mon, Nov 4, 2013 at 11:20 PM, Lokesh Vutla lokeshvu...@ti.com wrote:
 From: Sekhar Nori nsek...@ti.com

 Add support for reading onboard EEPROM to enable
 board detection.

 Signed-off-by: Sekhar Nori nsek...@ti.com
 Signed-off-by: Lokesh Vutla lokeshvu...@ti.com
 ---
  arch/arm/include/asm/arch-am33xx/omap.h |2 ++
  board/ti/am43xx/board.c |   46 
 +++
  board/ti/am43xx/board.h |   32 +
  include/configs/am43xx_evm.h|7 +
  4 files changed, 87 insertions(+)

 diff --git a/arch/arm/include/asm/arch-am33xx/omap.h 
 b/arch/arm/include/asm/arch-am33xx/omap.h
 index 2250721..10f05c9 100644
 --- a/arch/arm/include/asm/arch-am33xx/omap.h
 +++ b/arch/arm/include/asm/arch-am33xx/omap.h
 @@ -27,5 +27,7 @@
  #define NON_SECURE_SRAM_START  0x402F0400
  #define NON_SECURE_SRAM_END0x4034
  #define SRAM_SCRATCH_SPACE_ADDR0x4033C000
 +#define AM4372_BOARD_NAME_STARTSRAM_SCRATCH_SPACE_ADDR
 +#define AM4372_BOARD_NAME_END  SRAM_SCRATCH_SPACE_ADDR + 0xC
  #endif
  #endif
 diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c
 index dcd8cbb..4fc1a40 100644
 --- a/board/ti/am43xx/board.c
 +++ b/board/ti/am43xx/board.c
 @@ -9,6 +9,8 @@
   */

  #include common.h
 +#include i2c.h
 +#include asm/errno.h
  #include spl.h
  #include asm/arch/clock.h
  #include asm/arch/sys_proto.h
 @@ -17,6 +19,50 @@

  DECLARE_GLOBAL_DATA_PTR;

 +/*
 + * Read header information from EEPROM into global structure.
 + */
 +static int read_eeprom(struct am43xx_board_id *header)
 +{
 +   /* Check if baseboard eeprom is available */
 +   if (i2c_probe(CONFIG_SYS_I2C_EEPROM_ADDR)) {
 +   printf(Could not probe the EEPROM at 0x%x\n,
 +  CONFIG_SYS_I2C_EEPROM_ADDR);
 +   return -ENODEV;
 +   }
 +
 +   /* read the eeprom using i2c */
 +   if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0, 2, (uchar *)header,
 +sizeof(struct am43xx_board_id))) {
 +   printf(Could not read the EEPROM\n);
 +   return -EIO;
 +   }
 +
 +   if (header-magic != 0xEE3355AA) {
 
 Why is the header the same as AM335x? Shouldn't it be something
 like 0xEE3344AA or whatever?
No, the header is still same. It is 0xEE3355AA.

Thanks and regards,
Lokesh
 
 +   /*
 +* read the eeprom using i2c again,
 +* but use only a 1 byte address
 +*/
 +   if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0, 1, (uchar 
 *)header,
 +sizeof(struct am43xx_board_id))) {
 +   printf(Could not read the EEPROM at 0x%x\n,
 +  CONFIG_SYS_I2C_EEPROM_ADDR);
 +   return -EIO;
 +   }
 +
 +   if (header-magic != 0xEE3355AA) {
 
 Same here.
 
 Regards,
 Vaibhav
 

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 05/14] ARM: AM43XX: board: add support for reading onboard EEPROM

2013-11-06 Thread Vaibhav Bedia
On Wed, Nov 6, 2013 at 8:25 AM, Lokesh Vutla lokeshvu...@ti.com wrote:
 On Wednesday 06 November 2013 06:08 PM, Vaibhav Bedia wrote:
 On Mon, Nov 4, 2013 at 11:20 PM, Lokesh Vutla lokeshvu...@ti.com wrote:
 From: Sekhar Nori nsek...@ti.com

 Add support for reading onboard EEPROM to enable
 board detection.

 Signed-off-by: Sekhar Nori nsek...@ti.com
 Signed-off-by: Lokesh Vutla lokeshvu...@ti.com
 ---
  arch/arm/include/asm/arch-am33xx/omap.h |2 ++
  board/ti/am43xx/board.c |   46 
 +++
  board/ti/am43xx/board.h |   32 +
  include/configs/am43xx_evm.h|7 +
  4 files changed, 87 insertions(+)

 diff --git a/arch/arm/include/asm/arch-am33xx/omap.h 
 b/arch/arm/include/asm/arch-am33xx/omap.h
 index 2250721..10f05c9 100644
 --- a/arch/arm/include/asm/arch-am33xx/omap.h
 +++ b/arch/arm/include/asm/arch-am33xx/omap.h
 @@ -27,5 +27,7 @@
  #define NON_SECURE_SRAM_START  0x402F0400
  #define NON_SECURE_SRAM_END0x4034
  #define SRAM_SCRATCH_SPACE_ADDR0x4033C000
 +#define AM4372_BOARD_NAME_STARTSRAM_SCRATCH_SPACE_ADDR
 +#define AM4372_BOARD_NAME_END  SRAM_SCRATCH_SPACE_ADDR + 0xC
  #endif
  #endif
 diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c
 index dcd8cbb..4fc1a40 100644
 --- a/board/ti/am43xx/board.c
 +++ b/board/ti/am43xx/board.c
 @@ -9,6 +9,8 @@
   */

  #include common.h
 +#include i2c.h
 +#include asm/errno.h
  #include spl.h
  #include asm/arch/clock.h
  #include asm/arch/sys_proto.h
 @@ -17,6 +19,50 @@

  DECLARE_GLOBAL_DATA_PTR;

 +/*
 + * Read header information from EEPROM into global structure.
 + */
 +static int read_eeprom(struct am43xx_board_id *header)
 +{
 +   /* Check if baseboard eeprom is available */
 +   if (i2c_probe(CONFIG_SYS_I2C_EEPROM_ADDR)) {
 +   printf(Could not probe the EEPROM at 0x%x\n,
 +  CONFIG_SYS_I2C_EEPROM_ADDR);
 +   return -ENODEV;
 +   }
 +
 +   /* read the eeprom using i2c */
 +   if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0, 2, (uchar *)header,
 +sizeof(struct am43xx_board_id))) {
 +   printf(Could not read the EEPROM\n);
 +   return -EIO;
 +   }
 +
 +   if (header-magic != 0xEE3355AA) {

 Why is the header the same as AM335x? Shouldn't it be something
 like 0xEE3344AA or whatever?
 No, the header is still same. It is 0xEE3355AA.


My question was why ;)
What's the point of adding the same magic value for a different SoC?
Unless there's a good reason for doing so i think this needs to be fixed
in the EEPROM programmer.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 05/14] ARM: AM43XX: board: add support for reading onboard EEPROM

2013-11-06 Thread Tom Rini
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 11/06/2013 11:39 AM, Vaibhav Bedia wrote:
 On Wed, Nov 6, 2013 at 8:25 AM, Lokesh Vutla lokeshvu...@ti.com wrote:
 On Wednesday 06 November 2013 06:08 PM, Vaibhav Bedia wrote:
 On Mon, Nov 4, 2013 at 11:20 PM, Lokesh Vutla lokeshvu...@ti.com wrote:
 From: Sekhar Nori nsek...@ti.com

 Add support for reading onboard EEPROM to enable
 board detection.

 Signed-off-by: Sekhar Nori nsek...@ti.com
 Signed-off-by: Lokesh Vutla lokeshvu...@ti.com
 ---
  arch/arm/include/asm/arch-am33xx/omap.h |2 ++
  board/ti/am43xx/board.c |   46 
 +++
  board/ti/am43xx/board.h |   32 +
  include/configs/am43xx_evm.h|7 +
  4 files changed, 87 insertions(+)

 diff --git a/arch/arm/include/asm/arch-am33xx/omap.h 
 b/arch/arm/include/asm/arch-am33xx/omap.h
 index 2250721..10f05c9 100644
 --- a/arch/arm/include/asm/arch-am33xx/omap.h
 +++ b/arch/arm/include/asm/arch-am33xx/omap.h
 @@ -27,5 +27,7 @@
  #define NON_SECURE_SRAM_START  0x402F0400
  #define NON_SECURE_SRAM_END0x4034
  #define SRAM_SCRATCH_SPACE_ADDR0x4033C000
 +#define AM4372_BOARD_NAME_STARTSRAM_SCRATCH_SPACE_ADDR
 +#define AM4372_BOARD_NAME_END  SRAM_SCRATCH_SPACE_ADDR + 0xC
  #endif
  #endif
 diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c
 index dcd8cbb..4fc1a40 100644
 --- a/board/ti/am43xx/board.c
 +++ b/board/ti/am43xx/board.c
 @@ -9,6 +9,8 @@
   */

  #include common.h
 +#include i2c.h
 +#include asm/errno.h
  #include spl.h
  #include asm/arch/clock.h
  #include asm/arch/sys_proto.h
 @@ -17,6 +19,50 @@

  DECLARE_GLOBAL_DATA_PTR;

 +/*
 + * Read header information from EEPROM into global structure.
 + */
 +static int read_eeprom(struct am43xx_board_id *header)
 +{
 +   /* Check if baseboard eeprom is available */
 +   if (i2c_probe(CONFIG_SYS_I2C_EEPROM_ADDR)) {
 +   printf(Could not probe the EEPROM at 0x%x\n,
 +  CONFIG_SYS_I2C_EEPROM_ADDR);
 +   return -ENODEV;
 +   }
 +
 +   /* read the eeprom using i2c */
 +   if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0, 2, (uchar *)header,
 +sizeof(struct am43xx_board_id))) {
 +   printf(Could not read the EEPROM\n);
 +   return -EIO;
 +   }
 +
 +   if (header-magic != 0xEE3355AA) {

 Why is the header the same as AM335x? Shouldn't it be something
 like 0xEE3344AA or whatever?
 No, the header is still same. It is 0xEE3355AA.

 
 My question was why ;)
 What's the point of adding the same magic value for a different SoC?
 Unless there's a good reason for doing so i think this needs to be fixed
 in the EEPROM programmer.

A magic value is sufficiently magical, I don't think we'll get anyone to
change it at this point.

- -- 
Tom
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJSeraOAAoJENk4IS6UOR1W/JgP/jShfGcdKDNKJ8EcwAgdy+iU
uFlC02b3f/I4cx7B4s0W3GWJVfHAlPlddSevzSE+I81/f+XRVy9w9Aso3J5hvD3e
XJ/deA5xSpKMV4kZjhE0mOO62iemH4r5ewiM1WFbzUUoWIa1Jf+C8pjygvac5UJb
DCIE40VigasMjl/bJbMOyZPKbrRbHIh+N7fFZNbo+WUp76ZM2dv0S1JWRaY/Zhpq
08wplMmlONGrOkRQmbVYTp2SPrSiYkxq98cIjyzqrzW2pAPDpWP9z7T5hlfI5iWz
It9AENzEkJhmzHTt2P6wq4R9z+giAGweRlFe08tB4lIawX5MaNYOU6TilZee7uf2
PbE5QP2ZXpXCH2Yme59syev/PVqrI02Z8zmZAvvUYQslkEXiXN4mCgWhGXVmZePE
+o+O2bACVAbaRANUZv4vosrPkFI5ooBCn9DR7ME7lZu93nIziMk+xRnzmYacSdQK
k2+GSQSmJ4zd0NCDNaYQ0Svhd3KY6jLZ/RaaYjN4ylNiEkNv8Skk+Vz8l4R8bctY
VZPJeZI/slNH4LfMV6pDuWjmVirJwrj8CmbrpBbWuILjcFjmwvDXt9mGZDlari9z
kK5s4TsAib29bGOPJIjBedmTLuQbaOy6GFppAYQCU063z+n/Jzsyp1ICQGtA5b6P
0PE9WmzQtC7+X15bIL5d
=l8oP
-END PGP SIGNATURE-
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 05/14] ARM: AM43XX: board: add support for reading onboard EEPROM

2013-11-04 Thread Lokesh Vutla
From: Sekhar Nori nsek...@ti.com

Add support for reading onboard EEPROM to enable
board detection.

Signed-off-by: Sekhar Nori nsek...@ti.com
Signed-off-by: Lokesh Vutla lokeshvu...@ti.com
---
 arch/arm/include/asm/arch-am33xx/omap.h |2 ++
 board/ti/am43xx/board.c |   46 +++
 board/ti/am43xx/board.h |   32 +
 include/configs/am43xx_evm.h|7 +
 4 files changed, 87 insertions(+)

diff --git a/arch/arm/include/asm/arch-am33xx/omap.h 
b/arch/arm/include/asm/arch-am33xx/omap.h
index 2250721..10f05c9 100644
--- a/arch/arm/include/asm/arch-am33xx/omap.h
+++ b/arch/arm/include/asm/arch-am33xx/omap.h
@@ -27,5 +27,7 @@
 #define NON_SECURE_SRAM_START  0x402F0400
 #define NON_SECURE_SRAM_END0x4034
 #define SRAM_SCRATCH_SPACE_ADDR0x4033C000
+#define AM4372_BOARD_NAME_STARTSRAM_SCRATCH_SPACE_ADDR
+#define AM4372_BOARD_NAME_END  SRAM_SCRATCH_SPACE_ADDR + 0xC
 #endif
 #endif
diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c
index dcd8cbb..4fc1a40 100644
--- a/board/ti/am43xx/board.c
+++ b/board/ti/am43xx/board.c
@@ -9,6 +9,8 @@
  */
 
 #include common.h
+#include i2c.h
+#include asm/errno.h
 #include spl.h
 #include asm/arch/clock.h
 #include asm/arch/sys_proto.h
@@ -17,6 +19,50 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+/*
+ * Read header information from EEPROM into global structure.
+ */
+static int read_eeprom(struct am43xx_board_id *header)
+{
+   /* Check if baseboard eeprom is available */
+   if (i2c_probe(CONFIG_SYS_I2C_EEPROM_ADDR)) {
+   printf(Could not probe the EEPROM at 0x%x\n,
+  CONFIG_SYS_I2C_EEPROM_ADDR);
+   return -ENODEV;
+   }
+
+   /* read the eeprom using i2c */
+   if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0, 2, (uchar *)header,
+sizeof(struct am43xx_board_id))) {
+   printf(Could not read the EEPROM\n);
+   return -EIO;
+   }
+
+   if (header-magic != 0xEE3355AA) {
+   /*
+* read the eeprom using i2c again,
+* but use only a 1 byte address
+*/
+   if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0, 1, (uchar *)header,
+sizeof(struct am43xx_board_id))) {
+   printf(Could not read the EEPROM at 0x%x\n,
+  CONFIG_SYS_I2C_EEPROM_ADDR);
+   return -EIO;
+   }
+
+   if (header-magic != 0xEE3355AA) {
+   printf(Incorrect magic number (0x%x) in EEPROM\n,
+  header-magic);
+   return -EINVAL;
+   }
+   }
+
+   strncpy(am43xx_board_name, (char *)header-name, sizeof(header-name));
+   am43xx_board_name[sizeof(header-name)] = 0;
+
+   return 0;
+}
+
 #ifdef CONFIG_SPL_BUILD
 
 const struct dpll_params dpll_ddr = {
diff --git a/board/ti/am43xx/board.h b/board/ti/am43xx/board.h
index 8ca098b..9268895 100644
--- a/board/ti/am43xx/board.h
+++ b/board/ti/am43xx/board.h
@@ -12,6 +12,38 @@
 #ifndef _BOARD_H_
 #define _BOARD_H_
 
+#include asm/arch/omap.h
+
+static char *const am43xx_board_name = (char *)AM4372_BOARD_NAME_START;
+
+/*
+ * TI AM437x EVMs define a system EEPROM that defines certain sub-fields.
+ * We use these fields to in turn see what board we are on, and what
+ * that might require us to set or not set.
+ */
+#define HDR_NO_OF_MAC_ADDR 3
+#define HDR_ETH_ALEN   6
+#define HDR_NAME_LEN   8
+
+struct am43xx_board_id {
+   unsigned int  magic;
+   char name[HDR_NAME_LEN];
+   char version[4];
+   char serial[12];
+   char config[32];
+   char mac_addr[HDR_NO_OF_MAC_ADDR][HDR_ETH_ALEN];
+};
+
+static inline int board_is_eposevm(void)
+{
+   return !strncmp(am43xx_board_name, AM43EPOS, HDR_NAME_LEN);
+}
+
+static inline int board_is_gpevm(void)
+{
+   return !strncmp(am43xx_board_name, AM43__GP, HDR_NAME_LEN);
+}
+
 void enable_uart0_pin_mux(void);
 void enable_board_pin_mux(void);
 #endif
diff --git a/include/configs/am43xx_evm.h b/include/configs/am43xx_evm.h
index 6afb6b4..456dcaa 100644
--- a/include/configs/am43xx_evm.h
+++ b/include/configs/am43xx_evm.h
@@ -25,6 +25,13 @@
 #define CONFIG_SYS_NS16550_REG_SIZE(-4)
 #define CONFIG_SYS_NS16550_CLK 4800
 
+/* I2C Configuration */
+#define CONFIG_CMD_EEPROM
+#define CONFIG_ENV_EEPROM_IS_ON_I2C
+#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50/* Main EEPROM */
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
+#define CONFIG_SYS_I2C_MULTI_EEPROMS
+
 /* SPL defines. */
 #define CONFIG_SPL_TEXT_BASE   0x40300350
 #define CONFIG_SPL_MAX_SIZE(0x4030C000 - CONFIG_SPL_TEXT_BASE)
-- 
1.7.9.5

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot