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>
This commit is contained in:
Julius Werner 2020-08-31 14:32:47 -07:00
parent 32c26493fb
commit 75cf456674
1 changed files with 25 additions and 6 deletions

View File

@ -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;
}