[SERIAL] AMD Alchemy UART: claim memory range
authorSergei Shtylyov <sshtylyov@ru.mvista.com>
Sun, 30 Apr 2006 10:15:58 +0000 (11:15 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 30 Apr 2006 10:15:58 +0000 (11:15 +0100)
I've noticed that the 8250/Au1x00 driver (drivers/serial/8250_au1x00.c)
doesn't claim UART memory ranges and uses wrong (KSEG1-based) UART
addresses instead of the physical ones.

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/serial/8250.c
drivers/serial/8250_au1x00.c

index 674b15c..d641ac4 100644 (file)
@@ -1906,6 +1906,9 @@ static int serial8250_request_std_resource(struct uart_8250_port *up)
        int ret = 0;
 
        switch (up->port.iotype) {
+       case UPIO_AU:
+               size = 0x100000;
+               /* fall thru */
        case UPIO_MEM:
                if (!up->port.mapbase)
                        break;
@@ -1938,6 +1941,9 @@ static void serial8250_release_std_resource(struct uart_8250_port *up)
        unsigned int size = 8 << up->port.regshift;
 
        switch (up->port.iotype) {
+       case UPIO_AU:
+               size = 0x100000;
+               /* fall thru */
        case UPIO_MEM:
                if (!up->port.mapbase)
                        break;
index 3d1bfd0..58015fd 100644 (file)
        {                                               \
                .iobase         = _base,                \
                .membase        = (void __iomem *)_base,\
-               .mapbase        = _base,                \
+               .mapbase        = CPHYSADDR(_base),     \
                .irq            = _irq,                 \
                .uartclk        = 0,    /* filled */    \
                .regshift       = 2,                    \
                .iotype         = UPIO_AU,              \
-               .flags          = UPF_SKIP_TEST |       \
-                                 UPF_IOREMAP,          \
+               .flags          = UPF_SKIP_TEST         \
        }
 
 static struct plat_serial8250_port au1x00_data[] = {