|
@@ -439,6 +439,18 @@ static unsigned int mem32_serial_in(struct uart_port *p, int offset)
|
|
return readl(p->membase + offset);
|
|
return readl(p->membase + offset);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void mem32be_serial_out(struct uart_port *p, int offset, int value)
|
|
|
|
+{
|
|
|
|
+ offset = offset << p->regshift;
|
|
|
|
+ iowrite32be(value, p->membase + offset);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static unsigned int mem32be_serial_in(struct uart_port *p, int offset)
|
|
|
|
+{
|
|
|
|
+ offset = offset << p->regshift;
|
|
|
|
+ return ioread32be(p->membase + offset);
|
|
|
|
+}
|
|
|
|
+
|
|
static unsigned int io_serial_in(struct uart_port *p, int offset)
|
|
static unsigned int io_serial_in(struct uart_port *p, int offset)
|
|
{
|
|
{
|
|
offset = offset << p->regshift;
|
|
offset = offset << p->regshift;
|
|
@@ -477,6 +489,11 @@ static void set_io_from_upio(struct uart_port *p)
|
|
p->serial_out = mem32_serial_out;
|
|
p->serial_out = mem32_serial_out;
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
+ case UPIO_MEM32BE:
|
|
|
|
+ p->serial_in = mem32be_serial_in;
|
|
|
|
+ p->serial_out = mem32be_serial_out;
|
|
|
|
+ break;
|
|
|
|
+
|
|
#if defined(CONFIG_MIPS_ALCHEMY) || defined(CONFIG_SERIAL_8250_RT288X)
|
|
#if defined(CONFIG_MIPS_ALCHEMY) || defined(CONFIG_SERIAL_8250_RT288X)
|
|
case UPIO_AU:
|
|
case UPIO_AU:
|
|
p->serial_in = au_serial_in;
|
|
p->serial_in = au_serial_in;
|
|
@@ -502,6 +519,7 @@ serial_port_out_sync(struct uart_port *p, int offset, int value)
|
|
switch (p->iotype) {
|
|
switch (p->iotype) {
|
|
case UPIO_MEM:
|
|
case UPIO_MEM:
|
|
case UPIO_MEM32:
|
|
case UPIO_MEM32:
|
|
|
|
+ case UPIO_MEM32BE:
|
|
case UPIO_AU:
|
|
case UPIO_AU:
|
|
p->serial_out(p, offset, value);
|
|
p->serial_out(p, offset, value);
|
|
p->serial_in(p, UART_LCR); /* safe, no side-effects */
|
|
p->serial_in(p, UART_LCR); /* safe, no side-effects */
|
|
@@ -2743,6 +2761,7 @@ static int serial8250_request_std_resource(struct uart_8250_port *up)
|
|
case UPIO_AU:
|
|
case UPIO_AU:
|
|
case UPIO_TSI:
|
|
case UPIO_TSI:
|
|
case UPIO_MEM32:
|
|
case UPIO_MEM32:
|
|
|
|
+ case UPIO_MEM32BE:
|
|
case UPIO_MEM:
|
|
case UPIO_MEM:
|
|
if (!port->mapbase)
|
|
if (!port->mapbase)
|
|
break;
|
|
break;
|
|
@@ -2779,6 +2798,7 @@ static void serial8250_release_std_resource(struct uart_8250_port *up)
|
|
case UPIO_AU:
|
|
case UPIO_AU:
|
|
case UPIO_TSI:
|
|
case UPIO_TSI:
|
|
case UPIO_MEM32:
|
|
case UPIO_MEM32:
|
|
|
|
+ case UPIO_MEM32BE:
|
|
case UPIO_MEM:
|
|
case UPIO_MEM:
|
|
if (!port->mapbase)
|
|
if (!port->mapbase)
|
|
break;
|
|
break;
|