aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/serial
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/serial')
-rw-r--r--drivers/serial/21285.c1
-rw-r--r--drivers/serial/68328serial.c102
-rw-r--r--drivers/serial/8250.c1
-rw-r--r--drivers/serial/8250_pci.c4
-rw-r--r--drivers/serial/at91_serial.c1
-rw-r--r--drivers/serial/crisv10.c8
-rw-r--r--drivers/serial/dz.c4
-rw-r--r--drivers/serial/imx.c1
-rw-r--r--drivers/serial/ip22zilog.c1
-rw-r--r--drivers/serial/jsm/jsm_tty.c7
-rw-r--r--drivers/serial/m32r_sio.c1
-rw-r--r--drivers/serial/mcfserial.c1
-rw-r--r--drivers/serial/mpc52xx_uart.c1
-rw-r--r--drivers/serial/mpsc.c2
-rw-r--r--drivers/serial/pmac_zilog.c1
-rw-r--r--drivers/serial/pxa.c1
-rw-r--r--drivers/serial/s3c2410.c2
-rw-r--r--drivers/serial/sa1100.c1
-rw-r--r--drivers/serial/serial_core.c5
-rw-r--r--drivers/serial/serial_txx9.c3
-rw-r--r--drivers/serial/sh-sci.c3
-rw-r--r--drivers/serial/sunhv.c1
-rw-r--r--drivers/serial/sunsab.c1
-rw-r--r--drivers/serial/sunsu.c1
-rw-r--r--drivers/serial/sunzilog.c1
-rw-r--r--drivers/serial/v850e_uart.c1
-rw-r--r--drivers/serial/vr41xx_siu.c1
27 files changed, 49 insertions, 108 deletions
diff --git a/drivers/serial/21285.c b/drivers/serial/21285.c
index 7572665a8855..9fd0de4b7afd 100644
--- a/drivers/serial/21285.c
+++ b/drivers/serial/21285.c
@@ -479,7 +479,6 @@ static struct uart_driver serial21285_reg = {
479 .owner = THIS_MODULE, 479 .owner = THIS_MODULE,
480 .driver_name = "ttyFB", 480 .driver_name = "ttyFB",
481 .dev_name = "ttyFB", 481 .dev_name = "ttyFB",
482 .devfs_name = "ttyFB",
483 .major = SERIAL_21285_MAJOR, 482 .major = SERIAL_21285_MAJOR,
484 .minor = SERIAL_21285_MINOR, 483 .minor = SERIAL_21285_MINOR,
485 .nr = 1, 484 .nr = 1,
diff --git a/drivers/serial/68328serial.c b/drivers/serial/68328serial.c
index b88a7c1158af..bff94541991c 100644
--- a/drivers/serial/68328serial.c
+++ b/drivers/serial/68328serial.c
@@ -131,17 +131,6 @@ static int m68328_console_baud = CONSOLE_BAUD_RATE;
131static int m68328_console_cbaud = DEFAULT_CBAUD; 131static int m68328_console_cbaud = DEFAULT_CBAUD;
132 132
133 133
134/*
135 * tmp_buf is used as a temporary buffer by serial_write. We need to
136 * lock it in case the memcpy_fromfs blocks while swapping in a page,
137 * and some other program tries to do a serial write at the same time.
138 * Since the lock will only come under contention when the system is
139 * swapping and available memory is low, it makes sense to share one
140 * buffer across all the serial ports, since it significantly saves
141 * memory if large numbers of serial ports are open.
142 */
143static unsigned char tmp_buf[SERIAL_XMIT_SIZE]; /* This is cheating */
144
145static inline int serial_paranoia_check(struct m68k_serial *info, 134static inline int serial_paranoia_check(struct m68k_serial *info,
146 char *name, const char *routine) 135 char *name, const char *routine)
147{ 136{
@@ -211,16 +200,16 @@ static void rs_stop(struct tty_struct *tty)
211 if (serial_paranoia_check(info, tty->name, "rs_stop")) 200 if (serial_paranoia_check(info, tty->name, "rs_stop"))
212 return; 201 return;
213 202
214 save_flags(flags); cli(); 203 local_irq_save(flags);
215 uart->ustcnt &= ~USTCNT_TXEN; 204 uart->ustcnt &= ~USTCNT_TXEN;
216 restore_flags(flags); 205 local_irq_restore(flags);
217} 206}
218 207
219static void rs_put_char(char ch) 208static void rs_put_char(char ch)
220{ 209{
221 int flags, loops = 0; 210 int flags, loops = 0;
222 211
223 save_flags(flags); cli(); 212 local_irq_save(flags);
224 213
225 while (!(UTX & UTX_TX_AVAIL) && (loops < 1000)) { 214 while (!(UTX & UTX_TX_AVAIL) && (loops < 1000)) {
226 loops++; 215 loops++;
@@ -229,7 +218,7 @@ static void rs_put_char(char ch)
229 218
230 UTX_TXDATA = ch; 219 UTX_TXDATA = ch;
231 udelay(5); 220 udelay(5);
232 restore_flags(flags); 221 local_irq_restore(flags);
233} 222}
234 223
235static void rs_start(struct tty_struct *tty) 224static void rs_start(struct tty_struct *tty)
@@ -241,7 +230,7 @@ static void rs_start(struct tty_struct *tty)
241 if (serial_paranoia_check(info, tty->name, "rs_start")) 230 if (serial_paranoia_check(info, tty->name, "rs_start"))
242 return; 231 return;
243 232
244 save_flags(flags); cli(); 233 local_irq_save(flags);
245 if (info->xmit_cnt && info->xmit_buf && !(uart->ustcnt & USTCNT_TXEN)) { 234 if (info->xmit_cnt && info->xmit_buf && !(uart->ustcnt & USTCNT_TXEN)) {
246#ifdef USE_INTS 235#ifdef USE_INTS
247 uart->ustcnt |= USTCNT_TXEN | USTCNT_TX_INTR_MASK; 236 uart->ustcnt |= USTCNT_TXEN | USTCNT_TX_INTR_MASK;
@@ -249,7 +238,7 @@ static void rs_start(struct tty_struct *tty)
249 uart->ustcnt |= USTCNT_TXEN; 238 uart->ustcnt |= USTCNT_TXEN;
250#endif 239#endif
251 } 240 }
252 restore_flags(flags); 241 local_irq_restore(flags);
253} 242}
254 243
255/* Drop into either the boot monitor or kadb upon receiving a break 244/* Drop into either the boot monitor or kadb upon receiving a break
@@ -327,14 +316,6 @@ static void receive_chars(struct m68k_serial *info, struct pt_regs *regs,
327 if(!tty) 316 if(!tty)
328 goto clear_and_exit; 317 goto clear_and_exit;
329 318
330 /*
331 * Make sure that we do not overflow the buffer
332 */
333 if (tty_request_buffer_room(tty, 1) == 0) {
334 tty_schedule_flip(tty);
335 return;
336 }
337
338 flag = TTY_NORMAL; 319 flag = TTY_NORMAL;
339 320
340 if(rx & URX_PARITY_ERROR) { 321 if(rx & URX_PARITY_ERROR) {
@@ -473,7 +454,7 @@ static int startup(struct m68k_serial * info)
473 return -ENOMEM; 454 return -ENOMEM;
474 } 455 }
475 456
476 save_flags(flags); cli(); 457 local_irq_save(flags);
477 458
478 /* 459 /*
479 * Clear the FIFO buffers and disable them 460 * Clear the FIFO buffers and disable them
@@ -506,7 +487,7 @@ static int startup(struct m68k_serial * info)
506 change_speed(info); 487 change_speed(info);
507 488
508 info->flags |= S_INITIALIZED; 489 info->flags |= S_INITIALIZED;
509 restore_flags(flags); 490 local_irq_restore(flags);
510 return 0; 491 return 0;
511} 492}
512 493
@@ -523,7 +504,7 @@ static void shutdown(struct m68k_serial * info)
523 if (!(info->flags & S_INITIALIZED)) 504 if (!(info->flags & S_INITIALIZED))
524 return; 505 return;
525 506
526 save_flags(flags); cli(); /* Disable interrupts */ 507 local_irq_save(flags);
527 508
528 if (info->xmit_buf) { 509 if (info->xmit_buf) {
529 free_page((unsigned long) info->xmit_buf); 510 free_page((unsigned long) info->xmit_buf);
@@ -534,7 +515,7 @@ static void shutdown(struct m68k_serial * info)
534 set_bit(TTY_IO_ERROR, &info->tty->flags); 515 set_bit(TTY_IO_ERROR, &info->tty->flags);
535 516
536 info->flags &= ~S_INITIALIZED; 517 info->flags &= ~S_INITIALIZED;
537 restore_flags(flags); 518 local_irq_restore(flags);
538} 519}
539 520
540struct { 521struct {
@@ -655,24 +636,24 @@ static void rs_fair_output(void)
655 if (info == 0) return; 636 if (info == 0) return;
656 if (info->xmit_buf == 0) return; 637 if (info->xmit_buf == 0) return;
657 638
658 save_flags(flags); cli(); 639 local_irq_save(flags);
659 left = info->xmit_cnt; 640 left = info->xmit_cnt;
660 while (left != 0) { 641 while (left != 0) {
661 c = info->xmit_buf[info->xmit_tail]; 642 c = info->xmit_buf[info->xmit_tail];
662 info->xmit_tail = (info->xmit_tail+1) & (SERIAL_XMIT_SIZE-1); 643 info->xmit_tail = (info->xmit_tail+1) & (SERIAL_XMIT_SIZE-1);
663 info->xmit_cnt--; 644 info->xmit_cnt--;
664 restore_flags(flags); 645 local_irq_restore(flags);
665 646
666 rs_put_char(c); 647 rs_put_char(c);
667 648
668 save_flags(flags); cli(); 649 local_irq_save(flags);
669 left = min(info->xmit_cnt, left-1); 650 left = min(info->xmit_cnt, left-1);
670 } 651 }
671 652
672 /* Last character is being transmitted now (hopefully). */ 653 /* Last character is being transmitted now (hopefully). */
673 udelay(5); 654 udelay(5);
674 655
675 restore_flags(flags); 656 local_irq_restore(flags);
676 return; 657 return;
677} 658}
678 659
@@ -720,11 +701,11 @@ static void rs_flush_chars(struct tty_struct *tty)
720#endif 701#endif
721 702
722 /* Enable transmitter */ 703 /* Enable transmitter */
723 save_flags(flags); cli(); 704 local_irq_save(flags);
724 705
725 if (info->xmit_cnt <= 0 || tty->stopped || tty->hw_stopped || 706 if (info->xmit_cnt <= 0 || tty->stopped || tty->hw_stopped ||
726 !info->xmit_buf) { 707 !info->xmit_buf) {
727 restore_flags(flags); 708 local_irq_restore(flags);
728 return; 709 return;
729 } 710 }
730 711
@@ -749,7 +730,7 @@ static void rs_flush_chars(struct tty_struct *tty)
749 while (!(uart->utx.w & UTX_TX_AVAIL)) udelay(5); 730 while (!(uart->utx.w & UTX_TX_AVAIL)) udelay(5);
750 } 731 }
751#endif 732#endif
752 restore_flags(flags); 733 local_irq_restore(flags);
753} 734}
754 735
755extern void console_printn(const char * b, int count); 736extern void console_printn(const char * b, int count);
@@ -768,18 +749,22 @@ static int rs_write(struct tty_struct * tty,
768 if (!tty || !info->xmit_buf) 749 if (!tty || !info->xmit_buf)
769 return 0; 750 return 0;
770 751
771 save_flags(flags); 752 local_save_flags(flags);
772 while (1) { 753 while (1) {
773 cli(); 754 local_irq_disable();
774 c = min_t(int, count, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1, 755 c = min_t(int, count, min(SERIAL_XMIT_SIZE - info->xmit_cnt - 1,
775 SERIAL_XMIT_SIZE - info->xmit_head)); 756 SERIAL_XMIT_SIZE - info->xmit_head));
757 local_irq_restore(flags);
758
776 if (c <= 0) 759 if (c <= 0)
777 break; 760 break;
778 761
779 memcpy(info->xmit_buf + info->xmit_head, buf, c); 762 memcpy(info->xmit_buf + info->xmit_head, buf, c);
763
764 local_irq_disable();
780 info->xmit_head = (info->xmit_head + c) & (SERIAL_XMIT_SIZE-1); 765 info->xmit_head = (info->xmit_head + c) & (SERIAL_XMIT_SIZE-1);
781 info->xmit_cnt += c; 766 info->xmit_cnt += c;
782 restore_flags(flags); 767 local_irq_restore(flags);
783 buf += c; 768 buf += c;
784 count -= c; 769 count -= c;
785 total += c; 770 total += c;
@@ -787,7 +772,7 @@ static int rs_write(struct tty_struct * tty,
787 772
788 if (info->xmit_cnt && !tty->stopped && !tty->hw_stopped) { 773 if (info->xmit_cnt && !tty->stopped && !tty->hw_stopped) {
789 /* Enable transmitter */ 774 /* Enable transmitter */
790 cli(); 775 local_irq_disable();
791#ifndef USE_INTS 776#ifndef USE_INTS
792 while(info->xmit_cnt) { 777 while(info->xmit_cnt) {
793#endif 778#endif
@@ -807,9 +792,9 @@ static int rs_write(struct tty_struct * tty,
807#ifndef USE_INTS 792#ifndef USE_INTS
808 } 793 }
809#endif 794#endif
810 restore_flags(flags); 795 local_irq_restore(flags);
811 } 796 }
812 restore_flags(flags); 797
813 return total; 798 return total;
814} 799}
815 800
@@ -838,12 +823,13 @@ static int rs_chars_in_buffer(struct tty_struct *tty)
838static void rs_flush_buffer(struct tty_struct *tty) 823static void rs_flush_buffer(struct tty_struct *tty)
839{ 824{
840 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data; 825 struct m68k_serial *info = (struct m68k_serial *)tty->driver_data;
826 unsigned long flags;
841 827
842 if (serial_paranoia_check(info, tty->name, "rs_flush_buffer")) 828 if (serial_paranoia_check(info, tty->name, "rs_flush_buffer"))
843 return; 829 return;
844 cli(); 830 local_irq_save(flags);
845 info->xmit_cnt = info->xmit_head = info->xmit_tail = 0; 831 info->xmit_cnt = info->xmit_head = info->xmit_tail = 0;
846 sti(); 832 local_irq_restore(flags);
847 tty_wakeup(tty); 833 tty_wakeup(tty);
848} 834}
849 835
@@ -973,14 +959,15 @@ static int get_lsr_info(struct m68k_serial * info, unsigned int *value)
973 m68328_uart *uart = &uart_addr[info->line]; 959 m68328_uart *uart = &uart_addr[info->line];
974#endif 960#endif
975 unsigned char status; 961 unsigned char status;
962 unsigned long flags;
976 963
977 cli(); 964 local_irq_save(flags);
978#ifdef CONFIG_SERIAL_68328_RTS_CTS 965#ifdef CONFIG_SERIAL_68328_RTS_CTS
979 status = (uart->utx.w & UTX_CTS_STAT) ? 1 : 0; 966 status = (uart->utx.w & UTX_CTS_STAT) ? 1 : 0;
980#else 967#else
981 status = 0; 968 status = 0;
982#endif 969#endif
983 sti(); 970 local_irq_restore(flags);
984 put_user(status,value); 971 put_user(status,value);
985 return 0; 972 return 0;
986} 973}
@@ -994,14 +981,13 @@ static void send_break(struct m68k_serial * info, unsigned int duration)
994 unsigned long flags; 981 unsigned long flags;
995 if (!info->port) 982 if (!info->port)
996 return; 983 return;
997 save_flags(flags); 984 local_irq_save(flags);
998 cli();
999#ifdef USE_INTS 985#ifdef USE_INTS
1000 uart->utx.w |= UTX_SEND_BREAK; 986 uart->utx.w |= UTX_SEND_BREAK;
1001 msleep_interruptible(duration); 987 msleep_interruptible(duration);
1002 uart->utx.w &= ~UTX_SEND_BREAK; 988 uart->utx.w &= ~UTX_SEND_BREAK;
1003#endif 989#endif
1004 restore_flags(flags); 990 local_irq_restore(flags);
1005} 991}
1006 992
1007static int rs_ioctl(struct tty_struct *tty, struct file * file, 993static int rs_ioctl(struct tty_struct *tty, struct file * file,
@@ -1060,7 +1046,7 @@ static int rs_ioctl(struct tty_struct *tty, struct file * file,
1060 (struct serial_struct *) arg); 1046 (struct serial_struct *) arg);
1061 case TIOCSERGETLSR: /* Get line status register */ 1047 case TIOCSERGETLSR: /* Get line status register */
1062 if (access_ok(VERIFY_WRITE, (void *) arg, 1048 if (access_ok(VERIFY_WRITE, (void *) arg,
1063 sizeof(unsigned int)); 1049 sizeof(unsigned int)))
1064 return get_lsr_info(info, (unsigned int *) arg); 1050 return get_lsr_info(info, (unsigned int *) arg);
1065 return -EFAULT; 1051 return -EFAULT;
1066 case TIOCSERGSTRUCT: 1052 case TIOCSERGSTRUCT:
@@ -1113,10 +1099,10 @@ static void rs_close(struct tty_struct *tty, struct file * filp)
1113 if (!info || serial_paranoia_check(info, tty->name, "rs_close")) 1099 if (!info || serial_paranoia_check(info, tty->name, "rs_close"))
1114 return; 1100 return;
1115 1101
1116 save_flags(flags); cli(); 1102 local_irq_save(flags);
1117 1103
1118 if (tty_hung_up_p(filp)) { 1104 if (tty_hung_up_p(filp)) {
1119 restore_flags(flags); 1105 local_irq_restore(flags);
1120 return; 1106 return;
1121 } 1107 }
1122 1108
@@ -1138,7 +1124,7 @@ static void rs_close(struct tty_struct *tty, struct file * filp)
1138 info->count = 0; 1124 info->count = 0;
1139 } 1125 }
1140 if (info->count) { 1126 if (info->count) {
1141 restore_flags(flags); 1127 local_irq_restore(flags);
1142 return; 1128 return;
1143 } 1129 }
1144 info->flags |= S_CLOSING; 1130 info->flags |= S_CLOSING;
@@ -1186,7 +1172,7 @@ static void rs_close(struct tty_struct *tty, struct file * filp)
1186 } 1172 }
1187 info->flags &= ~(S_NORMAL_ACTIVE|S_CLOSING); 1173 info->flags &= ~(S_NORMAL_ACTIVE|S_CLOSING);
1188 wake_up_interruptible(&info->close_wait); 1174 wake_up_interruptible(&info->close_wait);
1189 restore_flags(flags); 1175 local_irq_restore(flags);
1190} 1176}
1191 1177
1192/* 1178/*
@@ -1262,9 +1248,9 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp,
1262 info->count--; 1248 info->count--;
1263 info->blocked_open++; 1249 info->blocked_open++;
1264 while (1) { 1250 while (1) {
1265 cli(); 1251 local_irq_disable();
1266 m68k_rtsdtr(info, 1); 1252 m68k_rtsdtr(info, 1);
1267 sti(); 1253 local_irq_enable();
1268 current->state = TASK_INTERRUPTIBLE; 1254 current->state = TASK_INTERRUPTIBLE;
1269 if (tty_hung_up_p(filp) || 1255 if (tty_hung_up_p(filp) ||
1270 !(info->flags & S_INITIALIZED)) { 1256 !(info->flags & S_INITIALIZED)) {
@@ -1444,7 +1430,7 @@ rs68328_init(void)
1444 return -ENOMEM; 1430 return -ENOMEM;
1445 } 1431 }
1446 1432
1447 save_flags(flags); cli(); 1433 local_irq_save(flags);
1448 1434
1449 for(i=0;i<NR_PORTS;i++) { 1435 for(i=0;i<NR_PORTS;i++) {
1450 1436
@@ -1489,7 +1475,7 @@ rs68328_init(void)
1489 serial_pm[i]->data = info; 1475 serial_pm[i]->data = info;
1490#endif 1476#endif
1491 } 1477 }
1492 restore_flags(flags); 1478 local_irq_restore(flags);
1493 return 0; 1479 return 0;
1494} 1480}
1495 1481
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index bbf78aaf9e01..f361b356bd1d 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -2354,7 +2354,6 @@ int __init serial8250_start_console(struct uart_port *port, char *options)
2354static struct uart_driver serial8250_reg = { 2354static struct uart_driver serial8250_reg = {
2355 .owner = THIS_MODULE, 2355 .owner = THIS_MODULE,
2356 .driver_name = "serial", 2356 .driver_name = "serial",
2357 .devfs_name = "tts/",
2358 .dev_name = "ttyS", 2357 .dev_name = "ttyS",
2359 .major = TTY_MAJOR, 2358 .major = TTY_MAJOR,
2360 .minor = 64, 2359 .minor = 64,
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c
index 94886c000d2a..864ef859be56 100644
--- a/drivers/serial/8250_pci.c
+++ b/drivers/serial/8250_pci.c
@@ -594,8 +594,8 @@ pci_default_setup(struct serial_private *priv, struct pciserial_board *board,
594 else 594 else
595 offset += idx * board->uart_offset; 595 offset += idx * board->uart_offset;
596 596
597 maxnr = (pci_resource_len(priv->dev, bar) - board->first_offset) / 597 maxnr = (pci_resource_len(priv->dev, bar) - board->first_offset) >>
598 (8 << board->reg_shift); 598 (board->reg_shift + 3);
599 599
600 if (board->flags & FL_REGION_SZ_CAP && idx >= maxnr) 600 if (board->flags & FL_REGION_SZ_CAP && idx >= maxnr)
601 return 1; 601 return 1;
diff --git a/drivers/serial/at91_serial.c b/drivers/serial/at91_serial.c
index db5b25fafed4..df9500bdaded 100644
--- a/drivers/serial/at91_serial.c
+++ b/drivers/serial/at91_serial.c
@@ -863,7 +863,6 @@ static struct uart_driver at91_uart = {
863 .owner = THIS_MODULE, 863 .owner = THIS_MODULE,
864 .driver_name = "at91_serial", 864 .driver_name = "at91_serial",
865 .dev_name = AT91_DEVICENAME, 865 .dev_name = AT91_DEVICENAME,
866 .devfs_name = AT91_DEVICENAME,
867 .major = SERIAL_AT91_MAJOR, 866 .major = SERIAL_AT91_MAJOR,
868 .minor = MINOR_START, 867 .minor = MINOR_START,
869 .nr = AT91_NR_UART, 868 .nr = AT91_NR_UART,
diff --git a/drivers/serial/crisv10.c b/drivers/serial/crisv10.c
index 89700141f87e..b84137cdeb2b 100644
--- a/drivers/serial/crisv10.c
+++ b/drivers/serial/crisv10.c
@@ -2573,12 +2573,6 @@ static void flush_to_flip_buffer(struct e100_serial *info)
2573 2573
2574 DFLIP( 2574 DFLIP(
2575 if (1) { 2575 if (1) {
2576
2577 if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
2578 DEBUG_LOG(info->line, "*** TTY_DONT_FLIP set flip.count %i ***\n", tty->flip.count);
2579 DEBUG_LOG(info->line, "*** recv_cnt %i\n", info->recv_cnt);
2580 } else {
2581 }
2582 DEBUG_LOG(info->line, "*** rxtot %i\n", info->icount.rx); 2576 DEBUG_LOG(info->line, "*** rxtot %i\n", info->icount.rx);
2583 DEBUG_LOG(info->line, "ldisc %lu\n", tty->ldisc.chars_in_buffer(tty)); 2577 DEBUG_LOG(info->line, "ldisc %lu\n", tty->ldisc.chars_in_buffer(tty));
2584 DEBUG_LOG(info->line, "room %lu\n", tty->ldisc.receive_room(tty)); 2578 DEBUG_LOG(info->line, "room %lu\n", tty->ldisc.receive_room(tty));
@@ -4884,7 +4878,7 @@ rs_init(void)
4884 driver->init_termios = tty_std_termios; 4878 driver->init_termios = tty_std_termios;
4885 driver->init_termios.c_cflag = 4879 driver->init_termios.c_cflag =
4886 B115200 | CS8 | CREAD | HUPCL | CLOCAL; /* is normally B9600 default... */ 4880 B115200 | CS8 | CREAD | HUPCL | CLOCAL; /* is normally B9600 default... */
4887 driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; 4881 driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
4888 driver->termios = serial_termios; 4882 driver->termios = serial_termios;
4889 driver->termios_locked = serial_termios_locked; 4883 driver->termios_locked = serial_termios_locked;
4890 4884
diff --git a/drivers/serial/dz.c b/drivers/serial/dz.c
index bf71bad5c34f..466d06cc7d37 100644
--- a/drivers/serial/dz.c
+++ b/drivers/serial/dz.c
@@ -768,11 +768,7 @@ void __init dz_serial_console_init(void)
768static struct uart_driver dz_reg = { 768static struct uart_driver dz_reg = {
769 .owner = THIS_MODULE, 769 .owner = THIS_MODULE,
770 .driver_name = "serial", 770 .driver_name = "serial",
771#ifdef CONFIG_DEVFS
772 .dev_name = "tts/%d",
773#else
774 .dev_name = "ttyS%d", 771 .dev_name = "ttyS%d",
775#endif
776 .major = TTY_MAJOR, 772 .major = TTY_MAJOR,
777 .minor = 64, 773 .minor = 64,
778 .nr = DZ_NB_PORT, 774 .nr = DZ_NB_PORT,
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c
index d202eb4f3848..da85bafa0942 100644
--- a/drivers/serial/imx.c
+++ b/drivers/serial/imx.c
@@ -888,7 +888,6 @@ static struct uart_driver imx_reg = {
888 .owner = THIS_MODULE, 888 .owner = THIS_MODULE,
889 .driver_name = DRIVER_NAME, 889 .driver_name = DRIVER_NAME,
890 .dev_name = "ttySMX", 890 .dev_name = "ttySMX",
891 .devfs_name = "ttsmx/",
892 .major = SERIAL_IMX_MAJOR, 891 .major = SERIAL_IMX_MAJOR,
893 .minor = MINOR_START, 892 .minor = MINOR_START,
894 .nr = ARRAY_SIZE(imx_ports), 893 .nr = ARRAY_SIZE(imx_ports),
diff --git a/drivers/serial/ip22zilog.c b/drivers/serial/ip22zilog.c
index 651772474ac1..56b093ecd779 100644
--- a/drivers/serial/ip22zilog.c
+++ b/drivers/serial/ip22zilog.c
@@ -1085,7 +1085,6 @@ static struct console ip22zilog_console = {
1085static struct uart_driver ip22zilog_reg = { 1085static struct uart_driver ip22zilog_reg = {
1086 .owner = THIS_MODULE, 1086 .owner = THIS_MODULE,
1087 .driver_name = "serial", 1087 .driver_name = "serial",
1088 .devfs_name = "tts/",
1089 .dev_name = "ttyS", 1088 .dev_name = "ttyS",
1090 .major = TTY_MAJOR, 1089 .major = TTY_MAJOR,
1091 .minor = 64, 1090 .minor = 64,
diff --git a/drivers/serial/jsm/jsm_tty.c b/drivers/serial/jsm/jsm_tty.c
index 7d823705193c..f8262e6ad8d3 100644
--- a/drivers/serial/jsm/jsm_tty.c
+++ b/drivers/serial/jsm/jsm_tty.c
@@ -589,13 +589,6 @@ void jsm_input(struct jsm_channel *ch)
589 ld = tty_ldisc_ref(tp); 589 ld = tty_ldisc_ref(tp);
590 590
591 /* 591 /*
592 * If the DONT_FLIP flag is on, don't flush our buffer, and act
593 * like the ld doesn't have any space to put the data right now.
594 */
595 if (test_bit(TTY_DONT_FLIP, &tp->flags))
596 len = 0;
597
598 /*
599 * If we were unable to get a reference to the ld, 592 * If we were unable to get a reference to the ld,
600 * don't flush our buffer, and act like the ld doesn't 593 * don't flush our buffer, and act like the ld doesn't
601 * have any space to put the data right now. 594 * have any space to put the data right now.
diff --git a/drivers/serial/m32r_sio.c b/drivers/serial/m32r_sio.c
index 321a40f33b50..6a2a25d9b596 100644
--- a/drivers/serial/m32r_sio.c
+++ b/drivers/serial/m32r_sio.c
@@ -1131,7 +1131,6 @@ console_initcall(m32r_sio_console_init);
1131static struct uart_driver m32r_sio_reg = { 1131static struct uart_driver m32r_sio_reg = {
1132 .owner = THIS_MODULE, 1132 .owner = THIS_MODULE,
1133 .driver_name = "sio", 1133 .driver_name = "sio",
1134 .devfs_name = "tts/",
1135 .dev_name = "ttyS", 1134 .dev_name = "ttyS",
1136 .major = TTY_MAJOR, 1135 .major = TTY_MAJOR,
1137 .minor = 64, 1136 .minor = 64,
diff --git a/drivers/serial/mcfserial.c b/drivers/serial/mcfserial.c
index 8ad242934368..29c0630e3e64 100644
--- a/drivers/serial/mcfserial.c
+++ b/drivers/serial/mcfserial.c
@@ -1713,7 +1713,6 @@ mcfrs_init(void)
1713 /* Initialize the tty_driver structure */ 1713 /* Initialize the tty_driver structure */
1714 mcfrs_serial_driver->owner = THIS_MODULE; 1714 mcfrs_serial_driver->owner = THIS_MODULE;
1715 mcfrs_serial_driver->name = "ttyS"; 1715 mcfrs_serial_driver->name = "ttyS";
1716 mcfrs_serial_driver->devfs_name = "ttys/";
1717 mcfrs_serial_driver->driver_name = "serial"; 1716 mcfrs_serial_driver->driver_name = "serial";
1718 mcfrs_serial_driver->major = TTY_MAJOR; 1717 mcfrs_serial_driver->major = TTY_MAJOR;
1719 mcfrs_serial_driver->minor_start = 64; 1718 mcfrs_serial_driver->minor_start = 64;
diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c
index 6459edc7f5c5..1aa34844218c 100644
--- a/drivers/serial/mpc52xx_uart.c
+++ b/drivers/serial/mpc52xx_uart.c
@@ -693,7 +693,6 @@ static struct uart_driver mpc52xx_uart_driver = {
693 .owner = THIS_MODULE, 693 .owner = THIS_MODULE,
694 .driver_name = "mpc52xx_psc_uart", 694 .driver_name = "mpc52xx_psc_uart",
695 .dev_name = "ttyPSC", 695 .dev_name = "ttyPSC",
696 .devfs_name = "ttyPSC",
697 .major = SERIAL_PSC_MAJOR, 696 .major = SERIAL_PSC_MAJOR,
698 .minor = SERIAL_PSC_MINOR, 697 .minor = SERIAL_PSC_MINOR,
699 .nr = MPC52xx_PSC_MAXNUM, 698 .nr = MPC52xx_PSC_MAXNUM,
diff --git a/drivers/serial/mpsc.c b/drivers/serial/mpsc.c
index 94681922ea0a..1cd102f84bfa 100644
--- a/drivers/serial/mpsc.c
+++ b/drivers/serial/mpsc.c
@@ -315,7 +315,6 @@ struct mpsc_port_info *mpsc_device_remove(int index);
315#define MPSC_MAJOR 204 315#define MPSC_MAJOR 204
316#define MPSC_MINOR_START 44 316#define MPSC_MINOR_START 44
317#define MPSC_DRIVER_NAME "MPSC" 317#define MPSC_DRIVER_NAME "MPSC"
318#define MPSC_DEVFS_NAME "ttymm/"
319#define MPSC_DEV_NAME "ttyMM" 318#define MPSC_DEV_NAME "ttyMM"
320#define MPSC_VERSION "1.00" 319#define MPSC_VERSION "1.00"
321 320
@@ -1863,7 +1862,6 @@ static struct platform_driver mpsc_shared_driver = {
1863static struct uart_driver mpsc_reg = { 1862static struct uart_driver mpsc_reg = {
1864 .owner = THIS_MODULE, 1863 .owner = THIS_MODULE,
1865 .driver_name = MPSC_DRIVER_NAME, 1864 .driver_name = MPSC_DRIVER_NAME,
1866 .devfs_name = MPSC_DEVFS_NAME,
1867 .dev_name = MPSC_DEV_NAME, 1865 .dev_name = MPSC_DEV_NAME,
1868 .major = MPSC_MAJOR, 1866 .major = MPSC_MAJOR,
1869 .minor = MPSC_MINOR_START, 1867 .minor = MPSC_MINOR_START,
diff --git a/drivers/serial/pmac_zilog.c b/drivers/serial/pmac_zilog.c
index 513ff8597707..e3ba7e17a240 100644
--- a/drivers/serial/pmac_zilog.c
+++ b/drivers/serial/pmac_zilog.c
@@ -101,7 +101,6 @@ static DEFINE_MUTEX(pmz_irq_mutex);
101static struct uart_driver pmz_uart_reg = { 101static struct uart_driver pmz_uart_reg = {
102 .owner = THIS_MODULE, 102 .owner = THIS_MODULE,
103 .driver_name = "ttyS", 103 .driver_name = "ttyS",
104 .devfs_name = "tts/",
105 .dev_name = "ttyS", 104 .dev_name = "ttyS",
106 .major = TTY_MAJOR, 105 .major = TTY_MAJOR,
107}; 106};
diff --git a/drivers/serial/pxa.c b/drivers/serial/pxa.c
index ae3649568541..0fa0ccc9ed27 100644
--- a/drivers/serial/pxa.c
+++ b/drivers/serial/pxa.c
@@ -780,7 +780,6 @@ static struct uart_pxa_port serial_pxa_ports[] = {
780static struct uart_driver serial_pxa_reg = { 780static struct uart_driver serial_pxa_reg = {
781 .owner = THIS_MODULE, 781 .owner = THIS_MODULE,
782 .driver_name = "PXA serial", 782 .driver_name = "PXA serial",
783 .devfs_name = "tts/",
784 .dev_name = "ttyS", 783 .dev_name = "ttyS",
785 .major = TTY_MAJOR, 784 .major = TTY_MAJOR,
786 .minor = 64, 785 .minor = 64,
diff --git a/drivers/serial/s3c2410.c b/drivers/serial/s3c2410.c
index 837b6da520b3..4c62ab949ecc 100644
--- a/drivers/serial/s3c2410.c
+++ b/drivers/serial/s3c2410.c
@@ -149,7 +149,6 @@ s3c24xx_serial_dbg(const char *fmt, ...)
149/* UART name and device definitions */ 149/* UART name and device definitions */
150 150
151#define S3C24XX_SERIAL_NAME "ttySAC" 151#define S3C24XX_SERIAL_NAME "ttySAC"
152#define S3C24XX_SERIAL_DEVFS "tts/"
153#define S3C24XX_SERIAL_MAJOR 204 152#define S3C24XX_SERIAL_MAJOR 204
154#define S3C24XX_SERIAL_MINOR 64 153#define S3C24XX_SERIAL_MINOR 64
155 154
@@ -952,7 +951,6 @@ static struct uart_driver s3c24xx_uart_drv = {
952 .nr = 3, 951 .nr = 3,
953 .cons = S3C24XX_SERIAL_CONSOLE, 952 .cons = S3C24XX_SERIAL_CONSOLE,
954 .driver_name = S3C24XX_SERIAL_NAME, 953 .driver_name = S3C24XX_SERIAL_NAME,
955 .devfs_name = S3C24XX_SERIAL_DEVFS,
956 .major = S3C24XX_SERIAL_MAJOR, 954 .major = S3C24XX_SERIAL_MAJOR,
957 .minor = S3C24XX_SERIAL_MINOR, 955 .minor = S3C24XX_SERIAL_MINOR,
958}; 956};
diff --git a/drivers/serial/sa1100.c b/drivers/serial/sa1100.c
index c2d9068b491d..8bbd8567669c 100644
--- a/drivers/serial/sa1100.c
+++ b/drivers/serial/sa1100.c
@@ -816,7 +816,6 @@ static struct uart_driver sa1100_reg = {
816 .owner = THIS_MODULE, 816 .owner = THIS_MODULE,
817 .driver_name = "ttySA", 817 .driver_name = "ttySA",
818 .dev_name = "ttySA", 818 .dev_name = "ttySA",
819 .devfs_name = "ttySA",
820 .major = SERIAL_SA1100_MAJOR, 819 .major = SERIAL_SA1100_MAJOR,
821 .minor = MINOR_START, 820 .minor = MINOR_START,
822 .nr = NR_PORTS, 821 .nr = NR_PORTS,
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
index 17839e753e4c..7dc1e67b6851 100644
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
@@ -2153,7 +2153,6 @@ int uart_register_driver(struct uart_driver *drv)
2153 2153
2154 normal->owner = drv->owner; 2154 normal->owner = drv->owner;
2155 normal->driver_name = drv->driver_name; 2155 normal->driver_name = drv->driver_name;
2156 normal->devfs_name = drv->devfs_name;
2157 normal->name = drv->dev_name; 2156 normal->name = drv->dev_name;
2158 normal->major = drv->major; 2157 normal->major = drv->major;
2159 normal->minor_start = drv->minor; 2158 normal->minor_start = drv->minor;
@@ -2161,7 +2160,7 @@ int uart_register_driver(struct uart_driver *drv)
2161 normal->subtype = SERIAL_TYPE_NORMAL; 2160 normal->subtype = SERIAL_TYPE_NORMAL;
2162 normal->init_termios = tty_std_termios; 2161 normal->init_termios = tty_std_termios;
2163 normal->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; 2162 normal->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL;
2164 normal->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; 2163 normal->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
2165 normal->driver_state = drv; 2164 normal->driver_state = drv;
2166 tty_set_operations(normal, &uart_ops); 2165 tty_set_operations(normal, &uart_ops);
2167 2166
@@ -2312,7 +2311,7 @@ int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port)
2312 mutex_unlock(&state->mutex); 2311 mutex_unlock(&state->mutex);
2313 2312
2314 /* 2313 /*
2315 * Remove the devices from devfs 2314 * Remove the devices from the tty layer
2316 */ 2315 */
2317 tty_unregister_device(drv->tty_driver, port->line); 2316 tty_unregister_device(drv->tty_driver, port->line);
2318 2317
diff --git a/drivers/serial/serial_txx9.c b/drivers/serial/serial_txx9.c
index 3bdee64d1a99..a901a7e446f3 100644
--- a/drivers/serial/serial_txx9.c
+++ b/drivers/serial/serial_txx9.c
@@ -69,12 +69,10 @@ static char *serial_name = "TX39/49 Serial driver";
69#if !defined(CONFIG_SERIAL_TXX9_STDSERIAL) 69#if !defined(CONFIG_SERIAL_TXX9_STDSERIAL)
70/* "ttyS" is used for standard serial driver */ 70/* "ttyS" is used for standard serial driver */
71#define TXX9_TTY_NAME "ttyTX" 71#define TXX9_TTY_NAME "ttyTX"
72#define TXX9_TTY_DEVFS_NAME "tttx/"
73#define TXX9_TTY_MINOR_START (64 + 64) /* ttyTX0(128), ttyTX1(129) */ 72#define TXX9_TTY_MINOR_START (64 + 64) /* ttyTX0(128), ttyTX1(129) */
74#else 73#else
75/* acts like standard serial driver */ 74/* acts like standard serial driver */
76#define TXX9_TTY_NAME "ttyS" 75#define TXX9_TTY_NAME "ttyS"
77#define TXX9_TTY_DEVFS_NAME "tts/"
78#define TXX9_TTY_MINOR_START 64 76#define TXX9_TTY_MINOR_START 64
79#endif 77#endif
80#define TXX9_TTY_MAJOR TTY_MAJOR 78#define TXX9_TTY_MAJOR TTY_MAJOR
@@ -971,7 +969,6 @@ console_initcall(serial_txx9_console_init);
971static struct uart_driver serial_txx9_reg = { 969static struct uart_driver serial_txx9_reg = {
972 .owner = THIS_MODULE, 970 .owner = THIS_MODULE,
973 .driver_name = "serial_txx9", 971 .driver_name = "serial_txx9",
974 .devfs_name = TXX9_TTY_DEVFS_NAME,
975 .dev_name = TXX9_TTY_NAME, 972 .dev_name = TXX9_TTY_NAME,
976 .major = TXX9_TTY_MAJOR, 973 .major = TXX9_TTY_MAJOR,
977 .minor = TXX9_TTY_MINOR_START, 974 .minor = TXX9_TTY_MINOR_START,
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c
index 44f6bf79bbe1..d97f3ca6cc29 100644
--- a/drivers/serial/sh-sci.c
+++ b/drivers/serial/sh-sci.c
@@ -1699,9 +1699,6 @@ static char banner[] __initdata =
1699static struct uart_driver sci_uart_driver = { 1699static struct uart_driver sci_uart_driver = {
1700 .owner = THIS_MODULE, 1700 .owner = THIS_MODULE,
1701 .driver_name = "sci", 1701 .driver_name = "sci",
1702#ifdef CONFIG_DEVFS_FS
1703 .devfs_name = "ttsc/",
1704#endif
1705 .dev_name = "ttySC", 1702 .dev_name = "ttySC",
1706 .major = SCI_MAJOR, 1703 .major = SCI_MAJOR,
1707 .minor = SCI_MINOR_START, 1704 .minor = SCI_MINOR_START,
diff --git a/drivers/serial/sunhv.c b/drivers/serial/sunhv.c
index ba22e256c6f7..d36bc4003399 100644
--- a/drivers/serial/sunhv.c
+++ b/drivers/serial/sunhv.c
@@ -353,7 +353,6 @@ static struct uart_ops sunhv_pops = {
353static struct uart_driver sunhv_reg = { 353static struct uart_driver sunhv_reg = {
354 .owner = THIS_MODULE, 354 .owner = THIS_MODULE,
355 .driver_name = "serial", 355 .driver_name = "serial",
356 .devfs_name = "tts/",
357 .dev_name = "ttyS", 356 .dev_name = "ttyS",
358 .major = TTY_MAJOR, 357 .major = TTY_MAJOR,
359}; 358};
diff --git a/drivers/serial/sunsab.c b/drivers/serial/sunsab.c
index e4c0fd2d6a9d..7da02d11c364 100644
--- a/drivers/serial/sunsab.c
+++ b/drivers/serial/sunsab.c
@@ -851,7 +851,6 @@ static struct uart_ops sunsab_pops = {
851static struct uart_driver sunsab_reg = { 851static struct uart_driver sunsab_reg = {
852 .owner = THIS_MODULE, 852 .owner = THIS_MODULE,
853 .driver_name = "serial", 853 .driver_name = "serial",
854 .devfs_name = "tts/",
855 .dev_name = "ttyS", 854 .dev_name = "ttyS",
856 .major = TTY_MAJOR, 855 .major = TTY_MAJOR,
857}; 856};
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c
index 0268b307c01e..6e28c25138cf 100644
--- a/drivers/serial/sunsu.c
+++ b/drivers/serial/sunsu.c
@@ -1265,7 +1265,6 @@ out:
1265static struct uart_driver sunsu_reg = { 1265static struct uart_driver sunsu_reg = {
1266 .owner = THIS_MODULE, 1266 .owner = THIS_MODULE,
1267 .driver_name = "serial", 1267 .driver_name = "serial",
1268 .devfs_name = "tts/",
1269 .dev_name = "ttyS", 1268 .dev_name = "ttyS",
1270 .major = TTY_MAJOR, 1269 .major = TTY_MAJOR,
1271}; 1270};
diff --git a/drivers/serial/sunzilog.c b/drivers/serial/sunzilog.c
index 76c9bac9271f..9f42677287ad 100644
--- a/drivers/serial/sunzilog.c
+++ b/drivers/serial/sunzilog.c
@@ -1017,7 +1017,6 @@ static int zilog_irq = -1;
1017static struct uart_driver sunzilog_reg = { 1017static struct uart_driver sunzilog_reg = {
1018 .owner = THIS_MODULE, 1018 .owner = THIS_MODULE,
1019 .driver_name = "ttyS", 1019 .driver_name = "ttyS",
1020 .devfs_name = "tts/",
1021 .dev_name = "ttyS", 1020 .dev_name = "ttyS",
1022 .major = TTY_MAJOR, 1021 .major = TTY_MAJOR,
1023}; 1022};
diff --git a/drivers/serial/v850e_uart.c b/drivers/serial/v850e_uart.c
index df705fda4243..a0da2aaf71c4 100644
--- a/drivers/serial/v850e_uart.c
+++ b/drivers/serial/v850e_uart.c
@@ -468,7 +468,6 @@ static struct uart_ops v850e_uart_ops = {
468static struct uart_driver v850e_uart_driver = { 468static struct uart_driver v850e_uart_driver = {
469 .owner = THIS_MODULE, 469 .owner = THIS_MODULE,
470 .driver_name = "v850e_uart", 470 .driver_name = "v850e_uart",
471 .devfs_name = "tts/",
472 .dev_name = "ttyS", 471 .dev_name = "ttyS",
473 .major = TTY_MAJOR, 472 .major = TTY_MAJOR,
474 .minor = V850E_UART_MINOR_BASE, 473 .minor = V850E_UART_MINOR_BASE,
diff --git a/drivers/serial/vr41xx_siu.c b/drivers/serial/vr41xx_siu.c
index df5e8713fa31..017571ffa19c 100644
--- a/drivers/serial/vr41xx_siu.c
+++ b/drivers/serial/vr41xx_siu.c
@@ -911,7 +911,6 @@ static struct uart_driver siu_uart_driver = {
911 .owner = THIS_MODULE, 911 .owner = THIS_MODULE,
912 .driver_name = "SIU", 912 .driver_name = "SIU",
913 .dev_name = "ttyVR", 913 .dev_name = "ttyVR",
914 .devfs_name = "ttvr/",
915 .major = SIU_MAJOR, 914 .major = SIU_MAJOR,
916 .minor = SIU_MINOR_BASE, 915 .minor = SIU_MINOR_BASE,
917 .cons = SERIAL_VR41XX_CONSOLE, 916 .cons = SERIAL_VR41XX_CONSOLE,