diff options
Diffstat (limited to 'drivers/serial/8250.c')
-rw-r--r-- | drivers/serial/8250.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index d3ca7d32abe0..1528de23a650 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c | |||
@@ -2223,9 +2223,9 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios, | |||
2223 | serial_outp(up, UART_EFR, efr); | 2223 | serial_outp(up, UART_EFR, efr); |
2224 | } | 2224 | } |
2225 | 2225 | ||
2226 | #ifdef CONFIG_ARCH_OMAP15XX | 2226 | #ifdef CONFIG_ARCH_OMAP |
2227 | /* Workaround to enable 115200 baud on OMAP1510 internal ports */ | 2227 | /* Workaround to enable 115200 baud on OMAP1510 internal ports */ |
2228 | if (cpu_is_omap1510() && is_omap_port((unsigned int)up->port.membase)) { | 2228 | if (cpu_is_omap1510() && is_omap_port(up)) { |
2229 | if (baud == 115200) { | 2229 | if (baud == 115200) { |
2230 | quot = 1; | 2230 | quot = 1; |
2231 | serial_out(up, UART_OMAP_OSC_12M_SEL, 1); | 2231 | serial_out(up, UART_OMAP_OSC_12M_SEL, 1); |
@@ -2278,18 +2278,27 @@ serial8250_pm(struct uart_port *port, unsigned int state, | |||
2278 | p->pm(port, state, oldstate); | 2278 | p->pm(port, state, oldstate); |
2279 | } | 2279 | } |
2280 | 2280 | ||
2281 | static unsigned int serial8250_port_size(struct uart_8250_port *pt) | ||
2282 | { | ||
2283 | if (pt->port.iotype == UPIO_AU) | ||
2284 | return 0x100000; | ||
2285 | #ifdef CONFIG_ARCH_OMAP | ||
2286 | if (is_omap_port(pt)) | ||
2287 | return 0x16 << pt->port.regshift; | ||
2288 | #endif | ||
2289 | return 8 << pt->port.regshift; | ||
2290 | } | ||
2291 | |||
2281 | /* | 2292 | /* |
2282 | * Resource handling. | 2293 | * Resource handling. |
2283 | */ | 2294 | */ |
2284 | static int serial8250_request_std_resource(struct uart_8250_port *up) | 2295 | static int serial8250_request_std_resource(struct uart_8250_port *up) |
2285 | { | 2296 | { |
2286 | unsigned int size = 8 << up->port.regshift; | 2297 | unsigned int size = serial8250_port_size(up); |
2287 | int ret = 0; | 2298 | int ret = 0; |
2288 | 2299 | ||
2289 | switch (up->port.iotype) { | 2300 | switch (up->port.iotype) { |
2290 | case UPIO_AU: | 2301 | case UPIO_AU: |
2291 | size = 0x100000; | ||
2292 | /* fall thru */ | ||
2293 | case UPIO_TSI: | 2302 | case UPIO_TSI: |
2294 | case UPIO_MEM32: | 2303 | case UPIO_MEM32: |
2295 | case UPIO_MEM: | 2304 | case UPIO_MEM: |
@@ -2323,12 +2332,10 @@ static int serial8250_request_std_resource(struct uart_8250_port *up) | |||
2323 | 2332 | ||
2324 | static void serial8250_release_std_resource(struct uart_8250_port *up) | 2333 | static void serial8250_release_std_resource(struct uart_8250_port *up) |
2325 | { | 2334 | { |
2326 | unsigned int size = 8 << up->port.regshift; | 2335 | unsigned int size = serial8250_port_size(up); |
2327 | 2336 | ||
2328 | switch (up->port.iotype) { | 2337 | switch (up->port.iotype) { |
2329 | case UPIO_AU: | 2338 | case UPIO_AU: |
2330 | size = 0x100000; | ||
2331 | /* fall thru */ | ||
2332 | case UPIO_TSI: | 2339 | case UPIO_TSI: |
2333 | case UPIO_MEM32: | 2340 | case UPIO_MEM32: |
2334 | case UPIO_MEM: | 2341 | case UPIO_MEM: |