From fff7105e9221d83feb2f79fdf30cb60f7475bfa2 Mon Sep 17 00:00:00 2001 From: Aaron Durbin Date: Thu, 13 Jun 2013 17:29:36 -0700 Subject: [PATCH] slippy/falco/peppy: Fix SPD GPIO initialization. SPD GPIOs were being read prior to initialization in romstage_common. To fix, pass the copy_spd function to romstage_common, to be called at the appropriate time (after PCH init, before DRAM init). BUG=chrome-os-partner:20162. TEST=Manual. Test on peppy board with non-zero SPD GPIOs, verify correct SPD is selected. Change-Id: I2554813e56a58c8c81456f1a53cc8ce9c2030a73 Signed-off-by: Aaron Durbin Signed-off-by: Shawn Nematbakhsh Reviewed-on: https://gerrit.chromium.org/gerrit/58608 --- src/cpu/intel/haswell/haswell.h | 1 + src/cpu/intel/haswell/romstage.c | 3 +++ src/mainboard/google/falco/romstage.c | 4 +--- src/mainboard/google/peppy/romstage.c | 4 +--- src/mainboard/google/slippy/romstage.c | 4 +--- src/mainboard/intel/baskingridge/romstage.c | 1 + src/mainboard/intel/wtm2/romstage.c | 1 + 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/cpu/intel/haswell/haswell.h b/src/cpu/intel/haswell/haswell.h index db056dbff8..be2d05f3be 100644 --- a/src/cpu/intel/haswell/haswell.h +++ b/src/cpu/intel/haswell/haswell.h @@ -151,6 +151,7 @@ struct romstage_params { const void *gpio_map; const struct rcba_config_instruction *rcba_config; unsigned long bist; + void (*copy_spd)(struct pei_data *); }; void mainboard_romstage_entry(unsigned long bist); void romstage_common(const struct romstage_params *params); diff --git a/src/cpu/intel/haswell/romstage.c b/src/cpu/intel/haswell/romstage.c index 0cef888b49..5c381c092d 100644 --- a/src/cpu/intel/haswell/romstage.c +++ b/src/cpu/intel/haswell/romstage.c @@ -258,6 +258,9 @@ void romstage_common(const struct romstage_params *params) report_platform_info(); + if (params->copy_spd != NULL) + params->copy_spd(params->pei_data); + sdram_initialize(params->pei_data); #if CONFIG_COLLECT_TIMESTAMPS diff --git a/src/mainboard/google/falco/romstage.c b/src/mainboard/google/falco/romstage.c index 888394a789..e284491bbd 100644 --- a/src/mainboard/google/falco/romstage.c +++ b/src/mainboard/google/falco/romstage.c @@ -165,11 +165,9 @@ void mainboard_romstage_entry(unsigned long bist) .gpio_map = &mainboard_gpio_map, .rcba_config = &rcba_config[0], .bist = bist, + .copy_spd = copy_spd, }; - /* Prepare SPD data */ - copy_spd(&pei_data); - /* Call into the real romstage main with this board's attributes. */ romstage_common(&romstage_params); } diff --git a/src/mainboard/google/peppy/romstage.c b/src/mainboard/google/peppy/romstage.c index 0c4adc4b1e..46c4f0bbd1 100644 --- a/src/mainboard/google/peppy/romstage.c +++ b/src/mainboard/google/peppy/romstage.c @@ -158,11 +158,9 @@ void mainboard_romstage_entry(unsigned long bist) .gpio_map = &mainboard_gpio_map, .rcba_config = &rcba_config[0], .bist = bist, + .copy_spd = copy_spd, }; - /* Prepare SPD data */ - copy_spd(&pei_data); - /* Call into the real romstage main with this board's attributes. */ romstage_common(&romstage_params); } diff --git a/src/mainboard/google/slippy/romstage.c b/src/mainboard/google/slippy/romstage.c index b7ae209e05..a93196a95b 100644 --- a/src/mainboard/google/slippy/romstage.c +++ b/src/mainboard/google/slippy/romstage.c @@ -191,11 +191,9 @@ void mainboard_romstage_entry(unsigned long bist) .gpio_map = &mainboard_gpio_map, .rcba_config = &rcba_config[0], .bist = bist, + .copy_spd = copy_spd, }; - /* Prepare SPD data */ - copy_spd(&pei_data); - /* Call into the real romstage main with this board's attributes. */ romstage_common(&romstage_params); diff --git a/src/mainboard/intel/baskingridge/romstage.c b/src/mainboard/intel/baskingridge/romstage.c index 2be4b91fe3..a0b242badf 100644 --- a/src/mainboard/intel/baskingridge/romstage.c +++ b/src/mainboard/intel/baskingridge/romstage.c @@ -140,6 +140,7 @@ void mainboard_romstage_entry(unsigned long bist) .gpio_map = &mainboard_gpio_map, .rcba_config = &rcba_config[0], .bist = bist, + .copy_spd = NULL, }; /* Call into the real romstage main with this board's attributes. */ diff --git a/src/mainboard/intel/wtm2/romstage.c b/src/mainboard/intel/wtm2/romstage.c index cd5fad712f..fee02728ff 100644 --- a/src/mainboard/intel/wtm2/romstage.c +++ b/src/mainboard/intel/wtm2/romstage.c @@ -131,6 +131,7 @@ void mainboard_romstage_entry(unsigned long bist) .gpio_map = &mainboard_gpio_map, .rcba_config = &rcba_config[0], .bist = bist, + .copy_spd = NULL, }; /* Call into the real romstage main with this board's attributes. */