diff options
author | Tony Lindgren <tony@atomide.com> | 2012-10-03 18:31:58 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-10-24 14:30:57 -0400 |
commit | 54ec52b6dd3b0ba4bc4eb97e7e1b2534705b326c (patch) | |
tree | d0e9a949ddad24d90994236ddbc0668911157992 | |
parent | b15d5380e471f9ce27180b14d5080abc2e2f30ec (diff) |
tty/serial/8250: Make omap hardware workarounds local to 8250.h
This allows us to get rid of the ifdefs in 8250.c.
Cc: Alan Cox <alan@linux.intel.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | arch/arm/plat-omap/include/plat/serial.h | 9 | ||||
-rw-r--r-- | drivers/tty/serial/8250/8250.c | 9 | ||||
-rw-r--r-- | drivers/tty/serial/8250/8250.h | 36 |
3 files changed, 39 insertions, 15 deletions
diff --git a/arch/arm/plat-omap/include/plat/serial.h b/arch/arm/plat-omap/include/plat/serial.h index 65fce44dce34..b780470d03ea 100644 --- a/arch/arm/plat-omap/include/plat/serial.h +++ b/arch/arm/plat-omap/include/plat/serial.h | |||
@@ -109,15 +109,6 @@ | |||
109 | #define OMAP5UART4 OMAP4UART4 | 109 | #define OMAP5UART4 OMAP4UART4 |
110 | #define ZOOM_UART 95 /* Only on zoom2/3 */ | 110 | #define ZOOM_UART 95 /* Only on zoom2/3 */ |
111 | 111 | ||
112 | /* This is only used by 8250.c for omap1510 */ | ||
113 | #define is_omap_port(pt) ({int __ret = 0; \ | ||
114 | if ((pt)->port.mapbase == OMAP1_UART1_BASE || \ | ||
115 | (pt)->port.mapbase == OMAP1_UART2_BASE || \ | ||
116 | (pt)->port.mapbase == OMAP1_UART3_BASE) \ | ||
117 | __ret = 1; \ | ||
118 | __ret; \ | ||
119 | }) | ||
120 | |||
121 | #ifndef __ASSEMBLER__ | 112 | #ifndef __ASSEMBLER__ |
122 | 113 | ||
123 | struct omap_board_data; | 114 | struct omap_board_data; |
diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c index 3ba4234592bc..5ccbd90540cf 100644 --- a/drivers/tty/serial/8250/8250.c +++ b/drivers/tty/serial/8250/8250.c | |||
@@ -2349,16 +2349,14 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, | |||
2349 | serial_port_out(port, UART_EFR, efr); | 2349 | serial_port_out(port, UART_EFR, efr); |
2350 | } | 2350 | } |
2351 | 2351 | ||
2352 | #ifdef CONFIG_ARCH_OMAP1 | ||
2353 | /* Workaround to enable 115200 baud on OMAP1510 internal ports */ | 2352 | /* Workaround to enable 115200 baud on OMAP1510 internal ports */ |
2354 | if (cpu_is_omap1510() && is_omap_port(up)) { | 2353 | if (is_omap1510_8250(up)) { |
2355 | if (baud == 115200) { | 2354 | if (baud == 115200) { |
2356 | quot = 1; | 2355 | quot = 1; |
2357 | serial_port_out(port, UART_OMAP_OSC_12M_SEL, 1); | 2356 | serial_port_out(port, UART_OMAP_OSC_12M_SEL, 1); |
2358 | } else | 2357 | } else |
2359 | serial_port_out(port, UART_OMAP_OSC_12M_SEL, 0); | 2358 | serial_port_out(port, UART_OMAP_OSC_12M_SEL, 0); |
2360 | } | 2359 | } |
2361 | #endif | ||
2362 | 2360 | ||
2363 | /* | 2361 | /* |
2364 | * For NatSemi, switch to bank 2 not bank 1, to avoid resetting EXCR2, | 2362 | * For NatSemi, switch to bank 2 not bank 1, to avoid resetting EXCR2, |
@@ -2439,10 +2437,9 @@ static unsigned int serial8250_port_size(struct uart_8250_port *pt) | |||
2439 | { | 2437 | { |
2440 | if (pt->port.iotype == UPIO_AU) | 2438 | if (pt->port.iotype == UPIO_AU) |
2441 | return 0x1000; | 2439 | return 0x1000; |
2442 | #ifdef CONFIG_ARCH_OMAP1 | 2440 | if (is_omap1_8250(pt)) |
2443 | if (is_omap_port(pt)) | ||
2444 | return 0x16 << pt->port.regshift; | 2441 | return 0x16 << pt->port.regshift; |
2445 | #endif | 2442 | |
2446 | return 8 << pt->port.regshift; | 2443 | return 8 << pt->port.regshift; |
2447 | } | 2444 | } |
2448 | 2445 | ||
diff --git a/drivers/tty/serial/8250/8250.h b/drivers/tty/serial/8250/8250.h index 5a76f9c8d36b..3b4ea84898c2 100644 --- a/drivers/tty/serial/8250/8250.h +++ b/drivers/tty/serial/8250/8250.h | |||
@@ -106,3 +106,39 @@ static inline int serial8250_pnp_init(void) { return 0; } | |||
106 | static inline void serial8250_pnp_exit(void) { } | 106 | static inline void serial8250_pnp_exit(void) { } |
107 | #endif | 107 | #endif |
108 | 108 | ||
109 | #ifdef CONFIG_ARCH_OMAP1 | ||
110 | static inline int is_omap1_8250(struct uart_8250_port *pt) | ||
111 | { | ||
112 | int res; | ||
113 | |||
114 | switch (pt->port.mapbase) { | ||
115 | case OMAP1_UART1_BASE: | ||
116 | case OMAP1_UART2_BASE: | ||
117 | case OMAP1_UART3_BASE: | ||
118 | res = 1; | ||
119 | break; | ||
120 | default: | ||
121 | res = 0; | ||
122 | break; | ||
123 | } | ||
124 | |||
125 | return res; | ||
126 | } | ||
127 | |||
128 | static inline int is_omap1510_8250(struct uart_8250_port *pt) | ||
129 | { | ||
130 | if (!cpu_is_omap1510()) | ||
131 | return 0; | ||
132 | |||
133 | return is_omap1_8250(pt); | ||
134 | } | ||
135 | #else | ||
136 | static inline int is_omap1_8250(struct uart_8250_port *pt) | ||
137 | { | ||
138 | return 0; | ||
139 | } | ||
140 | static inline int is_omap1510_8250(struct uart_8250_port *pt) | ||
141 | { | ||
142 | return 0; | ||
143 | } | ||
144 | #endif | ||