summaryrefslogtreecommitdiff
path: root/arch/x86/machine/uart.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/machine/uart.c')
-rw-r--r--arch/x86/machine/uart.c48
1 files changed, 31 insertions, 17 deletions
diff --git a/arch/x86/machine/uart.c b/arch/x86/machine/uart.c
index cdb49a90..10a32886 100644
--- a/arch/x86/machine/uart.c
+++ b/arch/x86/machine/uart.c
@@ -407,7 +407,23 @@ uart_init(struct uart *uart, uint16_t port, uint16_t intr)
console_register(&uart->console);
}
-void __init
+static void __init
+uart_log_info(void)
+{
+ const struct uart *uart;
+ size_t i;
+
+ for (i = 0; i < ARRAY_SIZE(uart_devs); i++) {
+ uart = uart_get_dev(i);
+
+ if (uart->port != 0) {
+ log_info("uart%zu: port:%#x irq:%u", i, (unsigned int)uart->port,
+ (unsigned int)uart->intr);
+ }
+ }
+}
+
+static int __init
uart_bootstrap(void)
{
const uint16_t *ptr;
@@ -422,9 +438,17 @@ uart_bootstrap(void)
uart_init(uart_get_dev(i), ptr[i], uart_intrs[i]);
}
+
+ uart_log_info();
+ return 0;
}
-void __init
+INIT_OP_DEFINE(uart_bootstrap,
+ INIT_OP_DEP(arg_setup, true),
+ INIT_OP_DEP(console_bootstrap, true),
+ INIT_OP_DEP(log_setup, true));
+
+static int __init
uart_setup(void)
{
struct uart *uart;
@@ -439,20 +463,10 @@ uart_setup(void)
uart_enable_intr(uart);
}
-}
-void __init
-uart_info(void)
-{
- const struct uart *uart;
- size_t i;
-
- for (i = 0; i < ARRAY_SIZE(uart_devs); i++) {
- uart = uart_get_dev(i);
-
- if (uart->port != 0) {
- log_info("uart%zu: port:%#x irq:%u", i, (unsigned int)uart->port,
- (unsigned int)uart->intr);
- }
- }
+ return 0;
}
+
+INIT_OP_DEFINE(uart_setup,
+ INIT_OP_DEP(intr_setup, true),
+ INIT_OP_DEP(uart_bootstrap, true));