Kapil Porwal has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/73182 )
Change subject: mb/google/rex: Use gpio padbased table override ......................................................................
mb/google/rex: Use gpio padbased table override
In order to improve gpio merge mechanism. Change iteration override to padbased table override. And the following patch will change fw config override with ramstage gpio table override.
Port of commit 7aef2b1294f2 ("mb/google/nissa: Apply gpio padbased table override")
BUG=none TEST=Verify devbeep at depthcharge console
Signed-off-by: Kapil Porwal kapilporwal@google.com Change-Id: I2ee86bbec7d25a35d726f29ad79891f1054bf52c --- M src/mainboard/google/rex/mainboard.c M src/mainboard/google/rex/variants/baseboard/include/baseboard/variants.h 2 files changed, 37 insertions(+), 4 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/82/73182/1
diff --git a/src/mainboard/google/rex/mainboard.c b/src/mainboard/google/rex/mainboard.c index bb64c63..c1c22db 100644 --- a/src/mainboard/google/rex/mainboard.c +++ b/src/mainboard/google/rex/mainboard.c @@ -8,16 +8,28 @@ #include <drivers/wwan/fm/chip.h> #include <ec/ec.h> #include <fw_config.h> +#include <stdlib.h> #include <vendorcode/google/chromeos/chromeos.h>
WEAK_DEV_PTR(rp6_wwan);
+void __weak fw_config_gpio_padbased_override(struct pad_config *padbased_table) +{ + /* default implementation does nothing */ +} + static void mainboard_init(void *chip_info) { - const struct pad_config *pads; - size_t num; - pads = variant_gpio_table(&num); - gpio_configure_pads(pads, num); + struct pad_config *padbased_table; + const struct pad_config *base_pads; + size_t base_num; + + padbased_table = new_padbased_table(); + base_pads = variant_gpio_table(&base_num); + gpio_padbased_override(padbased_table, base_pads, base_num); + fw_config_gpio_padbased_override(padbased_table); + gpio_configure_pads_with_padbased(padbased_table); + free(padbased_table); }
void __weak variant_generate_s0ix_hook(enum s0ix_entry entry) diff --git a/src/mainboard/google/rex/variants/baseboard/include/baseboard/variants.h b/src/mainboard/google/rex/variants/baseboard/include/baseboard/variants.h index f3ace8a..b51517c 100644 --- a/src/mainboard/google/rex/variants/baseboard/include/baseboard/variants.h +++ b/src/mainboard/google/rex/variants/baseboard/include/baseboard/variants.h @@ -15,6 +15,7 @@ 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_romstage_gpio_table(size_t *num); +void fw_config_gpio_padbased_override(struct pad_config *padbased_table);
const struct mb_cfg *variant_memory_params(void); void variant_get_spd_info(struct mem_spd *spd_info);