diff options
Diffstat (limited to 'arch/powerpc/kernel/udbg_16550.c')
-rw-r--r-- | arch/powerpc/kernel/udbg_16550.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/udbg_16550.c b/arch/powerpc/kernel/udbg_16550.c index 2d17f2b8eda7..e738f93b42fe 100644 --- a/arch/powerpc/kernel/udbg_16550.c +++ b/arch/powerpc/kernel/udbg_16550.c | |||
@@ -14,6 +14,8 @@ | |||
14 | 14 | ||
15 | extern u8 real_readb(volatile u8 __iomem *addr); | 15 | extern u8 real_readb(volatile u8 __iomem *addr); |
16 | extern void real_writeb(u8 data, volatile u8 __iomem *addr); | 16 | extern void real_writeb(u8 data, volatile u8 __iomem *addr); |
17 | extern u8 real_205_readb(volatile u8 __iomem *addr); | ||
18 | extern void real_205_writeb(u8 data, volatile u8 __iomem *addr); | ||
17 | 19 | ||
18 | struct NS16550 { | 20 | struct NS16550 { |
19 | /* this struct must be packed */ | 21 | /* this struct must be packed */ |
@@ -167,3 +169,25 @@ void __init udbg_init_maple_realmode(void) | |||
167 | udbg_getc_poll = NULL; | 169 | udbg_getc_poll = NULL; |
168 | } | 170 | } |
169 | #endif /* CONFIG_PPC_MAPLE */ | 171 | #endif /* CONFIG_PPC_MAPLE */ |
172 | |||
173 | #ifdef CONFIG_PPC_PASEMI | ||
174 | void udbg_pas_real_putc(char c) | ||
175 | { | ||
176 | if (udbg_comport) { | ||
177 | while ((real_205_readb(&udbg_comport->lsr) & LSR_THRE) == 0) | ||
178 | /* wait for idle */; | ||
179 | real_205_writeb(c, &udbg_comport->thr); eieio(); | ||
180 | if (c == '\n') | ||
181 | udbg_pas_real_putc('\r'); | ||
182 | } | ||
183 | } | ||
184 | |||
185 | void udbg_init_pas_realmode(void) | ||
186 | { | ||
187 | udbg_comport = (volatile struct NS16550 __iomem *)0xfcff03f8; | ||
188 | |||
189 | udbg_putc = udbg_pas_real_putc; | ||
190 | udbg_getc = NULL; | ||
191 | udbg_getc_poll = NULL; | ||
192 | } | ||
193 | #endif /* CONFIG_PPC_MAPLE */ | ||