diff options
author | John Linn <john.linn@xilinx.com> | 2008-04-02 12:52:14 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@linux.vnet.ibm.com> | 2008-04-24 14:32:46 -0400 |
commit | 2f0b45f846735b486c0383740d3959941c4721a4 (patch) | |
tree | 87af793cbf504c8f7ff9174d8707bc6b87672f47 /arch/powerpc/boot/ns16550.c | |
parent | 884d04cd8d7bba3dc885227ad400f8aea5623cdc (diff) |
[POWERPC] Xilinx: boot support for Xilinx uart 16550.
The Xilinx 16550 uart core is not a standard 16550 because it uses
word-based addressing rather than byte-based adressing. With
additional properties it is compatible with the open firmware
'ns16550' compatible binding.
This code updates the ns16550 driver to use the reg-offset property
so that the Xilinx UART 16550 can be used with it. The reg-shift
was already being handled.
Signed-off-by: John Linn <john.linn@xilinx.com>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
Diffstat (limited to 'arch/powerpc/boot/ns16550.c')
-rw-r--r-- | arch/powerpc/boot/ns16550.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/powerpc/boot/ns16550.c b/arch/powerpc/boot/ns16550.c index aef3bdc89160..8c9ead94be06 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 | u32 reg_offset; | ||
58 | 59 | ||
59 | if (dt_get_virtual_reg(devp, (void **)®_base, 1) < 1) | 60 | if (dt_get_virtual_reg(devp, (void **)®_base, 1) < 1) |
60 | return -1; | 61 | return -1; |
61 | 62 | ||
63 | n = getprop(devp, "reg-offset", ®_offset, sizeof(reg_offset)); | ||
64 | if (n == sizeof(reg_offset)) | ||
65 | reg_base += reg_offset; | ||
66 | |||
62 | n = getprop(devp, "reg-shift", ®_shift, sizeof(reg_shift)); | 67 | n = getprop(devp, "reg-shift", ®_shift, sizeof(reg_shift)); |
63 | if (n != sizeof(reg_shift)) | 68 | if (n != sizeof(reg_shift)) |
64 | reg_shift = 0; | 69 | reg_shift = 0; |