serial: 8250_early: Use port->regshift
authorPeter Hurley <peter@hurleysoftware.com>
Sat, 16 Jan 2016 23:23:47 +0000 (15:23 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 7 Feb 2016 06:07:37 +0000 (22:07 -0800)
earlycon initializes struct uart_port::regshift to the correct
value for UPIO_MEM32 already. Use the port field rather than
hard-coded value.

This enables broader support for various i/o access methods in
8250 earlycon (eg., omap8250 earlycon).

Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_early.c

index af62131af21eef8f4ab3e4c32da31b6e8e41ce8d..180143ce77cec6759d1ab61c92045de3c3e92bae 100644 (file)
 
 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);