Commit 5e604e2c authored by Nandor Han's avatar Nandor Han Committed by Stefano Babic
Browse files

board: ge: bx50v3: detect the monitor type by reading VPD earlier



Move the VPD reading earlier in order to establish the monitor
type as soon as possible.

The configuration of the specific environment variables needs to be
done later after the environment is configured.
Signed-off-by: default avatarNandor Han <nandor.han@ge.com>
Signed-off-by: Sebastian Reichel's avatarSebastian Reichel <sebastian.reichel@collabora.co.uk>
parent 70168a73
......@@ -33,6 +33,11 @@
#include "../../../drivers/net/e1000.h"
DECLARE_GLOBAL_DATA_PTR;
struct vpd_cache;
static int confidx = 3; /* Default to b850v3. */
static struct vpd_cache vpd;
#ifndef CONFIG_SYS_I2C_EEPROM_ADDR
# define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
# define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
......@@ -619,7 +624,6 @@ static void process_vpd(struct vpd_cache *vpd)
static int read_vpd(uint eeprom_bus)
{
struct vpd_cache vpd;
int res;
int size = 1024;
uint8_t *data;
......@@ -639,7 +643,6 @@ static int read_vpd(uint eeprom_bus)
if (res == 0) {
memset(&vpd, 0, sizeof(vpd));
vpd_reader(size, data, &vpd, vpd_callback);
process_vpd(&vpd);
}
free(data);
......@@ -689,8 +692,31 @@ int board_early_init_f(void)
return 0;
}
static void set_confidx(const struct vpd_cache* vpd)
{
switch (vpd->product_id) {
case VPD_PRODUCT_B450:
confidx = 1;
break;
case VPD_PRODUCT_B650:
confidx = 2;
break;
case VPD_PRODUCT_B850:
confidx = 3;
break;
}
}
int board_init(void)
{
setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
setup_i2c(3, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info3);
read_vpd(CONFIG_SYS_I2C_EEPROM_BUS);
set_confidx(&vpd);
gpio_direction_output(SUS_S3_OUT, 1);
gpio_direction_output(WIFI_EN, 1);
#if defined(CONFIG_VIDEO_IPUV3)
......@@ -705,10 +731,6 @@ int board_init(void)
#ifdef CONFIG_MXC_SPI
setup_spi();
#endif
setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
setup_i2c(3, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info3);
return 0;
}
......@@ -774,7 +796,7 @@ void pmic_init(void)
int board_late_init(void)
{
read_vpd(CONFIG_SYS_I2C_EEPROM_BUS);
process_vpd(&vpd);
#ifdef CONFIG_CMD_BMODE
add_board_boot_modes(board_boot_modes);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment