|
@@ -39,15 +39,17 @@
|
|
|
|
|
|
static unsigned int __init serial8250_early_in(struct uart_port *port, int offset)
|
|
|
{
|
|
|
+ offset <<= port->regshift;
|
|
|
+
|
|
|
switch (port->iotype) {
|
|
|
case UPIO_MEM:
|
|
|
return readb(port->membase + offset);
|
|
|
case UPIO_MEM16:
|
|
|
- return readw(port->membase + (offset << 1));
|
|
|
+ return readw(port->membase + offset);
|
|
|
case UPIO_MEM32:
|
|
|
- return readl(port->membase + (offset << 2));
|
|
|
+ return readl(port->membase + offset);
|
|
|
case UPIO_MEM32BE:
|
|
|
- return ioread32be(port->membase + (offset << 2));
|
|
|
+ return ioread32be(port->membase + offset);
|
|
|
case UPIO_PORT:
|
|
|
return inb(port->iobase + offset);
|
|
|
default:
|
|
@@ -57,18 +59,20 @@ static unsigned int __init serial8250_early_in(struct uart_port *port, int offse
|
|
|
|
|
|
static void __init serial8250_early_out(struct uart_port *port, int offset, int value)
|
|
|
{
|
|
|
+ offset <<= port->regshift;
|
|
|
+
|
|
|
switch (port->iotype) {
|
|
|
case UPIO_MEM:
|
|
|
writeb(value, port->membase + offset);
|
|
|
break;
|
|
|
case UPIO_MEM16:
|
|
|
- writew(value, port->membase + (offset << 1));
|
|
|
+ writew(value, port->membase + offset);
|
|
|
break;
|
|
|
case UPIO_MEM32:
|
|
|
- writel(value, port->membase + (offset << 2));
|
|
|
+ writel(value, port->membase + offset);
|
|
|
break;
|
|
|
case UPIO_MEM32BE:
|
|
|
- iowrite32be(value, port->membase + (offset << 2));
|
|
|
+ iowrite32be(value, port->membase + offset);
|
|
|
break;
|
|
|
case UPIO_PORT:
|
|
|
outb(value, port->iobase + offset);
|