summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86/lib/romcc_console.c91
1 files changed, 16 insertions, 75 deletions
diff --git a/src/arch/x86/lib/romcc_console.c b/src/arch/x86/lib/romcc_console.c
index 0557a52e5c..6c7f0506c6 100644
--- a/src/arch/x86/lib/romcc_console.c
+++ b/src/arch/x86/lib/romcc_console.c
@@ -17,12 +17,10 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <console/uart.h>
-#include <console/ne2k.h>
-
-/* While in romstage, console loglevel is built-time constant. */
-#define console_log_level(msg_level) (CONFIG_DEFAULT_CONSOLE_LOGLEVEL >= msg_level)
+#include <console/streams.h>
+#include <console/early_print.h>
+/* Include the sources. */
#if CONFIG_CONSOLE_SERIAL && CONFIG_DRIVERS_UART_8250IO
#include "drivers/uart/util.c"
#include "drivers/uart/uart8250io.c"
@@ -31,7 +29,17 @@
#include "drivers/net/ne2k.c"
#endif
-static void __console_tx_byte(unsigned char byte)
+void console_hw_init(void)
+{
+#if CONFIG_CONSOLE_SERIAL
+ uart_init();
+#endif
+#if CONFIG_CONSOLE_NE2K
+ ne2k_init(CONFIG_CONSOLE_NE2K_IO_PORT);
+#endif
+}
+
+void console_tx_byte(unsigned char byte)
{
#if CONFIG_CONSOLE_SERIAL
uart_tx_byte(byte);
@@ -41,7 +49,7 @@ static void __console_tx_byte(unsigned char byte)
#endif
}
-static void __console_tx_flush(void)
+void console_tx_flush(void)
{
#if CONFIG_CONSOLE_SERIAL
uart_tx_flush();
@@ -51,74 +59,7 @@ static void __console_tx_flush(void)
#endif
}
-static void __console_tx_nibble(unsigned nibble)
-{
- unsigned char digit;
- digit = nibble + '0';
- if (digit > '9') {
- digit += 39;
- }
- __console_tx_byte(digit);
-}
-
-static void __console_tx_char(int loglevel, unsigned char byte)
-{
- if (console_log_level(loglevel)) {
- __console_tx_byte(byte);
- __console_tx_flush();
- }
-}
-
-static void __console_tx_hex8(int loglevel, unsigned char value)
-{
- if (console_log_level(loglevel)) {
- __console_tx_nibble((value >> 4U) & 0x0fU);
- __console_tx_nibble(value & 0x0fU);
- __console_tx_flush();
- }
-}
-
-static void __console_tx_hex16(int loglevel, unsigned short value)
-{
- if (console_log_level(loglevel)) {
- __console_tx_nibble((value >> 12U) & 0x0fU);
- __console_tx_nibble((value >> 8U) & 0x0fU);
- __console_tx_nibble((value >> 4U) & 0x0fU);
- __console_tx_nibble(value & 0x0fU);
- __console_tx_flush();
- }
-}
-
-static void __console_tx_hex32(int loglevel, unsigned int value)
-{
- if (console_log_level(loglevel)) {
- __console_tx_nibble((value >> 28U) & 0x0fU);
- __console_tx_nibble((value >> 24U) & 0x0fU);
- __console_tx_nibble((value >> 20U) & 0x0fU);
- __console_tx_nibble((value >> 16U) & 0x0fU);
- __console_tx_nibble((value >> 12U) & 0x0fU);
- __console_tx_nibble((value >> 8U) & 0x0fU);
- __console_tx_nibble((value >> 4U) & 0x0fU);
- __console_tx_nibble(value & 0x0fU);
- __console_tx_flush();
- }
-}
-
-static void __console_tx_string(int loglevel, const char *str)
-{
- if (console_log_level(loglevel)) {
- unsigned char ch;
- while((ch = *str++) != '\0') {
- if (ch == '\n')
- __console_tx_byte('\r');
- __console_tx_byte(ch);
- }
- __console_tx_flush();
- }
-}
-
-/* if included by romcc, include the sources, too. romcc can't use prototypes */
-#include <console/console.c>
+#include <console/early_print.c>
#include <console/init.c>
#include <console/post.c>
#include <console/die.c>