summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 32cb872)
raw | patch | inline | side by side (parent: 32cb872)
author | Nishanth Menon <nm@ti.com> | |
Tue, 10 Nov 2015 00:34:45 +0000 (18:34 -0600) | ||
committer | Tero Kristo <t-kristo@ti.com> | |
Tue, 10 Nov 2015 07:54:46 +0000 (09:54 +0200) |
Now that we have a generic TI eeprom logic which can be reused accross
platforms, reuse the same.
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Steven Kipisz <s-kipisz2@ti.com>
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
platforms, reuse the same.
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Steven Kipisz <s-kipisz2@ti.com>
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
arch/arm/Kconfig | patch | blob | history | |
board/ti/am43xx/board.c | patch | blob | history | |
board/ti/am43xx/board.h | patch | blob | history | |
board/ti/am43xx/mux.c | patch | blob | history |
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 1c0e0df6339dc827060581e6bc6e6a203ca45cc2..952cf6c5520667887977a8be0440a083c6c2b1fa 100644 (file)
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
bool "Support am43xx_evm"
select CPU_V7
select SUPPORT_SPL
+ select CREATE_BOARD_SYMLINK
config TARGET_BAV335X
bool "Support bav335x"
index ce9538e0378f35ab368d6343aacb8f5742b2193c..32f309b87fd631b56fc27815febe676bdc11c714 100644 (file)
--- a/board/ti/am43xx/board.c
+++ b/board/ti/am43xx/board.c
#include <asm/arch/ddr_defs.h>
#include <asm/arch/gpio.h>
#include <asm/emif.h>
+#include <board-common/board_detect.h>
#include "board.h"
#include <power/pmic.h>
#include <power/tps65218.h>
/*
* Read header information from EEPROM into global structure.
*/
-static int read_eeprom(struct am43xx_board_id *header)
+static int __maybe_unused read_eeprom(struct ti_am_eeprom **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;
-
- strncpy(am43xx_board_rev, (char *)header->version, sizeof(header->version));
- am43xx_board_rev[sizeof(header->version)] = 0;
-
- return 0;
+ return ti_i2c_eeprom_am_get(-1, CONFIG_SYS_I2C_EEPROM_ADDR, header);
}
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
const struct dpll_params *get_dpll_ddr_params(void)
{
int ind = get_sys_clk_index();
+ struct ti_am_eeprom *header;
+
+ if (read_eeprom(&header) < 0)
+ return NULL;
if (board_is_eposevm())
return &epos_evm_dpll_ddr[ind];
else if (board_is_idk())
return &idk_dpll_ddr;
- printf(" Board '%s' not supported\n", am43xx_board_name);
+ printf(" Board '%s' not supported\n", header->name);
return NULL;
}
}
}
+void gpi2c_init(void)
+{
+ enable_i2c0_pin_mux();
+ i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED, CONFIG_SYS_OMAP24_I2C_SLAVE);
+}
+
void scale_vcores(void)
{
const struct dpll_params *mpu_params;
- struct am43xx_board_id header;
+ struct ti_am_eeprom *header;
- enable_i2c0_pin_mux();
- i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED, CONFIG_SYS_OMAP24_I2C_SLAVE);
if (read_eeprom(&header) < 0)
puts("Could not get board ID.\n");
name = "AM43__SK";
break;
}
- strcpy(am43xx_board_name, name);
- strcpy(am43xx_board_rev, rev);
+ ti_i2c_eeprom_am_set(name, rev);
}
u32 rtc_only_get_board_type(void)
{
+ struct ti_am_eeprom *header;
+
+ /* Should not read the eeprom since we already set up properties */
+ if (read_eeprom(&header) < 0)
+ return -1;
+
if (board_is_eposevm())
return RTC_BOARD_EPOS;
- else if (board_is_evm_14_or_later())
+ else if (board_is_evm_14_or_later(header))
return RTC_BOARD_EVM14;
- else if (board_is_evm_12_or_later())
+ else if (board_is_evm_12_or_later(header))
return RTC_BOARD_EVM12;
else if (board_is_gpevm())
return RTC_BOARD_GPEVM;
void sdram_init(void)
{
+ struct ti_am_eeprom *header;
+
+ if (read_eeprom(&header) < 0)
+ return;
/*
* EPOS EVM has 1GB LPDDR2 connected to EMIF.
* GP EMV has 1GB DDR3 connected to EMIF
*/
if (board_is_eposevm()) {
config_ddr(0, &ioregs_lpddr2, NULL, NULL, &emif_regs_lpddr2, 0);
- } else if (board_is_evm_14_or_later()) {
+ } else if (board_is_evm_14_or_later(header)) {
enable_vtt_regulator();
config_ddr(0, &ioregs_ddr3, NULL, NULL,
&ddr3_emif_regs_400Mhz_production, 0);
- } else if (board_is_evm_12_or_later()) {
+ } else if (board_is_evm_12_or_later(header)) {
enable_vtt_regulator();
config_ddr(0, &ioregs_ddr3, NULL, NULL,
&ddr3_emif_regs_400Mhz_beta, 0);
int board_late_init(void)
{
#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
- char safe_string[HDR_NAME_LEN + 1];
- struct am43xx_board_id header;
+ struct ti_am_eeprom_printable p;
+ int rc;
- if (read_eeprom(&header) < 0)
- puts("Could not get board ID.\n");
-
- /* Now set variables based on the header. */
- strncpy(safe_string, (char *)header.name, sizeof(header.name));
- safe_string[sizeof(header.name)] = 0;
- setenv("board_name", safe_string);
+ rc = ti_i2c_eeprom_am_get_print(-1, CONFIG_SYS_I2C_EEPROM_ADDR, &p);
- strncpy(safe_string, (char *)header.version, sizeof(header.version));
- safe_string[sizeof(header.version)] = 0;
- setenv("board_rev", safe_string);
+ if (rc)
+ puts("Could not get board ID.\n");
+ set_board_info_env(p.name, p.version, p.serial);
#endif
return 0;
}
index eb9493e191c66e53e31b71a662fc5249e87ac3d6..9a6eeac4ac1ffc94739eb407905770c9234eb821 100644 (file)
--- a/board/ti/am43xx/board.h
+++ b/board/ti/am43xx/board.h
#include <asm/arch/omap.h>
-static char *const am43xx_board_name = (char *)AM4372_BOARD_NAME_START;
-static char *const am43xx_board_rev = (char *)AM4372_BOARD_VERSION_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
-
-#define DEV_ATTR_MAX_OFFSET 5
-#define DEV_ATTR_MIN_OFFSET 0
-
-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];
-};
+#define DEV_ATTR_MAX_OFFSET 5
+#define DEV_ATTR_MIN_OFFSET 0
static inline int board_is_eposevm(void)
{
- return !strncmp(am43xx_board_name, "AM43EPOS", HDR_NAME_LEN);
+ return board_am_is("AM43EPOS");
}
static inline int board_is_gpevm(void)
{
- return !strncmp(am43xx_board_name, "AM43__GP", HDR_NAME_LEN);
+ return board_am_is("AM43__GP");
}
static inline int board_is_sk(void)
{
- return !strncmp(am43xx_board_name, "AM43__SK", HDR_NAME_LEN);
+ return board_am_is("AM43__SK");
}
static inline int board_is_idk(void)
{
- return !strncmp(am43xx_board_name, "AM43_IDK", HDR_NAME_LEN);
+ return board_am_is("AM43_IDK");
}
-static inline int board_is_evm_14_or_later(void)
+static inline int board_is_evm_14_or_later(struct ti_am_eeprom *header)
{
- return (board_is_gpevm() && strncmp("1.4", am43xx_board_rev, 3) <= 0);
+ return (board_is_gpevm() && strncmp("1.4", header->version, 3) <= 0);
}
-static inline int board_is_evm_12_or_later(void)
+static inline int board_is_evm_12_or_later(struct ti_am_eeprom *header)
{
- return (board_is_gpevm() && strncmp("1.2", am43xx_board_rev, 3) <= 0);
+ return (board_is_gpevm() && strncmp("1.2", header->version, 3) <= 0);
}
void enable_uart0_pin_mux(void);
diff --git a/board/ti/am43xx/mux.c b/board/ti/am43xx/mux.c
index 510477dad9e29f8e3419ccf5f89c199d4d9e4000..055a35fb95310029311a6005723c987fd94e8ee4 100644 (file)
--- a/board/ti/am43xx/mux.c
+++ b/board/ti/am43xx/mux.c
#include <common.h>
#include <asm/arch/sys_proto.h>
#include <asm/arch/mux.h>
+#include <board-common/board_detect.h>
#include "board.h"
static struct module_pin_mux rmii1_pin_mux[] = {