diff options
Diffstat (limited to 'drivers/serial')
-rw-r--r-- | drivers/serial/8250.c | 8 | ||||
-rw-r--r-- | drivers/serial/cpm_uart/cpm_uart_core.c | 2 | ||||
-rw-r--r-- | drivers/serial/icom.c | 2 | ||||
-rw-r--r-- | drivers/serial/samsung.c | 2 | ||||
-rw-r--r-- | drivers/serial/serial_core.c | 3 | ||||
-rw-r--r-- | drivers/serial/serial_txx9.c | 2 |
6 files changed, 12 insertions, 7 deletions
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index ce948b66bbd4..27f34a9f9cb7 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c | |||
@@ -1874,7 +1874,9 @@ static int serial8250_startup(struct uart_port *port) | |||
1874 | * the interrupt is enabled. Delays are necessary to | 1874 | * the interrupt is enabled. Delays are necessary to |
1875 | * allow register changes to become visible. | 1875 | * allow register changes to become visible. |
1876 | */ | 1876 | */ |
1877 | spin_lock_irqsave(&up->port.lock, flags); | 1877 | spin_lock(&up->port.lock); |
1878 | if (up->port.flags & UPF_SHARE_IRQ) | ||
1879 | disable_irq_nosync(up->port.irq); | ||
1878 | 1880 | ||
1879 | wait_for_xmitr(up, UART_LSR_THRE); | 1881 | wait_for_xmitr(up, UART_LSR_THRE); |
1880 | serial_out_sync(up, UART_IER, UART_IER_THRI); | 1882 | serial_out_sync(up, UART_IER, UART_IER_THRI); |
@@ -1886,7 +1888,9 @@ static int serial8250_startup(struct uart_port *port) | |||
1886 | iir = serial_in(up, UART_IIR); | 1888 | iir = serial_in(up, UART_IIR); |
1887 | serial_out(up, UART_IER, 0); | 1889 | serial_out(up, UART_IER, 0); |
1888 | 1890 | ||
1889 | spin_unlock_irqrestore(&up->port.lock, flags); | 1891 | if (up->port.flags & UPF_SHARE_IRQ) |
1892 | enable_irq(up->port.irq); | ||
1893 | spin_unlock(&up->port.lock); | ||
1890 | 1894 | ||
1891 | /* | 1895 | /* |
1892 | * If the interrupt is not reasserted, setup a timer to | 1896 | * If the interrupt is not reasserted, setup a timer to |
diff --git a/drivers/serial/cpm_uart/cpm_uart_core.c b/drivers/serial/cpm_uart/cpm_uart_core.c index abe129cc927a..93e407ee08b9 100644 --- a/drivers/serial/cpm_uart/cpm_uart_core.c +++ b/drivers/serial/cpm_uart/cpm_uart_core.c | |||
@@ -209,7 +209,7 @@ static void cpm_uart_int_rx(struct uart_port *port) | |||
209 | int i; | 209 | int i; |
210 | unsigned char ch; | 210 | unsigned char ch; |
211 | u8 *cp; | 211 | u8 *cp; |
212 | struct tty_struct *tty = port->info->tty; | 212 | struct tty_struct *tty = port->info->port.tty; |
213 | struct uart_cpm_port *pinfo = (struct uart_cpm_port *)port; | 213 | struct uart_cpm_port *pinfo = (struct uart_cpm_port *)port; |
214 | cbd_t __iomem *bdp; | 214 | cbd_t __iomem *bdp; |
215 | u16 status; | 215 | u16 status; |
diff --git a/drivers/serial/icom.c b/drivers/serial/icom.c index 9c2df5c857cf..2b7531d9f6ab 100644 --- a/drivers/serial/icom.c +++ b/drivers/serial/icom.c | |||
@@ -730,7 +730,7 @@ static void xmit_interrupt(u16 port_int_reg, struct icom_port *icom_port) | |||
730 | static void recv_interrupt(u16 port_int_reg, struct icom_port *icom_port) | 730 | static void recv_interrupt(u16 port_int_reg, struct icom_port *icom_port) |
731 | { | 731 | { |
732 | short int count, rcv_buff; | 732 | short int count, rcv_buff; |
733 | struct tty_struct *tty = icom_port->uart_port.info->tty; | 733 | struct tty_struct *tty = icom_port->uart_port.info->port.tty; |
734 | unsigned short int status; | 734 | unsigned short int status; |
735 | struct uart_icount *icount; | 735 | struct uart_icount *icount; |
736 | unsigned long offset; | 736 | unsigned long offset; |
diff --git a/drivers/serial/samsung.c b/drivers/serial/samsung.c index 4a3ecaa629e6..d852f83f8900 100644 --- a/drivers/serial/samsung.c +++ b/drivers/serial/samsung.c | |||
@@ -202,7 +202,7 @@ s3c24xx_serial_rx_chars(int irq, void *dev_id) | |||
202 | { | 202 | { |
203 | struct s3c24xx_uart_port *ourport = dev_id; | 203 | struct s3c24xx_uart_port *ourport = dev_id; |
204 | struct uart_port *port = &ourport->port; | 204 | struct uart_port *port = &ourport->port; |
205 | struct tty_struct *tty = port->info->tty; | 205 | struct tty_struct *tty = port->info->port.tty; |
206 | unsigned int ufcon, ch, flag, ufstat, uerstat; | 206 | unsigned int ufcon, ch, flag, ufstat, uerstat; |
207 | int max_count = 64; | 207 | int max_count = 64; |
208 | 208 | ||
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c index 0bce1fe2c62a..f977c98cfa95 100644 --- a/drivers/serial/serial_core.c +++ b/drivers/serial/serial_core.c | |||
@@ -934,7 +934,7 @@ uart_tiocmset(struct tty_struct *tty, struct file *file, | |||
934 | return ret; | 934 | return ret; |
935 | } | 935 | } |
936 | 936 | ||
937 | static void uart_break_ctl(struct tty_struct *tty, int break_state) | 937 | static int uart_break_ctl(struct tty_struct *tty, int break_state) |
938 | { | 938 | { |
939 | struct uart_state *state = tty->driver_data; | 939 | struct uart_state *state = tty->driver_data; |
940 | struct uart_port *port = state->port; | 940 | struct uart_port *port = state->port; |
@@ -945,6 +945,7 @@ static void uart_break_ctl(struct tty_struct *tty, int break_state) | |||
945 | port->ops->break_ctl(port, break_state); | 945 | port->ops->break_ctl(port, break_state); |
946 | 946 | ||
947 | mutex_unlock(&state->mutex); | 947 | mutex_unlock(&state->mutex); |
948 | return 0; | ||
948 | } | 949 | } |
949 | 950 | ||
950 | static int uart_do_autoconfig(struct uart_state *state) | 951 | static int uart_do_autoconfig(struct uart_state *state) |
diff --git a/drivers/serial/serial_txx9.c b/drivers/serial/serial_txx9.c index 7ad21925869a..8fcb4c5b9a26 100644 --- a/drivers/serial/serial_txx9.c +++ b/drivers/serial/serial_txx9.c | |||
@@ -272,7 +272,7 @@ static void serial_txx9_initialize(struct uart_port *port) | |||
272 | static inline void | 272 | static inline void |
273 | receive_chars(struct uart_txx9_port *up, unsigned int *status) | 273 | receive_chars(struct uart_txx9_port *up, unsigned int *status) |
274 | { | 274 | { |
275 | struct tty_struct *tty = up->port.info->tty; | 275 | struct tty_struct *tty = up->port.info->port.tty; |
276 | unsigned char ch; | 276 | unsigned char ch; |
277 | unsigned int disr = *status; | 277 | unsigned int disr = *status; |
278 | int max_count = 256; | 278 | int max_count = 256; |