Furquan Shaikh has uploaded this change for review. ( https://review.coreboot.org/27641
Change subject: mb/google/octopus: Use newly added gpio_configure_pads_with_override ......................................................................
mb/google/octopus: Use newly added gpio_configure_pads_with_override
This change updates mainboard_init to call gpio_configure_pads_with_override instead of gpio_configure_pads to allow variants to provide overrides for the GPIO config table provided by the baseboard.
BUG=b:111743717 TEST=Verified on phaser that GPIO config with and without this change is the same.
Change-Id: I494a950100e5ec82504d652ff6e8a75746456d1f Signed-off-by: Furquan Shaikh furquan@google.com --- M src/mainboard/google/octopus/mainboard.c M src/mainboard/google/octopus/variants/baseboard/gpio.c M src/mainboard/google/octopus/variants/baseboard/include/baseboard/variants.h M src/mainboard/google/octopus/variants/bip/gpio.c 4 files changed, 18 insertions(+), 7 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/41/27641/1
diff --git a/src/mainboard/google/octopus/mainboard.c b/src/mainboard/google/octopus/mainboard.c index eda44ba..4876d10 100644 --- a/src/mainboard/google/octopus/mainboard.c +++ b/src/mainboard/google/octopus/mainboard.c @@ -32,14 +32,18 @@ static void mainboard_init(void *chip_info) { int boardid; - const struct pad_config *pads; - size_t num; + const struct pad_config *base_pads; + const struct pad_config *override_pads; + size_t base_num, override_num;
boardid = board_id(); printk(BIOS_INFO, "Board ID: %d\n", boardid);
- pads = variant_gpio_table(&num); - gpio_configure_pads(pads, num); + base_pads = variant_base_gpio_table(&base_num); + override_pads = variant_override_gpio_table(&override_num); + + gpio_configure_pads_with_override(base_pads, base_num, + override_pads, override_num);
mainboard_ec_init(); } diff --git a/src/mainboard/google/octopus/variants/baseboard/gpio.c b/src/mainboard/google/octopus/variants/baseboard/gpio.c index 7b1075f..3dee892 100644 --- a/src/mainboard/google/octopus/variants/baseboard/gpio.c +++ b/src/mainboard/google/octopus/variants/baseboard/gpio.c @@ -281,12 +281,18 @@ PAD_NC(GPIO_210, DN_20K), };
-const struct pad_config *__weak variant_gpio_table(size_t *num) +const struct pad_config *__weak variant_base_gpio_table(size_t *num) { *num = ARRAY_SIZE(gpio_table); return gpio_table; }
+const struct pad_config *__weak variant_override_gpio_table(size_t *num) +{ + *num = 0; + return NULL; +} + /* GPIOs needed prior to ramstage. */ static const struct pad_config early_gpio_table[] = { PAD_CFG_GPI(GPIO_190, NONE, DEEP), /* PCH_WP_OD */ diff --git a/src/mainboard/google/octopus/variants/baseboard/include/baseboard/variants.h b/src/mainboard/google/octopus/variants/baseboard/include/baseboard/variants.h index 4c3fbbe..666e562 100644 --- a/src/mainboard/google/octopus/variants/baseboard/include/baseboard/variants.h +++ b/src/mainboard/google/octopus/variants/baseboard/include/baseboard/variants.h @@ -26,7 +26,8 @@
/* The next set of functions return the gpio table and fill in the number of * entries for each table. */ -const struct pad_config *variant_gpio_table(size_t *num); +const struct pad_config *variant_base_gpio_table(size_t *num); +const struct pad_config *variant_override_gpio_table(size_t *num); const struct pad_config *variant_early_gpio_table(size_t *num); const struct pad_config *variant_sleep_gpio_table(size_t *num, int slp_typ);
diff --git a/src/mainboard/google/octopus/variants/bip/gpio.c b/src/mainboard/google/octopus/variants/bip/gpio.c index 5f83ee4..18cb6d9 100644 --- a/src/mainboard/google/octopus/variants/bip/gpio.c +++ b/src/mainboard/google/octopus/variants/bip/gpio.c @@ -259,7 +259,7 @@ PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_210, 0, DEEP, NONE, HIZCRx0, DISPUPD), };
-const struct pad_config *variant_gpio_table(size_t *num) +const struct pad_config *variant_base_gpio_table(size_t *num) { *num = ARRAY_SIZE(gpio_table); return gpio_table;