diff options
author | Scott Wood <scottwood@freescale.com> | 2007-03-26 16:52:24 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-04-12 13:55:15 -0400 |
commit | 6e1af384f1c1742ae6d86bbf779d4fa020c509bc (patch) | |
tree | e07f1cc421fdc4e51847d26bb9bdccc53341e1cc /arch/powerpc/boot/ns16550.c | |
parent | dbf8eefa2b814d6922492120bfa46d4bc42ceb20 (diff) |
[POWERPC] bootwrapper: Add dt_xlate_reg(), and use it to find serial registers.
dt_xlate_reg() uses the ranges properties of a node's parentage to find
the absolute physical address of the node's registers.
The ns16550 driver uses this when no virtual-reg property is found.
Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/boot/ns16550.c')
-rw-r--r-- | arch/powerpc/boot/ns16550.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/powerpc/boot/ns16550.c b/arch/powerpc/boot/ns16550.c index 1ffe72e35cdc..f8f1b2f31412 100644 --- a/arch/powerpc/boot/ns16550.c +++ b/arch/powerpc/boot/ns16550.c | |||
@@ -55,10 +55,15 @@ static u8 ns16550_tstc(void) | |||
55 | int ns16550_console_init(void *devp, struct serial_console_data *scdp) | 55 | int ns16550_console_init(void *devp, struct serial_console_data *scdp) |
56 | { | 56 | { |
57 | int n; | 57 | int n; |
58 | unsigned long reg_phys; | ||
58 | 59 | ||
59 | n = getprop(devp, "virtual-reg", ®_base, sizeof(reg_base)); | 60 | n = getprop(devp, "virtual-reg", ®_base, sizeof(reg_base)); |
60 | if (n != sizeof(reg_base)) | 61 | if (n != sizeof(reg_base)) { |
61 | return -1; | 62 | if (!dt_xlate_reg(devp, 0, ®_phys, NULL)) |
63 | return -1; | ||
64 | |||
65 | reg_base = (void *)reg_phys; | ||
66 | } | ||
62 | 67 | ||
63 | n = getprop(devp, "reg-shift", ®_shift, sizeof(reg_shift)); | 68 | n = getprop(devp, "reg-shift", ®_shift, sizeof(reg_shift)); |
64 | if (n != sizeof(reg_shift)) | 69 | if (n != sizeof(reg_shift)) |