diff options
author | Nico Huber <nico.huber@secunet.com> | 2021-07-27 13:46:55 +0000 |
---|---|---|
committer | Paul Fagerburg <pfagerburg@chromium.org> | 2021-08-04 15:15:45 +0000 |
commit | 12441dce064add85279b17ce5a7115a85297ca7d (patch) | |
tree | 78fa826979ef67faf5ceaccc35fa1452cb58db18 /src/console | |
parent | 234e7ecb290d0469bd08565814bbffe2884e823e (diff) |
console/hw-debug_sink: Update for fast/slow console distinction
Change-Id: I9ac110c7b812f912f0f87cbe4aa218d4a78e6aaf
Signed-off-by: Nico Huber <nico.huber@secunet.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/56665
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Diffstat (limited to 'src/console')
-rw-r--r-- | src/console/hw-debug_sink.adb | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/src/console/hw-debug_sink.adb b/src/console/hw-debug_sink.adb index f30b73f4ce..6a2889de8f 100644 --- a/src/console/hw-debug_sink.adb +++ b/src/console/hw-debug_sink.adb @@ -1,7 +1,9 @@ -- SPDX-License-Identifier: GPL-2.0-only with Interfaces.C; +with CB.Config; +use CB; use type Interfaces.C.int; package body HW.Debug_Sink is @@ -13,21 +15,43 @@ package body HW.Debug_Sink is Msg_Level_BIOS_DEBUG : constant := 7; + CONSOLE_LOG_FAST : constant := 1; + CONSOLE_LOG_ALL : constant := 2; + + procedure cbmemc_tx_byte (chr : Interfaces.C.char); + pragma Import (C, cbmemc_tx_byte, "cbmemc_tx_byte"); + procedure console_tx_byte (chr : Interfaces.C.char); pragma Import (C, console_tx_byte, "console_tx_byte"); - procedure Put (Item : String) is + procedure Put (Item : String) + is + console_log : constant Interfaces.C.int := + console_log_level (Msg_Level_BIOS_DEBUG); begin - if console_log_level (Msg_Level_BIOS_DEBUG) /= 0 then + if console_log = CONSOLE_LOG_FAST then + if Config.CONSOLE_CBMEM then + for Idx in Item'Range loop + cbmemc_tx_byte (Interfaces.C.To_C (Item (Idx))); + end loop; + end if; + elsif console_log = CONSOLE_LOG_ALL then for Idx in Item'Range loop console_tx_byte (Interfaces.C.To_C (Item (Idx))); end loop; end if; end Put; - procedure Put_Char (Item : Character) is + procedure Put_Char (Item : Character) + is + console_log : constant Interfaces.C.int := + console_log_level (Msg_Level_BIOS_DEBUG); begin - if console_log_level (Msg_Level_BIOS_DEBUG) /= 0 then + if console_log = CONSOLE_LOG_FAST then + if Config.CONSOLE_CBMEM then + cbmemc_tx_byte (Interfaces.C.To_C (Item)); + end if; + elsif console_log = CONSOLE_LOG_ALL then console_tx_byte (Interfaces.C.To_C (Item)); end if; end Put_Char; |