summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2020-08-31 14:32:47 -0700
committerJulius Werner <jwerner@chromium.org>2020-09-03 00:35:49 +0000
commit75cf4566742f24b92c7bd9d5bb41c70aed66826b (patch)
tree1be16c064111630663ae317c756bb2599c24e82b
parent32c26493fbaaf0a3e44db670f69b3094f4fcd110 (diff)
downloadcoreboot-75cf4566742f24b92c7bd9d5bb41c70aed66826b.tar.gz
coreboot-75cf4566742f24b92c7bd9d5bb41c70aed66826b.tar.bz2
coreboot-75cf4566742f24b92c7bd9d5bb41c70aed66826b.zip
trogdor: Shuffle RAM and SKU ID pins (again)
We're moving a lot of pins around on Trogdor again. For firmware this only affects the RAM and SKU strapping ID pins. Since there are quite a few of the old devices in circulation this time and some people seem to care about mosys RAM information working, let's actually check the board revision and support both cases this time. Signed-off-by: Julius Werner <jwerner@chromium.org> Change-Id: If7728d8ea4b7f6e7ff6721ade90f975f6efd5ddd Reviewed-on: https://review.coreboot.org/c/coreboot/+/44949 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Douglas Anderson <dianders@chromium.org> Reviewed-by: Philip Chen <philipchen@google.com> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r--src/mainboard/google/trogdor/boardid.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/src/mainboard/google/trogdor/boardid.c b/src/mainboard/google/trogdor/boardid.c
index c1a48925fa66..f60dddbeeb78 100644
--- a/src/mainboard/google/trogdor/boardid.c
+++ b/src/mainboard/google/trogdor/boardid.c
@@ -2,6 +2,7 @@
#include <boardid.h>
#include <gpio.h>
+#include <types.h>
uint32_t board_id(void)
{
@@ -15,14 +16,27 @@ uint32_t board_id(void)
return id;
}
+/* Whether a revision was built before or after the great pin migration of August 2020. */
+static bool use_old_pins(void)
+{
+ return ((CONFIG(BOARD_GOOGLE_TROGDOR) && board_id() < 2) ||
+ (CONFIG(BOARD_GOOGLE_LAZOR) && board_id() < 3) ||
+ (CONFIG(BOARD_GOOGLE_POMPOM) && board_id() < 1));
+}
+
uint32_t ram_code(void)
{
static uint32_t id = UNDEFINED_STRAPPING_ID;
- const gpio_t pins[] = {[2] = GPIO(13), [1] = GPIO(19), [0] = GPIO(29)};
+ const gpio_t old_pins[] = {[2] = GPIO(13), [1] = GPIO(19), [0] = GPIO(29)};
+ const gpio_t pins[] = {[2] = GPIO(5), [1] = GPIO(3), [0] = GPIO(1)};
- if (id == UNDEFINED_STRAPPING_ID)
- id = gpio_base2_value(pins, ARRAY_SIZE(pins));
+ if (id == UNDEFINED_STRAPPING_ID) {
+ if (use_old_pins())
+ id = gpio_base2_value(old_pins, ARRAY_SIZE(old_pins));
+ else
+ id = gpio_base2_value(pins, ARRAY_SIZE(pins));
+ }
return id;
}
@@ -31,10 +45,15 @@ uint32_t sku_id(void)
{
static uint32_t id = UNDEFINED_STRAPPING_ID;
- const gpio_t pins[] = {[2] = GPIO(20), [1] = GPIO(90), [0] = GPIO(105)};
+ const gpio_t old_pins[] = {[2] = GPIO(20), [1] = GPIO(90), [0] = GPIO(105)};
+ const gpio_t pins[] = {[2] = GPIO(2), [1] = GPIO(90), [0] = GPIO(58)};
- if (id == UNDEFINED_STRAPPING_ID)
- id = gpio_base2_value(pins, ARRAY_SIZE(pins));
+ if (id == UNDEFINED_STRAPPING_ID) {
+ if (use_old_pins())
+ id = gpio_base2_value(old_pins, ARRAY_SIZE(old_pins));
+ else
+ id = gpio_base2_value(pins, ARRAY_SIZE(pins));
+ }
return id;
}