mainboard/google/reef: add board SKU'ing support
There are 2 gpios on reef-like boards that can be composed into a SKU. Add support for identifying the SKU value using the base 3 gpio logic. Also export the SKU information to the SMBIOS type 1 table. BUG=chrome-os-partner:59887,chrome-os-partner:60494 BRANCH=reef Change-Id: I8bb94207b0b7833d758054a817b655e248f1b239 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/17771 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
This commit is contained in:
parent
26174c97fe
commit
2b3a6bee77
|
@ -19,9 +19,12 @@
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
#include <ec/ec.h>
|
#include <ec/ec.h>
|
||||||
|
#include <gpio.h>
|
||||||
#include <nhlt.h>
|
#include <nhlt.h>
|
||||||
|
#include <smbios.h>
|
||||||
#include <soc/gpio.h>
|
#include <soc/gpio.h>
|
||||||
#include <soc/nhlt.h>
|
#include <soc/nhlt.h>
|
||||||
|
#include <string.h>
|
||||||
#include <vendorcode/google/chromeos/chromeos.h>
|
#include <vendorcode/google/chromeos/chromeos.h>
|
||||||
#include <variant/ec.h>
|
#include <variant/ec.h>
|
||||||
#include <variant/gpio.h>
|
#include <variant/gpio.h>
|
||||||
|
@ -41,6 +44,35 @@ static void mainboard_init(void *chip_info)
|
||||||
mainboard_ec_init();
|
mainboard_ec_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* There are 2 pins on reef-like boards that can be used for SKU'ing
|
||||||
|
* board differences. They each have optional stuffing for a pullup and
|
||||||
|
* a pulldown. This way we can generate 9 different values with the
|
||||||
|
* 2 pins.
|
||||||
|
*/
|
||||||
|
static int board_sku(void)
|
||||||
|
{
|
||||||
|
static int board_sku_num = -1;
|
||||||
|
gpio_t board_sku_gpios[] = {
|
||||||
|
[1] = GPIO_17, [0] = GPIO_16,
|
||||||
|
};
|
||||||
|
const size_t num = ARRAY_SIZE(board_sku_gpios);
|
||||||
|
|
||||||
|
if (board_sku_num < 0)
|
||||||
|
board_sku_num = gpio_base3_value(board_sku_gpios, num);
|
||||||
|
|
||||||
|
return board_sku_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *smbios_mainboard_sku(void)
|
||||||
|
{
|
||||||
|
static char sku_str[5]; /* sku[0-8] */
|
||||||
|
|
||||||
|
snprintf(sku_str, sizeof(sku_str), "sku%d", board_sku());
|
||||||
|
|
||||||
|
return sku_str;
|
||||||
|
}
|
||||||
|
|
||||||
void __attribute__((weak)) variant_nhlt_oem_overrides(const char **oem_id,
|
void __attribute__((weak)) variant_nhlt_oem_overrides(const char **oem_id,
|
||||||
const char **oem_table_id,
|
const char **oem_table_id,
|
||||||
uint32_t *oem_revision)
|
uint32_t *oem_revision)
|
||||||
|
|
Loading…
Reference in New Issue