[U-Boot] [PATCH 05/14] ARM: AM43XX: board: add support for reading onboard EEPROM
Vaibhav Bedia
vaibhav.bedia at gmail.com
Wed Nov 6 13:38:58 CET 2013
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?
> + /*
> + * 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