summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/console/console.S15
-rw-r--r--include/drivers/console.h1
2 files changed, 16 insertions, 0 deletions
diff --git a/drivers/console/console.S b/drivers/console/console.S
index d966f0d3..40a6db9f 100644
--- a/drivers/console/console.S
+++ b/drivers/console/console.S
@@ -30,6 +30,7 @@
#include <asm_macros.S>
.globl console_init
+ .globl console_uninit
.globl console_putc
.globl console_getc
@@ -66,6 +67,20 @@ init_fail:
ret
endfunc console_init
+ /* -----------------------------------------------
+ * void console_uninit(void)
+ * Function to finish the use of console driver.
+ * It sets the console_base as NULL so that any
+ * further invocation of `console_putc` or
+ * `console_getc` APIs would return error.
+ * -----------------------------------------------
+ */
+func console_uninit
+ mov x0, #0
+ adrp x3, console_base
+ str x0, [x3, :lo12:console_base]
+endfunc console_uninit
+
/* ---------------------------------------------
* int console_putc(int c)
* Function to output a character over the
diff --git a/include/drivers/console.h b/include/drivers/console.h
index d374157b..69ad0bd7 100644
--- a/include/drivers/console.h
+++ b/include/drivers/console.h
@@ -35,6 +35,7 @@
int console_init(uintptr_t base_addr,
unsigned int uart_clk, unsigned int baud_rate);
+void console_uninit(void);
int console_putc(int c);
int console_getc(void);