serial: 8250_early: Use port->regshift
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>
This commit is contained in:
parent
b969398490
commit
dc6b576b28
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user