diff options
author | Raul E Rangel <rrangel@chromium.org> | 2020-06-11 16:53:57 -0600 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2020-06-14 16:53:44 +0000 |
commit | 5591b91b1a3cc3c16621027527182940ed540599 (patch) | |
tree | 243c6e7883dc755918dd275710a1875b2ff69b65 | |
parent | c64755bcd70031620e606d30fd095ef6362b5975 (diff) | |
download | coreboot-5591b91b1a3cc3c16621027527182940ed540599.tar.xz |
soc/amd/picasso/aoac: Add wait_for_aoac_enabled
This way drivers can wait for their devices to be enabled.
I also rewrote enable_aoac_devices to take advantage of
wait_for_aoac_enabled.
BUG=b:153001807
TEST=Trembyle builds
Signed-off-by: Raul E Rangel <rrangel@chromium.org>
Change-Id: I8e653c857e164f90439e0028e08aa9608d4eca94
Reviewed-on: https://review.coreboot.org/c/coreboot/+/42326
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
-rw-r--r-- | src/soc/amd/picasso/aoac.c | 33 | ||||
-rw-r--r-- | src/soc/amd/picasso/include/soc/southbridge.h | 1 |
2 files changed, 12 insertions, 22 deletions
diff --git a/src/soc/amd/picasso/aoac.c b/src/soc/amd/picasso/aoac.c index 2e00d98900..2bf99845c9 100644 --- a/src/soc/amd/picasso/aoac.c +++ b/src/soc/amd/picasso/aoac.c @@ -63,37 +63,26 @@ bool is_aoac_device_enabled(int dev) return false; } -static void enable_aoac_console_uart(void) +void wait_for_aoac_enabled(int dev) { - if (!CONFIG(PICASSO_UART)) - return; - - power_on_aoac_device(FCH_AOAC_UART_FOR_CONSOLE); -} - -static bool is_aoac_console_uart_enabled(void) -{ - if (!CONFIG(PICASSO_UART)) - return true; - - return is_aoac_device_enabled(FCH_AOAC_UART_FOR_CONSOLE); + while (!is_aoac_device_enabled(dev)) + udelay(100); } void enable_aoac_devices(void) { - bool status; int i; for (i = 0; i < ARRAY_SIZE(aoac_devs); i++) power_on_aoac_device(aoac_devs[i]); - enable_aoac_console_uart(); + + if (CONFIG(PICASSO_UART)) + power_on_aoac_device(FCH_AOAC_UART_FOR_CONSOLE); /* Wait for AOAC devices to indicate power and clock OK */ - do { - udelay(100); - status = true; - for (i = 0; i < ARRAY_SIZE(aoac_devs); i++) - status &= is_aoac_device_enabled(aoac_devs[i]); - status &= is_aoac_console_uart_enabled(); - } while (!status); + for (i = 0; i < ARRAY_SIZE(aoac_devs); i++) + wait_for_aoac_enabled(aoac_devs[i]); + + if (CONFIG(PICASSO_UART)) + wait_for_aoac_enabled(FCH_AOAC_UART_FOR_CONSOLE); } diff --git a/src/soc/amd/picasso/include/soc/southbridge.h b/src/soc/amd/picasso/include/soc/southbridge.h index 7265d30a77..97b0ab4d35 100644 --- a/src/soc/amd/picasso/include/soc/southbridge.h +++ b/src/soc/amd/picasso/include/soc/southbridge.h @@ -280,6 +280,7 @@ void enable_aoac_devices(void); bool is_aoac_device_enabled(int dev); void power_on_aoac_device(int dev); void power_off_aoac_device(int dev); +void wait_for_aoac_enabled(int dev); void sb_clk_output_48Mhz(void); void sb_enable(struct device *dev); void southbridge_final(void *chip_info); |