diff options
author | Josh Boyer <jwboyer@linux.vnet.ibm.com> | 2007-07-23 21:43:44 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-24 15:24:58 -0400 |
commit | 4f640efb3170dbcf99a37a3cc99060647b95428c (patch) | |
tree | b600b237e4efc1c7dab2b362eae23e076e5ce8f9 /drivers/serial/8250_early.c | |
parent | f695baf2df9e0413d3521661070103711545207a (diff) |
Use resource_size_t for serial port IO addresses
At present, various parts of the serial code use unsigned long to define
resource addresses. This is a problem, because some 32-bit platforms have
physical addresses larger than 32-bits, and have mmio serial uarts located
above the 4GB point.
This patch changes the type of mapbase in both struct uart_port and struct
plat_serial8250_port to resource_size_t, which can be configured to be 64
bits on such platforms. The mapbase in serial_struct can't safely be
changed, because that structure is user visible.
Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/serial/8250_early.c')
-rw-r--r-- | drivers/serial/8250_early.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/serial/8250_early.c b/drivers/serial/8250_early.c index 947c20507e1f..150cad5c2eba 100644 --- a/drivers/serial/8250_early.c +++ b/drivers/serial/8250_early.c | |||
@@ -151,8 +151,9 @@ static int __init parse_options(struct early_serial8250_device *device, char *op | |||
151 | #else | 151 | #else |
152 | port->membase = ioremap(port->mapbase, 64); | 152 | port->membase = ioremap(port->mapbase, 64); |
153 | if (!port->membase) { | 153 | if (!port->membase) { |
154 | printk(KERN_ERR "%s: Couldn't ioremap 0x%lx\n", | 154 | printk(KERN_ERR "%s: Couldn't ioremap 0x%llx\n", |
155 | __FUNCTION__, port->mapbase); | 155 | __FUNCTION__, |
156 | (unsigned long long)port->mapbase); | ||
156 | return -ENOMEM; | 157 | return -ENOMEM; |
157 | } | 158 | } |
158 | #endif | 159 | #endif |
@@ -175,9 +176,10 @@ static int __init parse_options(struct early_serial8250_device *device, char *op | |||
175 | device->baud); | 176 | device->baud); |
176 | } | 177 | } |
177 | 178 | ||
178 | printk(KERN_INFO "Early serial console at %s 0x%lx (options '%s')\n", | 179 | printk(KERN_INFO "Early serial console at %s 0x%llx (options '%s')\n", |
179 | mmio ? "MMIO" : "I/O port", | 180 | mmio ? "MMIO" : "I/O port", |
180 | mmio ? port->mapbase : (unsigned long) port->iobase, | 181 | mmio ? (unsigned long long) port->mapbase |
182 | : (unsigned long long) port->iobase, | ||
181 | device->options); | 183 | device->options); |
182 | return 0; | 184 | return 0; |
183 | } | 185 | } |