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

Lokesh Vutla lokeshvutla at ti.com
Wed Nov 6 14:25:43 CET 2013


On Wednesday 06 November 2013 06:08 PM, Vaibhav Bedia wrote:
> On Mon, Nov 4, 2013 at 11:20 PM, Lokesh Vutla <lokeshvutla at ti.com> wrote:
>> From: Sekhar Nori <nsekhar at ti.com>
>>
>> Add support for reading onboard EEPROM to enable
>> board detection.
>>
>> Signed-off-by: Sekhar Nori <nsekhar at ti.com>
>> Signed-off-by: Lokesh Vutla <lokeshvutla at 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_END    0x40340000
>>  #define SRAM_SCRATCH_SPACE_ADDR        0x4033C000
>> +#define AM4372_BOARD_NAME_START        SRAM_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
> 



More information about the U-Boot mailing list