diff --git a/drivers/console/console.S b/drivers/console/console.S index d966f0d..40a6db9 100644 --- a/drivers/console/console.S +++ b/drivers/console/console.S @@ -30,6 +30,7 @@ #include .globl console_init + .globl console_uninit .globl console_putc .globl console_getc @@ -66,6 +67,20 @@ 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 d374157..69ad0bd 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);