|
@@ -626,9 +626,12 @@ static void neo_param(struct tty_struct *tty)
|
|
|
* If baud rate is zero, flush queues, and set mval to drop DTR.
|
|
|
*/
|
|
|
if ((ch->ch_c_cflag & (CBAUD)) == 0) {
|
|
|
- ch->ch_r_head = ch->ch_r_tail = 0;
|
|
|
- ch->ch_e_head = ch->ch_e_tail = 0;
|
|
|
- ch->ch_w_head = ch->ch_w_tail = 0;
|
|
|
+ ch->ch_r_head = 0;
|
|
|
+ ch->ch_r_tail = 0;
|
|
|
+ ch->ch_e_head = 0;
|
|
|
+ ch->ch_e_tail = 0;
|
|
|
+ ch->ch_w_head = 0;
|
|
|
+ ch->ch_w_tail = 0;
|
|
|
|
|
|
neo_flush_uart_write(ch);
|
|
|
neo_flush_uart_read(ch);
|
|
@@ -754,7 +757,9 @@ static void neo_param(struct tty_struct *tty)
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- ier = uart_ier = readb(&ch->ch_neo_uart->ier);
|
|
|
+ uart_ier = readb(&ch->ch_neo_uart->ier);
|
|
|
+ ier = uart_ier;
|
|
|
+
|
|
|
uart_lcr = readb(&ch->ch_neo_uart->lcr);
|
|
|
|
|
|
if (baud == 0)
|
|
@@ -1285,7 +1290,8 @@ static void neo_copy_data_from_uart_to_queue(struct channel_t *ch)
|
|
|
* I hope thats okay with everyone? Yes? Good.
|
|
|
*/
|
|
|
while (qleft < 1) {
|
|
|
- ch->ch_r_tail = tail = (tail + 1) & RQUEUEMASK;
|
|
|
+ tail = (tail + 1) & RQUEUEMASK;
|
|
|
+ ch->ch_r_tail = tail;
|
|
|
ch->ch_err_overrun++;
|
|
|
qleft++;
|
|
|
}
|