Commit f2eda27d authored by Russell King's avatar Russell King Committed by Russell King

[SERIAL] 8250: serial8250_port_size() - omap ports are larger

A function to contain common code for the size of the resource we
need to allocate or free.  OMAP ports need 22 bytes rather than
the standard 8 bytes.
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 5668545a
...@@ -2211,7 +2211,7 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios, ...@@ -2211,7 +2211,7 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
serial_outp(up, UART_EFR, efr); serial_outp(up, UART_EFR, efr);
} }
#ifdef CONFIG_ARCH_OMAP15XX #ifdef CONFIG_ARCH_OMAP
/* Workaround to enable 115200 baud on OMAP1510 internal ports */ /* Workaround to enable 115200 baud on OMAP1510 internal ports */
if (cpu_is_omap1510() && is_omap_port(up)) { if (cpu_is_omap1510() && is_omap_port(up)) {
if (baud == 115200) { if (baud == 115200) {
...@@ -2266,18 +2266,27 @@ serial8250_pm(struct uart_port *port, unsigned int state, ...@@ -2266,18 +2266,27 @@ serial8250_pm(struct uart_port *port, unsigned int state,
p->pm(port, state, oldstate); p->pm(port, state, oldstate);
} }
static unsigned int serial8250_port_size(struct uart_8250_port *pt)
{
if (pt->port.iotype == UPIO_AU)
return 0x100000;
#ifdef CONFIG_ARCH_OMAP
if (is_omap_port(pt))
return 0x16 << pt->port.regshift;
#endif
return 8 << pt->port.regshift;
}
/* /*
* Resource handling. * Resource handling.
*/ */
static int serial8250_request_std_resource(struct uart_8250_port *up) static int serial8250_request_std_resource(struct uart_8250_port *up)
{ {
unsigned int size = 8 << up->port.regshift; unsigned int size = serial8250_port_size(up);
int ret = 0; int ret = 0;
switch (up->port.iotype) { switch (up->port.iotype) {
case UPIO_AU: case UPIO_AU:
size = 0x100000;
/* fall thru */
case UPIO_TSI: case UPIO_TSI:
case UPIO_MEM32: case UPIO_MEM32:
case UPIO_MEM: case UPIO_MEM:
...@@ -2311,12 +2320,10 @@ static int serial8250_request_std_resource(struct uart_8250_port *up) ...@@ -2311,12 +2320,10 @@ static int serial8250_request_std_resource(struct uart_8250_port *up)
static void serial8250_release_std_resource(struct uart_8250_port *up) static void serial8250_release_std_resource(struct uart_8250_port *up)
{ {
unsigned int size = 8 << up->port.regshift; unsigned int size = serial8250_port_size(up);
switch (up->port.iotype) { switch (up->port.iotype) {
case UPIO_AU: case UPIO_AU:
size = 0x100000;
/* fall thru */
case UPIO_TSI: case UPIO_TSI:
case UPIO_MEM32: case UPIO_MEM32:
case UPIO_MEM: case UPIO_MEM:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment