aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/rtas.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kernel/rtas.c')
-rw-r--r--arch/powerpc/kernel/rtas.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
index ae2e2a31a705..68bcd2824bc6 100644
--- a/arch/powerpc/kernel/rtas.c
+++ b/arch/powerpc/kernel/rtas.c
@@ -29,6 +29,7 @@
29#include <asm/delay.h> 29#include <asm/delay.h>
30#include <asm/uaccess.h> 30#include <asm/uaccess.h>
31#include <asm/lmb.h> 31#include <asm/lmb.h>
32#include <asm/udbg.h>
32 33
33struct rtas_t rtas = { 34struct rtas_t rtas = {
34 .lock = SPIN_LOCK_UNLOCKED 35 .lock = SPIN_LOCK_UNLOCKED
@@ -52,7 +53,7 @@ EXPORT_SYMBOL(rtas_flash_term_hook);
52 * are designed only for very early low-level debugging, which 53 * are designed only for very early low-level debugging, which
53 * is why the token is hard-coded to 10. 54 * is why the token is hard-coded to 10.
54 */ 55 */
55void call_rtas_display_status(unsigned char c) 56static void call_rtas_display_status(char c)
56{ 57{
57 struct rtas_args *args = &rtas.args; 58 struct rtas_args *args = &rtas.args;
58 unsigned long s; 59 unsigned long s;
@@ -65,14 +66,14 @@ void call_rtas_display_status(unsigned char c)
65 args->nargs = 1; 66 args->nargs = 1;
66 args->nret = 1; 67 args->nret = 1;
67 args->rets = (rtas_arg_t *)&(args->args[1]); 68 args->rets = (rtas_arg_t *)&(args->args[1]);
68 args->args[0] = (int)c; 69 args->args[0] = (unsigned char)c;
69 70
70 enter_rtas(__pa(args)); 71 enter_rtas(__pa(args));
71 72
72 spin_unlock_irqrestore(&rtas.lock, s); 73 spin_unlock_irqrestore(&rtas.lock, s);
73} 74}
74 75
75void call_rtas_display_status_delay(unsigned char c) 76static void call_rtas_display_status_delay(char c)
76{ 77{
77 static int pending_newline = 0; /* did last write end with unprinted newline? */ 78 static int pending_newline = 0; /* did last write end with unprinted newline? */
78 static int width = 16; 79 static int width = 16;
@@ -96,6 +97,11 @@ void call_rtas_display_status_delay(unsigned char c)
96 } 97 }
97} 98}
98 99
100void __init udbg_init_rtas(void)
101{
102 udbg_putc = call_rtas_display_status_delay;
103}
104
99void rtas_progress(char *s, unsigned short hex) 105void rtas_progress(char *s, unsigned short hex)
100{ 106{
101 struct device_node *root; 107 struct device_node *root;