Felix Held has submitted this change. ( https://review.coreboot.org/c/coreboot/+/42339 )
Change subject: soc/amd/picasso: fix build if PICASSO_UART is unset ......................................................................
soc/amd/picasso: fix build if PICASSO_UART is unset
This change includes uart.c in bootblock, romstage, ramstage and verstage unconditionally because this file is handling more than just the UART console configuration. This allows boards to take advantage of picasso_uart_mmio_ops even if PICASSO_UART is not selected. uart_platform_base and uart_platform_refclk mustn't be provided if PICASSO_UART is unset, so add an #if around those functions.
BUG=b:158346697
TEST=Mandolin builds again.
Change-Id: If1173034b0d2ed32f77241768e1e8abb208aac3a Signed-off-by: Furquan Shaikh furquan@google.com Signed-off-by: Felix Held felix-coreboot@felixheld.de Reviewed-on: https://review.coreboot.org/c/coreboot/+/42339 Reviewed-by: Marshall Dawson marshalldawson3rd@gmail.com Reviewed-by: Aaron Durbin adurbin@chromium.org Reviewed-by: Raul Rangel rrangel@chromium.org Tested-by: build bot (Jenkins) no-reply@coreboot.org --- M src/soc/amd/picasso/Makefile.inc M src/soc/amd/picasso/uart.c 2 files changed, 21 insertions(+), 9 deletions(-)
Approvals: build bot (Jenkins): Verified Aaron Durbin: Looks good to me, approved Furquan Shaikh: Looks good to me, approved Marshall Dawson: Looks good to me, approved Raul Rangel: Looks good to me, approved
diff --git a/src/soc/amd/picasso/Makefile.inc b/src/soc/amd/picasso/Makefile.inc index 03ce272..9894877 100644 --- a/src/soc/amd/picasso/Makefile.inc +++ b/src/soc/amd/picasso/Makefile.inc @@ -15,7 +15,7 @@ bootblock-y += aoac.c bootblock-y += southbridge.c bootblock-y += i2c.c -bootblock-$(CONFIG_PICASSO_UART) += uart.c +bootblock-y += uart.c bootblock-y += tsc_freq.c bootblock-y += gpio.c bootblock-y += smi_util.c @@ -26,7 +26,7 @@ romstage-y += gpio.c romstage-y += pmutil.c romstage-y += memmap.c -romstage-$(CONFIG_PICASSO_UART) += uart.c +romstage-y += uart.c romstage-y += tsc_freq.c romstage-y += aoac.c romstage-y += southbridge.c @@ -40,7 +40,7 @@ verstage-y += pmutil.c verstage-y += config.c verstage-y += aoac.c -verstage-$(CONFIG_PICASSO_UART) += uart.c +verstage-y += uart.c verstage-y += tsc_freq.c
ramstage-y += i2c.c @@ -60,7 +60,7 @@ ramstage-y += memmap.c ramstage-$(CONFIG_HAVE_SMI_HANDLER) += smi.c ramstage-$(CONFIG_HAVE_SMI_HANDLER) += smi_util.c -ramstage-$(CONFIG_PICASSO_UART) += uart.c +ramstage-y += uart.c ramstage-y += usb.c ramstage-y += tsc_freq.c ramstage-y += finalize.c diff --git a/src/soc/amd/picasso/uart.c b/src/soc/amd/picasso/uart.c index 6439efb..f523bce 100644 --- a/src/soc/amd/picasso/uart.c +++ b/src/soc/amd/picasso/uart.c @@ -30,6 +30,16 @@ } }, };
+/* + * Don't provide uart_platform_base and uart_platform_refclk functions if PICASSO_UART + * isn't selected. Those two functions are used by the console UART driver and need to be + * provided exactly once and only by the UART that is used for console. + * + * TODO: Replace the #if block by factoring out the two functions into a different compilation + * unit. + */ +#if CONFIG(PICASSO_UART) + uintptr_t uart_platform_base(int idx) { if (idx < 0 || idx >= ARRAY_SIZE(uart_info)) @@ -38,6 +48,13 @@ return uart_info[idx].base; }
+unsigned int uart_platform_refclk(void) +{ + return CONFIG(PICASSO_UART_48MZ) ? 48000000 : 115200 * 16; +} + +#endif /* PICASSO_UART */ + void clear_uart_legacy_config(void) { write16((void *)FCH_UART_LEGACY_DECODE, 0); @@ -75,11 +92,6 @@ } }
-unsigned int uart_platform_refclk(void) -{ - return CONFIG(PICASSO_UART_48MZ) ? 48000000 : 115200 * 16; -} - static const char *uart_acpi_name(const struct device *dev) { switch (dev->path.mmio.addr) {