mb/google/brya: Add variant_init and variant_finalize callbacks

Some brya variants may need to initialize and finalize some
variant-specific devices during ramstage, therefore add the
commonly-used hooks and callbacks to support this.

Signed-off-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Change-Id: Iede6dc5a5b9a7385fedd59d4eeaaba118eff0e20
Reviewed-on: https://review.coreboot.org/c/coreboot/+/62382
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
Tim Wawrzynczak 2022-02-17 11:40:54 -07:00 committed by Felix Held
parent daed4ea1d0
commit a46056fa9a
2 changed files with 21 additions and 1 deletions

View File

@ -7,11 +7,11 @@
#include <drivers/tpm/cr50.h> #include <drivers/tpm/cr50.h>
#include <drivers/wwan/fm/chip.h> #include <drivers/wwan/fm/chip.h>
#include <ec/ec.h> #include <ec/ec.h>
#include <soc/ramstage.h>
#include <fw_config.h> #include <fw_config.h>
#include <security/tpm/tss.h> #include <security/tpm/tss.h>
#include <soc/gpio.h> #include <soc/gpio.h>
#include <soc/ramstage.h> #include <soc/ramstage.h>
#include <stdio.h>
WEAK_DEV_PTR(rp6_wwan); WEAK_DEV_PTR(rp6_wwan);
@ -64,6 +64,11 @@ __weak void variant_update_soc_chip_config(struct soc_intel_alderlake_config *co
/* default implementation does nothing */ /* default implementation does nothing */
} }
__weak void variant_init(void)
{
/* default implementation does nothing */
}
static void mainboard_init(void *chip_info) static void mainboard_init(void *chip_info)
{ {
const struct pad_config *base_pads; const struct pad_config *base_pads;
@ -74,6 +79,7 @@ static void mainboard_init(void *chip_info)
override_pads = variant_gpio_override_table(&override_num); override_pads = variant_gpio_override_table(&override_num);
gpio_configure_pads_with_override(base_pads, base_num, override_pads, override_num); gpio_configure_pads_with_override(base_pads, base_num, override_pads, override_num);
variant_init();
variant_devtree_update(); variant_devtree_update();
} }
@ -174,7 +180,18 @@ static void mainboard_enable(struct device *dev)
dev->ops->acpi_fill_ssdt = mainboard_fill_ssdt; dev->ops->acpi_fill_ssdt = mainboard_fill_ssdt;
} }
void __weak variant_finalize(void)
{
}
static void mainboard_final(void *chip_info)
{
variant_finalize();
}
struct chip_operations mainboard_ops = { struct chip_operations mainboard_ops = {
.init = mainboard_init, .init = mainboard_init,
.enable_dev = mainboard_enable, .enable_dev = mainboard_enable,
.final = mainboard_final,
}; };

View File

@ -82,4 +82,7 @@ void variant_update_psys_power_limits(const struct cpu_power_limits *limits,
size_t num_entries, size_t num_entries,
const struct psys_config *config); const struct psys_config *config);
void variant_init(void);
void variant_finalize(void);
#endif /*__BASEBOARD_VARIANTS_H__ */ #endif /*__BASEBOARD_VARIANTS_H__ */