summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSoby Mathew <soby.mathew@arm.com>2015-10-28 10:29:42 +0000
committerSoby Mathew <soby.mathew@arm.com>2015-12-09 16:38:29 +0000
commit487461cb6e367a5db397c34ed75fbcfdd6bda1c9 (patch)
treee0d1d2ded2e4e4c57191458504593f2616bcce54
parent05a91fb008c31f939a9590318e2914b44cdad165 (diff)
Introduce console_uninit() API in ARM Trusted Firmware
Allowing console base address to be set to NULL conveniently allows console driver to ignore further invocations to console_putc() and console_getc(). This patch adds `console_uninit()` API to the console driver which sets console base address as NULL. The BL images can invoke this API to finish the use of console and ignore any further invocations to print to the console. Change-Id: I00a1762b3e0b7c55f2be2f9c4c9bee3967189dde
-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);