diff --git a/src/mainboard/google/reef/mainboard.c b/src/mainboard/google/reef/mainboard.c index 90ffe136d3..7f5a1b3857 100644 --- a/src/mainboard/google/reef/mainboard.c +++ b/src/mainboard/google/reef/mainboard.c @@ -29,6 +29,14 @@ #include #include +/* override specific gpio by sku id */ +const struct pad_config __attribute__((weak)) +*variant_sku_gpio_table(size_t *num) +{ + *num = 0; + return NULL; +} + static void mainboard_init(void *chip_info) { int boardid; @@ -41,6 +49,9 @@ static void mainboard_init(void *chip_info) pads = variant_gpio_table(&num); gpio_configure_pads(pads, num); + pads = variant_sku_gpio_table(&num); + gpio_configure_pads(pads, num); + mainboard_ec_init(); variant_board_ec_set_skuid(); diff --git a/src/mainboard/google/reef/variants/baseboard/include/baseboard/variants.h b/src/mainboard/google/reef/variants/baseboard/include/baseboard/variants.h index 0f2c37653f..8611ecd4f3 100644 --- a/src/mainboard/google/reef/variants/baseboard/include/baseboard/variants.h +++ b/src/mainboard/google/reef/variants/baseboard/include/baseboard/variants.h @@ -29,6 +29,7 @@ uint8_t sku_strapping_value(void); const struct pad_config *variant_gpio_table(size_t *num); const struct pad_config *variant_early_gpio_table(size_t *num); const struct pad_config *variant_sleep_gpio_table(u8 slp_typ, size_t *num); +const struct pad_config *variant_sku_gpio_table(size_t *num); /* Baseboard default swizzle. Can be reused if swizzle is same. */ extern const struct lpddr4_swizzle_cfg baseboard_lpddr4_swizzle; diff --git a/src/mainboard/google/reef/variants/coral/mainboard.c b/src/mainboard/google/reef/variants/coral/mainboard.c index 5daf96cabd..a45afc7070 100644 --- a/src/mainboard/google/reef/variants/coral/mainboard.c +++ b/src/mainboard/google/reef/variants/coral/mainboard.c @@ -19,6 +19,7 @@ #include #include #include +#include enum { SKU_0_ASTRONAUT = 0, @@ -122,3 +123,34 @@ const char *mainboard_vbt_filename(void) break; } } + +static const struct pad_config nasher_gpio_tables[] = { + /* AVS_DMIC_CLK_A1 */ + PAD_CFG_NF_IOSSTATE(GPIO_79, NATIVE, DEEP, NF1, Tx1RXDCRx0), + /* AVS_DMIC_CLK_B1 */ + PAD_CFG_NF_IOSSTATE(GPIO_80, NATIVE, DEEP, NF1, Tx1RXDCRx0), +}; + +const struct pad_config *variant_sku_gpio_table(size_t *num) +{ + int sku_id = variant_board_sku(); + const struct pad_config *board_gpio_tables; + + switch (sku_id) { + case SKU_160_NASHER: + case SKU_161_NASHER: + case SKU_162_NASHER: + case SKU_163_NASHER360: + case SKU_164_NASHER360: + case SKU_165_NASHER360: + case SKU_166_NASHER360: + *num = ARRAY_SIZE(nasher_gpio_tables); + board_gpio_tables = nasher_gpio_tables; + break; + default: + *num = 0; + board_gpio_tables = NULL; + break; + } + return board_gpio_tables; +}