1 /* 2 * Driver core for serial ports 3 * 4 * Based on drivers/char/serial.c, by Linus Torvalds, Theodore Ts'o. 5 * 6 * Copyright 1999 ARM Limited 7 * Copyright (C) 2000-2001 Deep Blue Solutions Ltd. 8 * 9 * This program is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License as published by 11 * the Free Software Foundation; either version 2 of the License, or 12 * (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program; if not, write to the Free Software 21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 */ 23 #include <linux/module.h> 24 #include <linux/tty.h> 25 #include <linux/tty_flip.h> 26 #include <linux/slab.h> 27 #include <linux/init.h> 28 #include <linux/console.h> 29 #include <linux/proc_fs.h> 30 #include <linux/seq_file.h> 31 #include <linux/device.h> 32 #include <linux/serial.h> /* for serial_state and serial_icounter_struct */ 33 #include <linux/serial_core.h> 34 #include <linux/delay.h> 35 #include <linux/mutex.h> 36 37 #include <asm/irq.h> 38 #include <asm/uaccess.h> 39 40 /* 41 * This is used to lock changes in serial line configuration. 42 */ 43 static DEFINE_MUTEX(port_mutex); 44 45 /* 46 * lockdep: port->lock is initialized in two places, but we 47 * want only one lock-class: 48 */ 49 static struct lock_class_key port_lock_key; 50 51 #define HIGH_BITS_OFFSET ((sizeof(long)-sizeof(int))*8) 52 53 static void uart_change_speed(struct tty_struct *tty, struct uart_state *state, 54 struct ktermios *old_termios); 55 static void uart_wait_until_sent(struct tty_struct *tty, int timeout); 56 static void uart_change_pm(struct uart_state *state, 57 enum uart_pm_state pm_state); 58 59 static void uart_port_shutdown(struct tty_port *port); 60 61 /* 62 * This routine is used by the interrupt handler to schedule processing in 63 * the software interrupt portion of the driver. 64 */ 65 void uart_write_wakeup(struct uart_port *port) 66 { 67 struct uart_state *state = port->state; 68 /* 69 * This means you called this function _after_ the port was 70 * closed. No cookie for you. 71 */ 72 BUG_ON(!state); 73 tty_wakeup(state->port.tty); 74 } 75 76 static void uart_stop(struct tty_struct *tty) 77 { 78 struct uart_state *state = tty->driver_data; 79 struct uart_port *port = state->uart_port; 80 unsigned long flags; 81 82 spin_lock_irqsave(&port->lock, flags); 83 port->ops->stop_tx(port); 84 spin_unlock_irqrestore(&port->lock, flags); 85 } 86 87 static void __uart_start(struct tty_struct *tty) 88 { 89 struct uart_state *state = tty->driver_data; 90 struct uart_port *port = state->uart_port; 91 92 if (!tty->stopped && !tty->hw_stopped) 93 port->ops->start_tx(port); 94 } 95 96 static void uart_start(struct tty_struct *tty) 97 { 98 struct uart_state *state = tty->driver_data; 99 struct uart_port *port = state->uart_port; 100 unsigned long flags; 101 102 spin_lock_irqsave(&port->lock, flags); 103 __uart_start(tty); 104 spin_unlock_irqrestore(&port->lock, flags); 105 } 106 107 static inline void 108 uart_update_mctrl(struct uart_port *port, unsigned int set, unsigned int clear) 109 { 110 unsigned long flags; 111 unsigned int old; 112 113 spin_lock_irqsave(&port->lock, flags); 114 old = port->mctrl; 115 port->mctrl = (old & ~clear) | set; 116 if (old != port->mctrl) 117 port->ops->set_mctrl(port, port->mctrl); 118 spin_unlock_irqrestore(&port->lock, flags); 119 } 120 121 #define uart_set_mctrl(port, set) uart_update_mctrl(port, set, 0) 122 #define uart_clear_mctrl(port, clear) uart_update_mctrl(port, 0, clear) 123 124 /* 125 * Startup the port. This will be called once per open. All calls 126 * will be serialised by the per-port mutex. 127 */ 128 static int uart_port_startup(struct tty_struct *tty, struct uart_state *state, 129 int init_hw) 130 { 131 struct uart_port *uport = state->uart_port; 132 struct tty_port *port = &state->port; 133 unsigned long page; 134 int retval = 0; 135 136 if (uport->type == PORT_UNKNOWN) 137 return 1; 138 139 /* 140 * Make sure the device is in D0 state. 141 */ 142 uart_change_pm(state, UART_PM_STATE_ON); 143 144 /* 145 * Initialise and allocate the transmit and temporary 146 * buffer. 147 */ 148 if (!state->xmit.buf) { 149 /* This is protected by the per port mutex */ 150 page = get_zeroed_page(GFP_KERNEL); 151 if (!page) 152 return -ENOMEM; 153 154 state->xmit.buf = (unsigned char *) page; 155 uart_circ_clear(&state->xmit); 156 } 157 158 retval = uport->ops->startup(uport); 159 if (retval == 0) { 160 if (uart_console(uport) && uport->cons->cflag) { 161 tty->termios.c_cflag = uport->cons->cflag; 162 uport->cons->cflag = 0; 163 } 164 /* 165 * Initialise the hardware port settings. 166 */ 167 uart_change_speed(tty, state, NULL); 168 169 if (init_hw) { 170 /* 171 * Setup the RTS and DTR signals once the 172 * port is open and ready to respond. 173 */ 174 if (tty->termios.c_cflag & CBAUD) 175 uart_set_mctrl(uport, TIOCM_RTS | TIOCM_DTR); 176 } 177 178 if (tty_port_cts_enabled(port)) { 179 spin_lock_irq(&uport->lock); 180 if (!(uport->ops->get_mctrl(uport) & TIOCM_CTS)) 181 tty->hw_stopped = 1; 182 spin_unlock_irq(&uport->lock); 183 } 184 } 185 186 /* 187 * This is to allow setserial on this port. People may want to set 188 * port/irq/type and then reconfigure the port properly if it failed 189 * now. 190 */ 191 if (retval && capable(CAP_SYS_ADMIN)) 192 return 1; 193 194 return retval; 195 } 196 197 static int uart_startup(struct tty_struct *tty, struct uart_state *state, 198 int init_hw) 199 { 200 struct tty_port *port = &state->port; 201 int retval; 202 203 if (port->flags & ASYNC_INITIALIZED) 204 return 0; 205 206 /* 207 * Set the TTY IO error marker - we will only clear this 208 * once we have successfully opened the port. 209 */ 210 set_bit(TTY_IO_ERROR, &tty->flags); 211 212 retval = uart_port_startup(tty, state, init_hw); 213 if (!retval) { 214 set_bit(ASYNCB_INITIALIZED, &port->flags); 215 clear_bit(TTY_IO_ERROR, &tty->flags); 216 } else if (retval > 0) 217 retval = 0; 218 219 return retval; 220 } 221 222 /* 223 * This routine will shutdown a serial port; interrupts are disabled, and 224 * DTR is dropped if the hangup on close termio flag is on. Calls to 225 * uart_shutdown are serialised by the per-port semaphore. 226 */ 227 static void uart_shutdown(struct tty_struct *tty, struct uart_state *state) 228 { 229 struct uart_port *uport = state->uart_port; 230 struct tty_port *port = &state->port; 231 232 /* 233 * Set the TTY IO error marker 234 */ 235 if (tty) 236 set_bit(TTY_IO_ERROR, &tty->flags); 237 238 if (test_and_clear_bit(ASYNCB_INITIALIZED, &port->flags)) { 239 /* 240 * Turn off DTR and RTS early. 241 */ 242 if (!tty || (tty->termios.c_cflag & HUPCL)) 243 uart_clear_mctrl(uport, TIOCM_DTR | TIOCM_RTS); 244 245 uart_port_shutdown(port); 246 } 247 248 /* 249 * It's possible for shutdown to be called after suspend if we get 250 * a DCD drop (hangup) at just the right time. Clear suspended bit so 251 * we don't try to resume a port that has been shutdown. 252 */ 253 clear_bit(ASYNCB_SUSPENDED, &port->flags); 254 255 /* 256 * Free the transmit buffer page. 257 */ 258 if (state->xmit.buf) { 259 free_page((unsigned long)state->xmit.buf); 260 state->xmit.buf = NULL; 261 } 262 } 263 264 /** 265 * uart_update_timeout - update per-port FIFO timeout. 266 * @port: uart_port structure describing the port 267 * @cflag: termios cflag value 268 * @baud: speed of the port 269 * 270 * Set the port FIFO timeout value. The @cflag value should 271 * reflect the actual hardware settings. 272 */ 273 void 274 uart_update_timeout(struct uart_port *port, unsigned int cflag, 275 unsigned int baud) 276 { 277 unsigned int bits; 278 279 /* byte size and parity */ 280 switch (cflag & CSIZE) { 281 case CS5: 282 bits = 7; 283 break; 284 case CS6: 285 bits = 8; 286 break; 287 case CS7: 288 bits = 9; 289 break; 290 default: 291 bits = 10; 292 break; /* CS8 */ 293 } 294 295 if (cflag & CSTOPB) 296 bits++; 297 if (cflag & PARENB) 298 bits++; 299 300 /* 301 * The total number of bits to be transmitted in the fifo. 302 */ 303 bits = bits * port->fifosize; 304 305 /* 306 * Figure the timeout to send the above number of bits. 307 * Add .02 seconds of slop 308 */ 309 port->timeout = (HZ * bits) / baud + HZ/50; 310 } 311 312 EXPORT_SYMBOL(uart_update_timeout); 313 314 /** 315 * uart_get_baud_rate - return baud rate for a particular port 316 * @port: uart_port structure describing the port in question. 317 * @termios: desired termios settings. 318 * @old: old termios (or NULL) 319 * @min: minimum acceptable baud rate 320 * @max: maximum acceptable baud rate 321 * 322 * Decode the termios structure into a numeric baud rate, 323 * taking account of the magic 38400 baud rate (with spd_* 324 * flags), and mapping the %B0 rate to 9600 baud. 325 * 326 * If the new baud rate is invalid, try the old termios setting. 327 * If it's still invalid, we try 9600 baud. 328 * 329 * Update the @termios structure to reflect the baud rate 330 * we're actually going to be using. Don't do this for the case 331 * where B0 is requested ("hang up"). 332 */ 333 unsigned int 334 uart_get_baud_rate(struct uart_port *port, struct ktermios *termios, 335 struct ktermios *old, unsigned int min, unsigned int max) 336 { 337 unsigned int try, baud, altbaud = 38400; 338 int hung_up = 0; 339 upf_t flags = port->flags & UPF_SPD_MASK; 340 341 if (flags == UPF_SPD_HI) 342 altbaud = 57600; 343 else if (flags == UPF_SPD_VHI) 344 altbaud = 115200; 345 else if (flags == UPF_SPD_SHI) 346 altbaud = 230400; 347 else if (flags == UPF_SPD_WARP) 348 altbaud = 460800; 349 350 for (try = 0; try < 2; try++) { 351 baud = tty_termios_baud_rate(termios); 352 353 /* 354 * The spd_hi, spd_vhi, spd_shi, spd_warp kludge... 355 * Die! Die! Die! 356 */ 357 if (baud == 38400) 358 baud = altbaud; 359 360 /* 361 * Special case: B0 rate. 362 */ 363 if (baud == 0) { 364 hung_up = 1; 365 baud = 9600; 366 } 367 368 if (baud >= min && baud <= max) 369 return baud; 370 371 /* 372 * Oops, the quotient was zero. Try again with 373 * the old baud rate if possible. 374 */ 375 termios->c_cflag &= ~CBAUD; 376 if (old) { 377 baud = tty_termios_baud_rate(old); 378 if (!hung_up) 379 tty_termios_encode_baud_rate(termios, 380 baud, baud); 381 old = NULL; 382 continue; 383 } 384 385 /* 386 * As a last resort, if the range cannot be met then clip to 387 * the nearest chip supported rate. 388 */ 389 if (!hung_up) { 390 if (baud <= min) 391 tty_termios_encode_baud_rate(termios, 392 min + 1, min + 1); 393 else 394 tty_termios_encode_baud_rate(termios, 395 max - 1, max - 1); 396 } 397 } 398 /* Should never happen */ 399 WARN_ON(1); 400 return 0; 401 } 402 403 EXPORT_SYMBOL(uart_get_baud_rate); 404 405 /** 406 * uart_get_divisor - return uart clock divisor 407 * @port: uart_port structure describing the port. 408 * @baud: desired baud rate 409 * 410 * Calculate the uart clock divisor for the port. 411 */ 412 unsigned int 413 uart_get_divisor(struct uart_port *port, unsigned int baud) 414 { 415 unsigned int quot; 416 417 /* 418 * Old custom speed handling. 419 */ 420 if (baud == 38400 && (port->flags & UPF_SPD_MASK) == UPF_SPD_CUST) 421 quot = port->custom_divisor; 422 else 423 quot = DIV_ROUND_CLOSEST(port->uartclk, 16 * baud); 424 425 return quot; 426 } 427 428 EXPORT_SYMBOL(uart_get_divisor); 429 430 /* FIXME: Consistent locking policy */ 431 static void uart_change_speed(struct tty_struct *tty, struct uart_state *state, 432 struct ktermios *old_termios) 433 { 434 struct tty_port *port = &state->port; 435 struct uart_port *uport = state->uart_port; 436 struct ktermios *termios; 437 438 /* 439 * If we have no tty, termios, or the port does not exist, 440 * then we can't set the parameters for this port. 441 */ 442 if (!tty || uport->type == PORT_UNKNOWN) 443 return; 444 445 termios = &tty->termios; 446 447 /* 448 * Set flags based on termios cflag 449 */ 450 if (termios->c_cflag & CRTSCTS) 451 set_bit(ASYNCB_CTS_FLOW, &port->flags); 452 else 453 clear_bit(ASYNCB_CTS_FLOW, &port->flags); 454 455 if (termios->c_cflag & CLOCAL) 456 clear_bit(ASYNCB_CHECK_CD, &port->flags); 457 else 458 set_bit(ASYNCB_CHECK_CD, &port->flags); 459 460 uport->ops->set_termios(uport, termios, old_termios); 461 } 462 463 static inline int __uart_put_char(struct uart_port *port, 464 struct circ_buf *circ, unsigned char c) 465 { 466 unsigned long flags; 467 int ret = 0; 468 469 if (!circ->buf) 470 return 0; 471 472 spin_lock_irqsave(&port->lock, flags); 473 if (uart_circ_chars_free(circ) != 0) { 474 circ->buf[circ->head] = c; 475 circ->head = (circ->head + 1) & (UART_XMIT_SIZE - 1); 476 ret = 1; 477 } 478 spin_unlock_irqrestore(&port->lock, flags); 479 return ret; 480 } 481 482 static int uart_put_char(struct tty_struct *tty, unsigned char ch) 483 { 484 struct uart_state *state = tty->driver_data; 485 486 return __uart_put_char(state->uart_port, &state->xmit, ch); 487 } 488 489 static void uart_flush_chars(struct tty_struct *tty) 490 { 491 uart_start(tty); 492 } 493 494 static int uart_write(struct tty_struct *tty, 495 const unsigned char *buf, int count) 496 { 497 struct uart_state *state = tty->driver_data; 498 struct uart_port *port; 499 struct circ_buf *circ; 500 unsigned long flags; 501 int c, ret = 0; 502 503 /* 504 * This means you called this function _after_ the port was 505 * closed. No cookie for you. 506 */ 507 if (!state) { 508 WARN_ON(1); 509 return -EL3HLT; 510 } 511 512 port = state->uart_port; 513 circ = &state->xmit; 514 515 if (!circ->buf) 516 return 0; 517 518 spin_lock_irqsave(&port->lock, flags); 519 while (1) { 520 c = CIRC_SPACE_TO_END(circ->head, circ->tail, UART_XMIT_SIZE); 521 if (count < c) 522 c = count; 523 if (c <= 0) 524 break; 525 memcpy(circ->buf + circ->head, buf, c); 526 circ->head = (circ->head + c) & (UART_XMIT_SIZE - 1); 527 buf += c; 528 count -= c; 529 ret += c; 530 } 531 spin_unlock_irqrestore(&port->lock, flags); 532 533 uart_start(tty); 534 return ret; 535 } 536 537 static int uart_write_room(struct tty_struct *tty) 538 { 539 struct uart_state *state = tty->driver_data; 540 unsigned long flags; 541 int ret; 542 543 spin_lock_irqsave(&state->uart_port->lock, flags); 544 ret = uart_circ_chars_free(&state->xmit); 545 spin_unlock_irqrestore(&state->uart_port->lock, flags); 546 return ret; 547 } 548 549 static int uart_chars_in_buffer(struct tty_struct *tty) 550 { 551 struct uart_state *state = tty->driver_data; 552 unsigned long flags; 553 int ret; 554 555 spin_lock_irqsave(&state->uart_port->lock, flags); 556 ret = uart_circ_chars_pending(&state->xmit); 557 spin_unlock_irqrestore(&state->uart_port->lock, flags); 558 return ret; 559 } 560 561 static void uart_flush_buffer(struct tty_struct *tty) 562 { 563 struct uart_state *state = tty->driver_data; 564 struct uart_port *port; 565 unsigned long flags; 566 567 /* 568 * This means you called this function _after_ the port was 569 * closed. No cookie for you. 570 */ 571 if (!state) { 572 WARN_ON(1); 573 return; 574 } 575 576 port = state->uart_port; 577 pr_debug("uart_flush_buffer(%d) called\n", tty->index); 578 579 spin_lock_irqsave(&port->lock, flags); 580 uart_circ_clear(&state->xmit); 581 if (port->ops->flush_buffer) 582 port->ops->flush_buffer(port); 583 spin_unlock_irqrestore(&port->lock, flags); 584 tty_wakeup(tty); 585 } 586 587 /* 588 * This function is used to send a high-priority XON/XOFF character to 589 * the device 590 */ 591 static void uart_send_xchar(struct tty_struct *tty, char ch) 592 { 593 struct uart_state *state = tty->driver_data; 594 struct uart_port *port = state->uart_port; 595 unsigned long flags; 596 597 if (port->ops->send_xchar) 598 port->ops->send_xchar(port, ch); 599 else { 600 port->x_char = ch; 601 if (ch) { 602 spin_lock_irqsave(&port->lock, flags); 603 port->ops->start_tx(port); 604 spin_unlock_irqrestore(&port->lock, flags); 605 } 606 } 607 } 608 609 static void uart_throttle(struct tty_struct *tty) 610 { 611 struct uart_state *state = tty->driver_data; 612 struct uart_port *port = state->uart_port; 613 uint32_t mask = 0; 614 615 if (I_IXOFF(tty)) 616 mask |= UPF_SOFT_FLOW; 617 if (tty->termios.c_cflag & CRTSCTS) 618 mask |= UPF_HARD_FLOW; 619 620 if (port->flags & mask) { 621 port->ops->throttle(port); 622 mask &= ~port->flags; 623 } 624 625 if (mask & UPF_SOFT_FLOW) 626 uart_send_xchar(tty, STOP_CHAR(tty)); 627 628 if (mask & UPF_HARD_FLOW) 629 uart_clear_mctrl(port, TIOCM_RTS); 630 } 631 632 static void uart_unthrottle(struct tty_struct *tty) 633 { 634 struct uart_state *state = tty->driver_data; 635 struct uart_port *port = state->uart_port; 636 uint32_t mask = 0; 637 638 if (I_IXOFF(tty)) 639 mask |= UPF_SOFT_FLOW; 640 if (tty->termios.c_cflag & CRTSCTS) 641 mask |= UPF_HARD_FLOW; 642 643 if (port->flags & mask) { 644 port->ops->unthrottle(port); 645 mask &= ~port->flags; 646 } 647 648 if (mask & UPF_SOFT_FLOW) { 649 if (port->x_char) 650 port->x_char = 0; 651 else 652 uart_send_xchar(tty, START_CHAR(tty)); 653 } 654 655 if (mask & UPF_HARD_FLOW) 656 uart_set_mctrl(port, TIOCM_RTS); 657 } 658 659 static void do_uart_get_info(struct tty_port *port, 660 struct serial_struct *retinfo) 661 { 662 struct uart_state *state = container_of(port, struct uart_state, port); 663 struct uart_port *uport = state->uart_port; 664 665 memset(retinfo, 0, sizeof(*retinfo)); 666 667 retinfo->type = uport->type; 668 retinfo->line = uport->line; 669 retinfo->port = uport->iobase; 670 if (HIGH_BITS_OFFSET) 671 retinfo->port_high = (long) uport->iobase >> HIGH_BITS_OFFSET; 672 retinfo->irq = uport->irq; 673 retinfo->flags = uport->flags; 674 retinfo->xmit_fifo_size = uport->fifosize; 675 retinfo->baud_base = uport->uartclk / 16; 676 retinfo->close_delay = jiffies_to_msecs(port->close_delay) / 10; 677 retinfo->closing_wait = port->closing_wait == ASYNC_CLOSING_WAIT_NONE ? 678 ASYNC_CLOSING_WAIT_NONE : 679 jiffies_to_msecs(port->closing_wait) / 10; 680 retinfo->custom_divisor = uport->custom_divisor; 681 retinfo->hub6 = uport->hub6; 682 retinfo->io_type = uport->iotype; 683 retinfo->iomem_reg_shift = uport->regshift; 684 retinfo->iomem_base = (void *)(unsigned long)uport->mapbase; 685 } 686 687 static void uart_get_info(struct tty_port *port, 688 struct serial_struct *retinfo) 689 { 690 /* Ensure the state we copy is consistent and no hardware changes 691 occur as we go */ 692 mutex_lock(&port->mutex); 693 do_uart_get_info(port, retinfo); 694 mutex_unlock(&port->mutex); 695 } 696 697 static int uart_get_info_user(struct tty_port *port, 698 struct serial_struct __user *retinfo) 699 { 700 struct serial_struct tmp; 701 uart_get_info(port, &tmp); 702 703 if (copy_to_user(retinfo, &tmp, sizeof(*retinfo))) 704 return -EFAULT; 705 return 0; 706 } 707 708 static int uart_set_info(struct tty_struct *tty, struct tty_port *port, 709 struct uart_state *state, 710 struct serial_struct *new_info) 711 { 712 struct uart_port *uport = state->uart_port; 713 unsigned long new_port; 714 unsigned int change_irq, change_port, closing_wait; 715 unsigned int old_custom_divisor, close_delay; 716 upf_t old_flags, new_flags; 717 int retval = 0; 718 719 new_port = new_info->port; 720 if (HIGH_BITS_OFFSET) 721 new_port += (unsigned long) new_info->port_high << HIGH_BITS_OFFSET; 722 723 new_info->irq = irq_canonicalize(new_info->irq); 724 close_delay = msecs_to_jiffies(new_info->close_delay * 10); 725 closing_wait = new_info->closing_wait == ASYNC_CLOSING_WAIT_NONE ? 726 ASYNC_CLOSING_WAIT_NONE : 727 msecs_to_jiffies(new_info->closing_wait * 10); 728 729 730 change_irq = !(uport->flags & UPF_FIXED_PORT) 731 && new_info->irq != uport->irq; 732 733 /* 734 * Since changing the 'type' of the port changes its resource 735 * allocations, we should treat type changes the same as 736 * IO port changes. 737 */ 738 change_port = !(uport->flags & UPF_FIXED_PORT) 739 && (new_port != uport->iobase || 740 (unsigned long)new_info->iomem_base != uport->mapbase || 741 new_info->hub6 != uport->hub6 || 742 new_info->io_type != uport->iotype || 743 new_info->iomem_reg_shift != uport->regshift || 744 new_info->type != uport->type); 745 746 old_flags = uport->flags; 747 new_flags = new_info->flags; 748 old_custom_divisor = uport->custom_divisor; 749 750 if (!capable(CAP_SYS_ADMIN)) { 751 retval = -EPERM; 752 if (change_irq || change_port || 753 (new_info->baud_base != uport->uartclk / 16) || 754 (close_delay != port->close_delay) || 755 (closing_wait != port->closing_wait) || 756 (new_info->xmit_fifo_size && 757 new_info->xmit_fifo_size != uport->fifosize) || 758 (((new_flags ^ old_flags) & ~UPF_USR_MASK) != 0)) 759 goto exit; 760 uport->flags = ((uport->flags & ~UPF_USR_MASK) | 761 (new_flags & UPF_USR_MASK)); 762 uport->custom_divisor = new_info->custom_divisor; 763 goto check_and_exit; 764 } 765 766 /* 767 * Ask the low level driver to verify the settings. 768 */ 769 if (uport->ops->verify_port) 770 retval = uport->ops->verify_port(uport, new_info); 771 772 if ((new_info->irq >= nr_irqs) || (new_info->irq < 0) || 773 (new_info->baud_base < 9600)) 774 retval = -EINVAL; 775 776 if (retval) 777 goto exit; 778 779 if (change_port || change_irq) { 780 retval = -EBUSY; 781 782 /* 783 * Make sure that we are the sole user of this port. 784 */ 785 if (tty_port_users(port) > 1) 786 goto exit; 787 788 /* 789 * We need to shutdown the serial port at the old 790 * port/type/irq combination. 791 */ 792 uart_shutdown(tty, state); 793 } 794 795 if (change_port) { 796 unsigned long old_iobase, old_mapbase; 797 unsigned int old_type, old_iotype, old_hub6, old_shift; 798 799 old_iobase = uport->iobase; 800 old_mapbase = uport->mapbase; 801 old_type = uport->type; 802 old_hub6 = uport->hub6; 803 old_iotype = uport->iotype; 804 old_shift = uport->regshift; 805 806 /* 807 * Free and release old regions 808 */ 809 if (old_type != PORT_UNKNOWN) 810 uport->ops->release_port(uport); 811 812 uport->iobase = new_port; 813 uport->type = new_info->type; 814 uport->hub6 = new_info->hub6; 815 uport->iotype = new_info->io_type; 816 uport->regshift = new_info->iomem_reg_shift; 817 uport->mapbase = (unsigned long)new_info->iomem_base; 818 819 /* 820 * Claim and map the new regions 821 */ 822 if (uport->type != PORT_UNKNOWN) { 823 retval = uport->ops->request_port(uport); 824 } else { 825 /* Always success - Jean II */ 826 retval = 0; 827 } 828 829 /* 830 * If we fail to request resources for the 831 * new port, try to restore the old settings. 832 */ 833 if (retval) { 834 uport->iobase = old_iobase; 835 uport->type = old_type; 836 uport->hub6 = old_hub6; 837 uport->iotype = old_iotype; 838 uport->regshift = old_shift; 839 uport->mapbase = old_mapbase; 840 841 if (old_type != PORT_UNKNOWN) { 842 retval = uport->ops->request_port(uport); 843 /* 844 * If we failed to restore the old settings, 845 * we fail like this. 846 */ 847 if (retval) 848 uport->type = PORT_UNKNOWN; 849 850 /* 851 * We failed anyway. 852 */ 853 retval = -EBUSY; 854 } 855 856 /* Added to return the correct error -Ram Gupta */ 857 goto exit; 858 } 859 } 860 861 if (change_irq) 862 uport->irq = new_info->irq; 863 if (!(uport->flags & UPF_FIXED_PORT)) 864 uport->uartclk = new_info->baud_base * 16; 865 uport->flags = (uport->flags & ~UPF_CHANGE_MASK) | 866 (new_flags & UPF_CHANGE_MASK); 867 uport->custom_divisor = new_info->custom_divisor; 868 port->close_delay = close_delay; 869 port->closing_wait = closing_wait; 870 if (new_info->xmit_fifo_size) 871 uport->fifosize = new_info->xmit_fifo_size; 872 port->low_latency = (uport->flags & UPF_LOW_LATENCY) ? 1 : 0; 873 874 check_and_exit: 875 retval = 0; 876 if (uport->type == PORT_UNKNOWN) 877 goto exit; 878 if (port->flags & ASYNC_INITIALIZED) { 879 if (((old_flags ^ uport->flags) & UPF_SPD_MASK) || 880 old_custom_divisor != uport->custom_divisor) { 881 /* 882 * If they're setting up a custom divisor or speed, 883 * instead of clearing it, then bitch about it. No 884 * need to rate-limit; it's CAP_SYS_ADMIN only. 885 */ 886 if (uport->flags & UPF_SPD_MASK) { 887 char buf[64]; 888 printk(KERN_NOTICE 889 "%s sets custom speed on %s. This " 890 "is deprecated.\n", current->comm, 891 tty_name(port->tty, buf)); 892 } 893 uart_change_speed(tty, state, NULL); 894 } 895 } else 896 retval = uart_startup(tty, state, 1); 897 exit: 898 return retval; 899 } 900 901 static int uart_set_info_user(struct tty_struct *tty, struct uart_state *state, 902 struct serial_struct __user *newinfo) 903 { 904 struct serial_struct new_serial; 905 struct tty_port *port = &state->port; 906 int retval; 907 908 if (copy_from_user(&new_serial, newinfo, sizeof(new_serial))) 909 return -EFAULT; 910 911 /* 912 * This semaphore protects port->count. It is also 913 * very useful to prevent opens. Also, take the 914 * port configuration semaphore to make sure that a 915 * module insertion/removal doesn't change anything 916 * under us. 917 */ 918 mutex_lock(&port->mutex); 919 retval = uart_set_info(tty, port, state, &new_serial); 920 mutex_unlock(&port->mutex); 921 return retval; 922 } 923 924 /** 925 * uart_get_lsr_info - get line status register info 926 * @tty: tty associated with the UART 927 * @state: UART being queried 928 * @value: returned modem value 929 * 930 * Note: uart_ioctl protects us against hangups. 931 */ 932 static int uart_get_lsr_info(struct tty_struct *tty, 933 struct uart_state *state, unsigned int __user *value) 934 { 935 struct uart_port *uport = state->uart_port; 936 unsigned int result; 937 938 result = uport->ops->tx_empty(uport); 939 940 /* 941 * If we're about to load something into the transmit 942 * register, we'll pretend the transmitter isn't empty to 943 * avoid a race condition (depending on when the transmit 944 * interrupt happens). 945 */ 946 if (uport->x_char || 947 ((uart_circ_chars_pending(&state->xmit) > 0) && 948 !tty->stopped && !tty->hw_stopped)) 949 result &= ~TIOCSER_TEMT; 950 951 return put_user(result, value); 952 } 953 954 static int uart_tiocmget(struct tty_struct *tty) 955 { 956 struct uart_state *state = tty->driver_data; 957 struct tty_port *port = &state->port; 958 struct uart_port *uport = state->uart_port; 959 int result = -EIO; 960 961 mutex_lock(&port->mutex); 962 if (!(tty->flags & (1 << TTY_IO_ERROR))) { 963 result = uport->mctrl; 964 spin_lock_irq(&uport->lock); 965 result |= uport->ops->get_mctrl(uport); 966 spin_unlock_irq(&uport->lock); 967 } 968 mutex_unlock(&port->mutex); 969 970 return result; 971 } 972 973 static int 974 uart_tiocmset(struct tty_struct *tty, unsigned int set, unsigned int clear) 975 { 976 struct uart_state *state = tty->driver_data; 977 struct uart_port *uport = state->uart_port; 978 struct tty_port *port = &state->port; 979 int ret = -EIO; 980 981 mutex_lock(&port->mutex); 982 if (!(tty->flags & (1 << TTY_IO_ERROR))) { 983 uart_update_mctrl(uport, set, clear); 984 ret = 0; 985 } 986 mutex_unlock(&port->mutex); 987 return ret; 988 } 989 990 static int uart_break_ctl(struct tty_struct *tty, int break_state) 991 { 992 struct uart_state *state = tty->driver_data; 993 struct tty_port *port = &state->port; 994 struct uart_port *uport = state->uart_port; 995 996 mutex_lock(&port->mutex); 997 998 if (uport->type != PORT_UNKNOWN) 999 uport->ops->break_ctl(uport, break_state); 1000 1001 mutex_unlock(&port->mutex); 1002 return 0; 1003 } 1004 1005 static int uart_do_autoconfig(struct tty_struct *tty,struct uart_state *state) 1006 { 1007 struct uart_port *uport = state->uart_port; 1008 struct tty_port *port = &state->port; 1009 int flags, ret; 1010 1011 if (!capable(CAP_SYS_ADMIN)) 1012 return -EPERM; 1013 1014 /* 1015 * Take the per-port semaphore. This prevents count from 1016 * changing, and hence any extra opens of the port while 1017 * we're auto-configuring. 1018 */ 1019 if (mutex_lock_interruptible(&port->mutex)) 1020 return -ERESTARTSYS; 1021 1022 ret = -EBUSY; 1023 if (tty_port_users(port) == 1) { 1024 uart_shutdown(tty, state); 1025 1026 /* 1027 * If we already have a port type configured, 1028 * we must release its resources. 1029 */ 1030 if (uport->type != PORT_UNKNOWN) 1031 uport->ops->release_port(uport); 1032 1033 flags = UART_CONFIG_TYPE; 1034 if (uport->flags & UPF_AUTO_IRQ) 1035 flags |= UART_CONFIG_IRQ; 1036 1037 /* 1038 * This will claim the ports resources if 1039 * a port is found. 1040 */ 1041 uport->ops->config_port(uport, flags); 1042 1043 ret = uart_startup(tty, state, 1); 1044 } 1045 mutex_unlock(&port->mutex); 1046 return ret; 1047 } 1048 1049 /* 1050 * Wait for any of the 4 modem inputs (DCD,RI,DSR,CTS) to change 1051 * - mask passed in arg for lines of interest 1052 * (use |'ed TIOCM_RNG/DSR/CD/CTS for masking) 1053 * Caller should use TIOCGICOUNT to see which one it was 1054 * 1055 * FIXME: This wants extracting into a common all driver implementation 1056 * of TIOCMWAIT using tty_port. 1057 */ 1058 static int 1059 uart_wait_modem_status(struct uart_state *state, unsigned long arg) 1060 { 1061 struct uart_port *uport = state->uart_port; 1062 struct tty_port *port = &state->port; 1063 DECLARE_WAITQUEUE(wait, current); 1064 struct uart_icount cprev, cnow; 1065 int ret; 1066 1067 /* 1068 * note the counters on entry 1069 */ 1070 spin_lock_irq(&uport->lock); 1071 memcpy(&cprev, &uport->icount, sizeof(struct uart_icount)); 1072 1073 /* 1074 * Force modem status interrupts on 1075 */ 1076 uport->ops->enable_ms(uport); 1077 spin_unlock_irq(&uport->lock); 1078 1079 add_wait_queue(&port->delta_msr_wait, &wait); 1080 for (;;) { 1081 spin_lock_irq(&uport->lock); 1082 memcpy(&cnow, &uport->icount, sizeof(struct uart_icount)); 1083 spin_unlock_irq(&uport->lock); 1084 1085 set_current_state(TASK_INTERRUPTIBLE); 1086 1087 if (((arg & TIOCM_RNG) && (cnow.rng != cprev.rng)) || 1088 ((arg & TIOCM_DSR) && (cnow.dsr != cprev.dsr)) || 1089 ((arg & TIOCM_CD) && (cnow.dcd != cprev.dcd)) || 1090 ((arg & TIOCM_CTS) && (cnow.cts != cprev.cts))) { 1091 ret = 0; 1092 break; 1093 } 1094 1095 schedule(); 1096 1097 /* see if a signal did it */ 1098 if (signal_pending(current)) { 1099 ret = -ERESTARTSYS; 1100 break; 1101 } 1102 1103 cprev = cnow; 1104 } 1105 1106 current->state = TASK_RUNNING; 1107 remove_wait_queue(&port->delta_msr_wait, &wait); 1108 1109 return ret; 1110 } 1111 1112 /* 1113 * Get counter of input serial line interrupts (DCD,RI,DSR,CTS) 1114 * Return: write counters to the user passed counter struct 1115 * NB: both 1->0 and 0->1 transitions are counted except for 1116 * RI where only 0->1 is counted. 1117 */ 1118 static int uart_get_icount(struct tty_struct *tty, 1119 struct serial_icounter_struct *icount) 1120 { 1121 struct uart_state *state = tty->driver_data; 1122 struct uart_icount cnow; 1123 struct uart_port *uport = state->uart_port; 1124 1125 spin_lock_irq(&uport->lock); 1126 memcpy(&cnow, &uport->icount, sizeof(struct uart_icount)); 1127 spin_unlock_irq(&uport->lock); 1128 1129 icount->cts = cnow.cts; 1130 icount->dsr = cnow.dsr; 1131 icount->rng = cnow.rng; 1132 icount->dcd = cnow.dcd; 1133 icount->rx = cnow.rx; 1134 icount->tx = cnow.tx; 1135 icount->frame = cnow.frame; 1136 icount->overrun = cnow.overrun; 1137 icount->parity = cnow.parity; 1138 icount->brk = cnow.brk; 1139 icount->buf_overrun = cnow.buf_overrun; 1140 1141 return 0; 1142 } 1143 1144 /* 1145 * Called via sys_ioctl. We can use spin_lock_irq() here. 1146 */ 1147 static int 1148 uart_ioctl(struct tty_struct *tty, unsigned int cmd, 1149 unsigned long arg) 1150 { 1151 struct uart_state *state = tty->driver_data; 1152 struct tty_port *port = &state->port; 1153 void __user *uarg = (void __user *)arg; 1154 int ret = -ENOIOCTLCMD; 1155 1156 1157 /* 1158 * These ioctls don't rely on the hardware to be present. 1159 */ 1160 switch (cmd) { 1161 case TIOCGSERIAL: 1162 ret = uart_get_info_user(port, uarg); 1163 break; 1164 1165 case TIOCSSERIAL: 1166 ret = uart_set_info_user(tty, state, uarg); 1167 break; 1168 1169 case TIOCSERCONFIG: 1170 ret = uart_do_autoconfig(tty, state); 1171 break; 1172 1173 case TIOCSERGWILD: /* obsolete */ 1174 case TIOCSERSWILD: /* obsolete */ 1175 ret = 0; 1176 break; 1177 } 1178 1179 if (ret != -ENOIOCTLCMD) 1180 goto out; 1181 1182 if (tty->flags & (1 << TTY_IO_ERROR)) { 1183 ret = -EIO; 1184 goto out; 1185 } 1186 1187 /* 1188 * The following should only be used when hardware is present. 1189 */ 1190 switch (cmd) { 1191 case TIOCMIWAIT: 1192 ret = uart_wait_modem_status(state, arg); 1193 break; 1194 } 1195 1196 if (ret != -ENOIOCTLCMD) 1197 goto out; 1198 1199 mutex_lock(&port->mutex); 1200 1201 if (tty->flags & (1 << TTY_IO_ERROR)) { 1202 ret = -EIO; 1203 goto out_up; 1204 } 1205 1206 /* 1207 * All these rely on hardware being present and need to be 1208 * protected against the tty being hung up. 1209 */ 1210 switch (cmd) { 1211 case TIOCSERGETLSR: /* Get line status register */ 1212 ret = uart_get_lsr_info(tty, state, uarg); 1213 break; 1214 1215 default: { 1216 struct uart_port *uport = state->uart_port; 1217 if (uport->ops->ioctl) 1218 ret = uport->ops->ioctl(uport, cmd, arg); 1219 break; 1220 } 1221 } 1222 out_up: 1223 mutex_unlock(&port->mutex); 1224 out: 1225 return ret; 1226 } 1227 1228 static void uart_set_ldisc(struct tty_struct *tty) 1229 { 1230 struct uart_state *state = tty->driver_data; 1231 struct uart_port *uport = state->uart_port; 1232 1233 if (uport->ops->set_ldisc) 1234 uport->ops->set_ldisc(uport, tty->termios.c_line); 1235 } 1236 1237 static void uart_set_termios(struct tty_struct *tty, 1238 struct ktermios *old_termios) 1239 { 1240 struct uart_state *state = tty->driver_data; 1241 struct uart_port *uport = state->uart_port; 1242 unsigned long flags; 1243 unsigned int cflag = tty->termios.c_cflag; 1244 unsigned int iflag_mask = IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK; 1245 bool sw_changed = false; 1246 1247 /* 1248 * Drivers doing software flow control also need to know 1249 * about changes to these input settings. 1250 */ 1251 if (uport->flags & UPF_SOFT_FLOW) { 1252 iflag_mask |= IXANY|IXON|IXOFF; 1253 sw_changed = 1254 tty->termios.c_cc[VSTART] != old_termios->c_cc[VSTART] || 1255 tty->termios.c_cc[VSTOP] != old_termios->c_cc[VSTOP]; 1256 } 1257 1258 /* 1259 * These are the bits that are used to setup various 1260 * flags in the low level driver. We can ignore the Bfoo 1261 * bits in c_cflag; c_[io]speed will always be set 1262 * appropriately by set_termios() in tty_ioctl.c 1263 */ 1264 if ((cflag ^ old_termios->c_cflag) == 0 && 1265 tty->termios.c_ospeed == old_termios->c_ospeed && 1266 tty->termios.c_ispeed == old_termios->c_ispeed && 1267 ((tty->termios.c_iflag ^ old_termios->c_iflag) & iflag_mask) == 0 && 1268 !sw_changed) { 1269 return; 1270 } 1271 1272 uart_change_speed(tty, state, old_termios); 1273 1274 /* Handle transition to B0 status */ 1275 if ((old_termios->c_cflag & CBAUD) && !(cflag & CBAUD)) 1276 uart_clear_mctrl(uport, TIOCM_RTS | TIOCM_DTR); 1277 /* Handle transition away from B0 status */ 1278 else if (!(old_termios->c_cflag & CBAUD) && (cflag & CBAUD)) { 1279 unsigned int mask = TIOCM_DTR; 1280 if (!(cflag & CRTSCTS) || 1281 !test_bit(TTY_THROTTLED, &tty->flags)) 1282 mask |= TIOCM_RTS; 1283 uart_set_mctrl(uport, mask); 1284 } 1285 1286 /* 1287 * If the port is doing h/w assisted flow control, do nothing. 1288 * We assume that tty->hw_stopped has never been set. 1289 */ 1290 if (uport->flags & UPF_HARD_FLOW) 1291 return; 1292 1293 /* Handle turning off CRTSCTS */ 1294 if ((old_termios->c_cflag & CRTSCTS) && !(cflag & CRTSCTS)) { 1295 spin_lock_irqsave(&uport->lock, flags); 1296 tty->hw_stopped = 0; 1297 __uart_start(tty); 1298 spin_unlock_irqrestore(&uport->lock, flags); 1299 } 1300 /* Handle turning on CRTSCTS */ 1301 else if (!(old_termios->c_cflag & CRTSCTS) && (cflag & CRTSCTS)) { 1302 spin_lock_irqsave(&uport->lock, flags); 1303 if (!(uport->ops->get_mctrl(uport) & TIOCM_CTS)) { 1304 tty->hw_stopped = 1; 1305 uport->ops->stop_tx(uport); 1306 } 1307 spin_unlock_irqrestore(&uport->lock, flags); 1308 } 1309 } 1310 1311 /* 1312 * Calls to uart_close() are serialised via the tty_lock in 1313 * drivers/tty/tty_io.c:tty_release() 1314 * drivers/tty/tty_io.c:do_tty_hangup() 1315 * This runs from a workqueue and can sleep for a _short_ time only. 1316 */ 1317 static void uart_close(struct tty_struct *tty, struct file *filp) 1318 { 1319 struct uart_state *state = tty->driver_data; 1320 struct tty_port *port; 1321 struct uart_port *uport; 1322 unsigned long flags; 1323 1324 if (!state) 1325 return; 1326 1327 uport = state->uart_port; 1328 port = &state->port; 1329 1330 pr_debug("uart_close(%d) called\n", uport ? uport->line : -1); 1331 1332 if (!port->count || tty_port_close_start(port, tty, filp) == 0) 1333 return; 1334 1335 /* 1336 * At this point, we stop accepting input. To do this, we 1337 * disable the receive line status interrupts. 1338 */ 1339 if (port->flags & ASYNC_INITIALIZED) { 1340 unsigned long flags; 1341 spin_lock_irqsave(&uport->lock, flags); 1342 uport->ops->stop_rx(uport); 1343 spin_unlock_irqrestore(&uport->lock, flags); 1344 /* 1345 * Before we drop DTR, make sure the UART transmitter 1346 * has completely drained; this is especially 1347 * important if there is a transmit FIFO! 1348 */ 1349 uart_wait_until_sent(tty, uport->timeout); 1350 } 1351 1352 mutex_lock(&port->mutex); 1353 uart_shutdown(tty, state); 1354 uart_flush_buffer(tty); 1355 1356 tty_ldisc_flush(tty); 1357 1358 tty_port_tty_set(port, NULL); 1359 spin_lock_irqsave(&port->lock, flags); 1360 tty->closing = 0; 1361 1362 if (port->blocked_open) { 1363 spin_unlock_irqrestore(&port->lock, flags); 1364 if (port->close_delay) 1365 msleep_interruptible( 1366 jiffies_to_msecs(port->close_delay)); 1367 spin_lock_irqsave(&port->lock, flags); 1368 } else if (!uart_console(uport)) { 1369 spin_unlock_irqrestore(&port->lock, flags); 1370 uart_change_pm(state, UART_PM_STATE_OFF); 1371 spin_lock_irqsave(&port->lock, flags); 1372 } 1373 1374 /* 1375 * Wake up anyone trying to open this port. 1376 */ 1377 clear_bit(ASYNCB_NORMAL_ACTIVE, &port->flags); 1378 clear_bit(ASYNCB_CLOSING, &port->flags); 1379 spin_unlock_irqrestore(&port->lock, flags); 1380 wake_up_interruptible(&port->open_wait); 1381 wake_up_interruptible(&port->close_wait); 1382 1383 mutex_unlock(&port->mutex); 1384 } 1385 1386 static void uart_wait_until_sent(struct tty_struct *tty, int timeout) 1387 { 1388 struct uart_state *state = tty->driver_data; 1389 struct uart_port *port = state->uart_port; 1390 unsigned long char_time, expire; 1391 1392 if (port->type == PORT_UNKNOWN || port->fifosize == 0) 1393 return; 1394 1395 /* 1396 * Set the check interval to be 1/5 of the estimated time to 1397 * send a single character, and make it at least 1. The check 1398 * interval should also be less than the timeout. 1399 * 1400 * Note: we have to use pretty tight timings here to satisfy 1401 * the NIST-PCTS. 1402 */ 1403 char_time = (port->timeout - HZ/50) / port->fifosize; 1404 char_time = char_time / 5; 1405 if (char_time == 0) 1406 char_time = 1; 1407 if (timeout && timeout < char_time) 1408 char_time = timeout; 1409 1410 /* 1411 * If the transmitter hasn't cleared in twice the approximate 1412 * amount of time to send the entire FIFO, it probably won't 1413 * ever clear. This assumes the UART isn't doing flow 1414 * control, which is currently the case. Hence, if it ever 1415 * takes longer than port->timeout, this is probably due to a 1416 * UART bug of some kind. So, we clamp the timeout parameter at 1417 * 2*port->timeout. 1418 */ 1419 if (timeout == 0 || timeout > 2 * port->timeout) 1420 timeout = 2 * port->timeout; 1421 1422 expire = jiffies + timeout; 1423 1424 pr_debug("uart_wait_until_sent(%d), jiffies=%lu, expire=%lu...\n", 1425 port->line, jiffies, expire); 1426 1427 /* 1428 * Check whether the transmitter is empty every 'char_time'. 1429 * 'timeout' / 'expire' give us the maximum amount of time 1430 * we wait. 1431 */ 1432 while (!port->ops->tx_empty(port)) { 1433 msleep_interruptible(jiffies_to_msecs(char_time)); 1434 if (signal_pending(current)) 1435 break; 1436 if (time_after(jiffies, expire)) 1437 break; 1438 } 1439 } 1440 1441 /* 1442 * Calls to uart_hangup() are serialised by the tty_lock in 1443 * drivers/tty/tty_io.c:do_tty_hangup() 1444 * This runs from a workqueue and can sleep for a _short_ time only. 1445 */ 1446 static void uart_hangup(struct tty_struct *tty) 1447 { 1448 struct uart_state *state = tty->driver_data; 1449 struct tty_port *port = &state->port; 1450 unsigned long flags; 1451 1452 pr_debug("uart_hangup(%d)\n", state->uart_port->line); 1453 1454 mutex_lock(&port->mutex); 1455 if (port->flags & ASYNC_NORMAL_ACTIVE) { 1456 uart_flush_buffer(tty); 1457 uart_shutdown(tty, state); 1458 spin_lock_irqsave(&port->lock, flags); 1459 port->count = 0; 1460 clear_bit(ASYNCB_NORMAL_ACTIVE, &port->flags); 1461 spin_unlock_irqrestore(&port->lock, flags); 1462 tty_port_tty_set(port, NULL); 1463 if (!uart_console(state->uart_port)) 1464 uart_change_pm(state, UART_PM_STATE_OFF); 1465 wake_up_interruptible(&port->open_wait); 1466 wake_up_interruptible(&port->delta_msr_wait); 1467 } 1468 mutex_unlock(&port->mutex); 1469 } 1470 1471 static int uart_port_activate(struct tty_port *port, struct tty_struct *tty) 1472 { 1473 return 0; 1474 } 1475 1476 static void uart_port_shutdown(struct tty_port *port) 1477 { 1478 struct uart_state *state = container_of(port, struct uart_state, port); 1479 struct uart_port *uport = state->uart_port; 1480 1481 /* 1482 * clear delta_msr_wait queue to avoid mem leaks: we may free 1483 * the irq here so the queue might never be woken up. Note 1484 * that we won't end up waiting on delta_msr_wait again since 1485 * any outstanding file descriptors should be pointing at 1486 * hung_up_tty_fops now. 1487 */ 1488 wake_up_interruptible(&port->delta_msr_wait); 1489 1490 /* 1491 * Free the IRQ and disable the port. 1492 */ 1493 uport->ops->shutdown(uport); 1494 1495 /* 1496 * Ensure that the IRQ handler isn't running on another CPU. 1497 */ 1498 synchronize_irq(uport->irq); 1499 } 1500 1501 static int uart_carrier_raised(struct tty_port *port) 1502 { 1503 struct uart_state *state = container_of(port, struct uart_state, port); 1504 struct uart_port *uport = state->uart_port; 1505 int mctrl; 1506 spin_lock_irq(&uport->lock); 1507 uport->ops->enable_ms(uport); 1508 mctrl = uport->ops->get_mctrl(uport); 1509 spin_unlock_irq(&uport->lock); 1510 if (mctrl & TIOCM_CAR) 1511 return 1; 1512 return 0; 1513 } 1514 1515 static void uart_dtr_rts(struct tty_port *port, int onoff) 1516 { 1517 struct uart_state *state = container_of(port, struct uart_state, port); 1518 struct uart_port *uport = state->uart_port; 1519 1520 if (onoff) 1521 uart_set_mctrl(uport, TIOCM_DTR | TIOCM_RTS); 1522 else 1523 uart_clear_mctrl(uport, TIOCM_DTR | TIOCM_RTS); 1524 } 1525 1526 /* 1527 * Calls to uart_open are serialised by the tty_lock in 1528 * drivers/tty/tty_io.c:tty_open() 1529 * Note that if this fails, then uart_close() _will_ be called. 1530 * 1531 * In time, we want to scrap the "opening nonpresent ports" 1532 * behaviour and implement an alternative way for setserial 1533 * to set base addresses/ports/types. This will allow us to 1534 * get rid of a certain amount of extra tests. 1535 */ 1536 static int uart_open(struct tty_struct *tty, struct file *filp) 1537 { 1538 struct uart_driver *drv = (struct uart_driver *)tty->driver->driver_state; 1539 int retval, line = tty->index; 1540 struct uart_state *state = drv->state + line; 1541 struct tty_port *port = &state->port; 1542 1543 pr_debug("uart_open(%d) called\n", line); 1544 1545 /* 1546 * We take the semaphore here to guarantee that we won't be re-entered 1547 * while allocating the state structure, or while we request any IRQs 1548 * that the driver may need. This also has the nice side-effect that 1549 * it delays the action of uart_hangup, so we can guarantee that 1550 * state->port.tty will always contain something reasonable. 1551 */ 1552 if (mutex_lock_interruptible(&port->mutex)) { 1553 retval = -ERESTARTSYS; 1554 goto end; 1555 } 1556 1557 port->count++; 1558 if (!state->uart_port || state->uart_port->flags & UPF_DEAD) { 1559 retval = -ENXIO; 1560 goto err_dec_count; 1561 } 1562 1563 /* 1564 * Once we set tty->driver_data here, we are guaranteed that 1565 * uart_close() will decrement the driver module use count. 1566 * Any failures from here onwards should not touch the count. 1567 */ 1568 tty->driver_data = state; 1569 state->uart_port->state = state; 1570 state->port.low_latency = 1571 (state->uart_port->flags & UPF_LOW_LATENCY) ? 1 : 0; 1572 tty_port_tty_set(port, tty); 1573 1574 /* 1575 * If the port is in the middle of closing, bail out now. 1576 */ 1577 if (tty_hung_up_p(filp)) { 1578 retval = -EAGAIN; 1579 goto err_dec_count; 1580 } 1581 1582 /* 1583 * Start up the serial port. 1584 */ 1585 retval = uart_startup(tty, state, 0); 1586 1587 /* 1588 * If we succeeded, wait until the port is ready. 1589 */ 1590 mutex_unlock(&port->mutex); 1591 if (retval == 0) 1592 retval = tty_port_block_til_ready(port, tty, filp); 1593 1594 end: 1595 return retval; 1596 err_dec_count: 1597 port->count--; 1598 mutex_unlock(&port->mutex); 1599 goto end; 1600 } 1601 1602 static const char *uart_type(struct uart_port *port) 1603 { 1604 const char *str = NULL; 1605 1606 if (port->ops->type) 1607 str = port->ops->type(port); 1608 1609 if (!str) 1610 str = "unknown"; 1611 1612 return str; 1613 } 1614 1615 #ifdef CONFIG_PROC_FS 1616 1617 static void uart_line_info(struct seq_file *m, struct uart_driver *drv, int i) 1618 { 1619 struct uart_state *state = drv->state + i; 1620 struct tty_port *port = &state->port; 1621 enum uart_pm_state pm_state; 1622 struct uart_port *uport = state->uart_port; 1623 char stat_buf[32]; 1624 unsigned int status; 1625 int mmio; 1626 1627 if (!uport) 1628 return; 1629 1630 mmio = uport->iotype >= UPIO_MEM; 1631 seq_printf(m, "%d: uart:%s %s%08llX irq:%d", 1632 uport->line, uart_type(uport), 1633 mmio ? "mmio:0x" : "port:", 1634 mmio ? (unsigned long long)uport->mapbase 1635 : (unsigned long long)uport->iobase, 1636 uport->irq); 1637 1638 if (uport->type == PORT_UNKNOWN) { 1639 seq_putc(m, '\n'); 1640 return; 1641 } 1642 1643 if (capable(CAP_SYS_ADMIN)) { 1644 mutex_lock(&port->mutex); 1645 pm_state = state->pm_state; 1646 if (pm_state != UART_PM_STATE_ON) 1647 uart_change_pm(state, UART_PM_STATE_ON); 1648 spin_lock_irq(&uport->lock); 1649 status = uport->ops->get_mctrl(uport); 1650 spin_unlock_irq(&uport->lock); 1651 if (pm_state != UART_PM_STATE_ON) 1652 uart_change_pm(state, pm_state); 1653 mutex_unlock(&port->mutex); 1654 1655 seq_printf(m, " tx:%d rx:%d", 1656 uport->icount.tx, uport->icount.rx); 1657 if (uport->icount.frame) 1658 seq_printf(m, " fe:%d", 1659 uport->icount.frame); 1660 if (uport->icount.parity) 1661 seq_printf(m, " pe:%d", 1662 uport->icount.parity); 1663 if (uport->icount.brk) 1664 seq_printf(m, " brk:%d", 1665 uport->icount.brk); 1666 if (uport->icount.overrun) 1667 seq_printf(m, " oe:%d", 1668 uport->icount.overrun); 1669 1670 #define INFOBIT(bit, str) \ 1671 if (uport->mctrl & (bit)) \ 1672 strncat(stat_buf, (str), sizeof(stat_buf) - \ 1673 strlen(stat_buf) - 2) 1674 #define STATBIT(bit, str) \ 1675 if (status & (bit)) \ 1676 strncat(stat_buf, (str), sizeof(stat_buf) - \ 1677 strlen(stat_buf) - 2) 1678 1679 stat_buf[0] = '\0'; 1680 stat_buf[1] = '\0'; 1681 INFOBIT(TIOCM_RTS, "|RTS"); 1682 STATBIT(TIOCM_CTS, "|CTS"); 1683 INFOBIT(TIOCM_DTR, "|DTR"); 1684 STATBIT(TIOCM_DSR, "|DSR"); 1685 STATBIT(TIOCM_CAR, "|CD"); 1686 STATBIT(TIOCM_RNG, "|RI"); 1687 if (stat_buf[0]) 1688 stat_buf[0] = ' '; 1689 1690 seq_puts(m, stat_buf); 1691 } 1692 seq_putc(m, '\n'); 1693 #undef STATBIT 1694 #undef INFOBIT 1695 } 1696 1697 static int uart_proc_show(struct seq_file *m, void *v) 1698 { 1699 struct tty_driver *ttydrv = m->private; 1700 struct uart_driver *drv = ttydrv->driver_state; 1701 int i; 1702 1703 seq_printf(m, "serinfo:1.0 driver%s%s revision:%s\n", 1704 "", "", ""); 1705 for (i = 0; i < drv->nr; i++) 1706 uart_line_info(m, drv, i); 1707 return 0; 1708 } 1709 1710 static int uart_proc_open(struct inode *inode, struct file *file) 1711 { 1712 return single_open(file, uart_proc_show, PDE_DATA(inode)); 1713 } 1714 1715 static const struct file_operations uart_proc_fops = { 1716 .owner = THIS_MODULE, 1717 .open = uart_proc_open, 1718 .read = seq_read, 1719 .llseek = seq_lseek, 1720 .release = single_release, 1721 }; 1722 #endif 1723 1724 #if defined(CONFIG_SERIAL_CORE_CONSOLE) || defined(CONFIG_CONSOLE_POLL) 1725 /* 1726 * uart_console_write - write a console message to a serial port 1727 * @port: the port to write the message 1728 * @s: array of characters 1729 * @count: number of characters in string to write 1730 * @write: function to write character to port 1731 */ 1732 void uart_console_write(struct uart_port *port, const char *s, 1733 unsigned int count, 1734 void (*putchar)(struct uart_port *, int)) 1735 { 1736 unsigned int i; 1737 1738 for (i = 0; i < count; i++, s++) { 1739 if (*s == '\n') 1740 putchar(port, '\r'); 1741 putchar(port, *s); 1742 } 1743 } 1744 EXPORT_SYMBOL_GPL(uart_console_write); 1745 1746 /* 1747 * Check whether an invalid uart number has been specified, and 1748 * if so, search for the first available port that does have 1749 * console support. 1750 */ 1751 struct uart_port * __init 1752 uart_get_console(struct uart_port *ports, int nr, struct console *co) 1753 { 1754 int idx = co->index; 1755 1756 if (idx < 0 || idx >= nr || (ports[idx].iobase == 0 && 1757 ports[idx].membase == NULL)) 1758 for (idx = 0; idx < nr; idx++) 1759 if (ports[idx].iobase != 0 || 1760 ports[idx].membase != NULL) 1761 break; 1762 1763 co->index = idx; 1764 1765 return ports + idx; 1766 } 1767 1768 /** 1769 * uart_parse_options - Parse serial port baud/parity/bits/flow control. 1770 * @options: pointer to option string 1771 * @baud: pointer to an 'int' variable for the baud rate. 1772 * @parity: pointer to an 'int' variable for the parity. 1773 * @bits: pointer to an 'int' variable for the number of data bits. 1774 * @flow: pointer to an 'int' variable for the flow control character. 1775 * 1776 * uart_parse_options decodes a string containing the serial console 1777 * options. The format of the string is <baud><parity><bits><flow>, 1778 * eg: 115200n8r 1779 */ 1780 void 1781 uart_parse_options(char *options, int *baud, int *parity, int *bits, int *flow) 1782 { 1783 char *s = options; 1784 1785 *baud = simple_strtoul(s, NULL, 10); 1786 while (*s >= '0' && *s <= '9') 1787 s++; 1788 if (*s) 1789 *parity = *s++; 1790 if (*s) 1791 *bits = *s++ - '0'; 1792 if (*s) 1793 *flow = *s; 1794 } 1795 EXPORT_SYMBOL_GPL(uart_parse_options); 1796 1797 struct baud_rates { 1798 unsigned int rate; 1799 unsigned int cflag; 1800 }; 1801 1802 static const struct baud_rates baud_rates[] = { 1803 { 921600, B921600 }, 1804 { 460800, B460800 }, 1805 { 230400, B230400 }, 1806 { 115200, B115200 }, 1807 { 57600, B57600 }, 1808 { 38400, B38400 }, 1809 { 19200, B19200 }, 1810 { 9600, B9600 }, 1811 { 4800, B4800 }, 1812 { 2400, B2400 }, 1813 { 1200, B1200 }, 1814 { 0, B38400 } 1815 }; 1816 1817 /** 1818 * uart_set_options - setup the serial console parameters 1819 * @port: pointer to the serial ports uart_port structure 1820 * @co: console pointer 1821 * @baud: baud rate 1822 * @parity: parity character - 'n' (none), 'o' (odd), 'e' (even) 1823 * @bits: number of data bits 1824 * @flow: flow control character - 'r' (rts) 1825 */ 1826 int 1827 uart_set_options(struct uart_port *port, struct console *co, 1828 int baud, int parity, int bits, int flow) 1829 { 1830 struct ktermios termios; 1831 static struct ktermios dummy; 1832 int i; 1833 1834 /* 1835 * Ensure that the serial console lock is initialised 1836 * early. 1837 * If this port is a console, then the spinlock is already 1838 * initialised. 1839 */ 1840 if (!(uart_console(port) && (port->cons->flags & CON_ENABLED))) { 1841 spin_lock_init(&port->lock); 1842 lockdep_set_class(&port->lock, &port_lock_key); 1843 } 1844 1845 memset(&termios, 0, sizeof(struct ktermios)); 1846 1847 termios.c_cflag = CREAD | HUPCL | CLOCAL; 1848 1849 /* 1850 * Construct a cflag setting. 1851 */ 1852 for (i = 0; baud_rates[i].rate; i++) 1853 if (baud_rates[i].rate <= baud) 1854 break; 1855 1856 termios.c_cflag |= baud_rates[i].cflag; 1857 1858 if (bits == 7) 1859 termios.c_cflag |= CS7; 1860 else 1861 termios.c_cflag |= CS8; 1862 1863 switch (parity) { 1864 case 'o': case 'O': 1865 termios.c_cflag |= PARODD; 1866 /*fall through*/ 1867 case 'e': case 'E': 1868 termios.c_cflag |= PARENB; 1869 break; 1870 } 1871 1872 if (flow == 'r') 1873 termios.c_cflag |= CRTSCTS; 1874 1875 /* 1876 * some uarts on other side don't support no flow control. 1877 * So we set * DTR in host uart to make them happy 1878 */ 1879 port->mctrl |= TIOCM_DTR; 1880 1881 port->ops->set_termios(port, &termios, &dummy); 1882 /* 1883 * Allow the setting of the UART parameters with a NULL console 1884 * too: 1885 */ 1886 if (co) 1887 co->cflag = termios.c_cflag; 1888 1889 return 0; 1890 } 1891 EXPORT_SYMBOL_GPL(uart_set_options); 1892 #endif /* CONFIG_SERIAL_CORE_CONSOLE */ 1893 1894 /** 1895 * uart_change_pm - set power state of the port 1896 * 1897 * @state: port descriptor 1898 * @pm_state: new state 1899 * 1900 * Locking: port->mutex has to be held 1901 */ 1902 static void uart_change_pm(struct uart_state *state, 1903 enum uart_pm_state pm_state) 1904 { 1905 struct uart_port *port = state->uart_port; 1906 1907 if (state->pm_state != pm_state) { 1908 if (port->ops->pm) 1909 port->ops->pm(port, pm_state, state->pm_state); 1910 state->pm_state = pm_state; 1911 } 1912 } 1913 1914 struct uart_match { 1915 struct uart_port *port; 1916 struct uart_driver *driver; 1917 }; 1918 1919 static int serial_match_port(struct device *dev, void *data) 1920 { 1921 struct uart_match *match = data; 1922 struct tty_driver *tty_drv = match->driver->tty_driver; 1923 dev_t devt = MKDEV(tty_drv->major, tty_drv->minor_start) + 1924 match->port->line; 1925 1926 return dev->devt == devt; /* Actually, only one tty per port */ 1927 } 1928 1929 int uart_suspend_port(struct uart_driver *drv, struct uart_port *uport) 1930 { 1931 struct uart_state *state = drv->state + uport->line; 1932 struct tty_port *port = &state->port; 1933 struct device *tty_dev; 1934 struct uart_match match = {uport, drv}; 1935 1936 mutex_lock(&port->mutex); 1937 1938 tty_dev = device_find_child(uport->dev, &match, serial_match_port); 1939 if (device_may_wakeup(tty_dev)) { 1940 if (!enable_irq_wake(uport->irq)) 1941 uport->irq_wake = 1; 1942 put_device(tty_dev); 1943 mutex_unlock(&port->mutex); 1944 return 0; 1945 } 1946 put_device(tty_dev); 1947 1948 if (console_suspend_enabled || !uart_console(uport)) 1949 uport->suspended = 1; 1950 1951 if (port->flags & ASYNC_INITIALIZED) { 1952 const struct uart_ops *ops = uport->ops; 1953 int tries; 1954 1955 if (console_suspend_enabled || !uart_console(uport)) { 1956 set_bit(ASYNCB_SUSPENDED, &port->flags); 1957 clear_bit(ASYNCB_INITIALIZED, &port->flags); 1958 1959 spin_lock_irq(&uport->lock); 1960 ops->stop_tx(uport); 1961 ops->set_mctrl(uport, 0); 1962 ops->stop_rx(uport); 1963 spin_unlock_irq(&uport->lock); 1964 } 1965 1966 /* 1967 * Wait for the transmitter to empty. 1968 */ 1969 for (tries = 3; !ops->tx_empty(uport) && tries; tries--) 1970 msleep(10); 1971 if (!tries) 1972 printk(KERN_ERR "%s%s%s%d: Unable to drain " 1973 "transmitter\n", 1974 uport->dev ? dev_name(uport->dev) : "", 1975 uport->dev ? ": " : "", 1976 drv->dev_name, 1977 drv->tty_driver->name_base + uport->line); 1978 1979 if (console_suspend_enabled || !uart_console(uport)) 1980 ops->shutdown(uport); 1981 } 1982 1983 /* 1984 * Disable the console device before suspending. 1985 */ 1986 if (console_suspend_enabled && uart_console(uport)) 1987 console_stop(uport->cons); 1988 1989 if (console_suspend_enabled || !uart_console(uport)) 1990 uart_change_pm(state, UART_PM_STATE_OFF); 1991 1992 mutex_unlock(&port->mutex); 1993 1994 return 0; 1995 } 1996 1997 int uart_resume_port(struct uart_driver *drv, struct uart_port *uport) 1998 { 1999 struct uart_state *state = drv->state + uport->line; 2000 struct tty_port *port = &state->port; 2001 struct device *tty_dev; 2002 struct uart_match match = {uport, drv}; 2003 struct ktermios termios; 2004 2005 mutex_lock(&port->mutex); 2006 2007 tty_dev = device_find_child(uport->dev, &match, serial_match_port); 2008 if (!uport->suspended && device_may_wakeup(tty_dev)) { 2009 if (uport->irq_wake) { 2010 disable_irq_wake(uport->irq); 2011 uport->irq_wake = 0; 2012 } 2013 put_device(tty_dev); 2014 mutex_unlock(&port->mutex); 2015 return 0; 2016 } 2017 put_device(tty_dev); 2018 uport->suspended = 0; 2019 2020 /* 2021 * Re-enable the console device after suspending. 2022 */ 2023 if (uart_console(uport)) { 2024 /* 2025 * First try to use the console cflag setting. 2026 */ 2027 memset(&termios, 0, sizeof(struct ktermios)); 2028 termios.c_cflag = uport->cons->cflag; 2029 2030 /* 2031 * If that's unset, use the tty termios setting. 2032 */ 2033 if (port->tty && termios.c_cflag == 0) 2034 termios = port->tty->termios; 2035 2036 if (console_suspend_enabled) 2037 uart_change_pm(state, UART_PM_STATE_ON); 2038 uport->ops->set_termios(uport, &termios, NULL); 2039 if (console_suspend_enabled) 2040 console_start(uport->cons); 2041 } 2042 2043 if (port->flags & ASYNC_SUSPENDED) { 2044 const struct uart_ops *ops = uport->ops; 2045 int ret; 2046 2047 uart_change_pm(state, UART_PM_STATE_ON); 2048 spin_lock_irq(&uport->lock); 2049 ops->set_mctrl(uport, 0); 2050 spin_unlock_irq(&uport->lock); 2051 if (console_suspend_enabled || !uart_console(uport)) { 2052 /* Protected by port mutex for now */ 2053 struct tty_struct *tty = port->tty; 2054 ret = ops->startup(uport); 2055 if (ret == 0) { 2056 if (tty) 2057 uart_change_speed(tty, state, NULL); 2058 spin_lock_irq(&uport->lock); 2059 ops->set_mctrl(uport, uport->mctrl); 2060 ops->start_tx(uport); 2061 spin_unlock_irq(&uport->lock); 2062 set_bit(ASYNCB_INITIALIZED, &port->flags); 2063 } else { 2064 /* 2065 * Failed to resume - maybe hardware went away? 2066 * Clear the "initialized" flag so we won't try 2067 * to call the low level drivers shutdown method. 2068 */ 2069 uart_shutdown(tty, state); 2070 } 2071 } 2072 2073 clear_bit(ASYNCB_SUSPENDED, &port->flags); 2074 } 2075 2076 mutex_unlock(&port->mutex); 2077 2078 return 0; 2079 } 2080 2081 static inline void 2082 uart_report_port(struct uart_driver *drv, struct uart_port *port) 2083 { 2084 char address[64]; 2085 2086 switch (port->iotype) { 2087 case UPIO_PORT: 2088 snprintf(address, sizeof(address), "I/O 0x%lx", port->iobase); 2089 break; 2090 case UPIO_HUB6: 2091 snprintf(address, sizeof(address), 2092 "I/O 0x%lx offset 0x%x", port->iobase, port->hub6); 2093 break; 2094 case UPIO_MEM: 2095 case UPIO_MEM32: 2096 case UPIO_AU: 2097 case UPIO_TSI: 2098 snprintf(address, sizeof(address), 2099 "MMIO 0x%llx", (unsigned long long)port->mapbase); 2100 break; 2101 default: 2102 strlcpy(address, "*unknown*", sizeof(address)); 2103 break; 2104 } 2105 2106 printk(KERN_INFO "%s%s%s%d at %s (irq = %d, base_baud = %d) is a %s\n", 2107 port->dev ? dev_name(port->dev) : "", 2108 port->dev ? ": " : "", 2109 drv->dev_name, 2110 drv->tty_driver->name_base + port->line, 2111 address, port->irq, port->uartclk / 16, uart_type(port)); 2112 } 2113 2114 static void 2115 uart_configure_port(struct uart_driver *drv, struct uart_state *state, 2116 struct uart_port *port) 2117 { 2118 unsigned int flags; 2119 2120 /* 2121 * If there isn't a port here, don't do anything further. 2122 */ 2123 if (!port->iobase && !port->mapbase && !port->membase) 2124 return; 2125 2126 /* 2127 * Now do the auto configuration stuff. Note that config_port 2128 * is expected to claim the resources and map the port for us. 2129 */ 2130 flags = 0; 2131 if (port->flags & UPF_AUTO_IRQ) 2132 flags |= UART_CONFIG_IRQ; 2133 if (port->flags & UPF_BOOT_AUTOCONF) { 2134 if (!(port->flags & UPF_FIXED_TYPE)) { 2135 port->type = PORT_UNKNOWN; 2136 flags |= UART_CONFIG_TYPE; 2137 } 2138 port->ops->config_port(port, flags); 2139 } 2140 2141 if (port->type != PORT_UNKNOWN) { 2142 unsigned long flags; 2143 2144 uart_report_port(drv, port); 2145 2146 /* Power up port for set_mctrl() */ 2147 uart_change_pm(state, UART_PM_STATE_ON); 2148 2149 /* 2150 * Ensure that the modem control lines are de-activated. 2151 * keep the DTR setting that is set in uart_set_options() 2152 * We probably don't need a spinlock around this, but 2153 */ 2154 spin_lock_irqsave(&port->lock, flags); 2155 port->ops->set_mctrl(port, port->mctrl & TIOCM_DTR); 2156 spin_unlock_irqrestore(&port->lock, flags); 2157 2158 /* 2159 * If this driver supports console, and it hasn't been 2160 * successfully registered yet, try to re-register it. 2161 * It may be that the port was not available. 2162 */ 2163 if (port->cons && !(port->cons->flags & CON_ENABLED)) 2164 register_console(port->cons); 2165 2166 /* 2167 * Power down all ports by default, except the 2168 * console if we have one. 2169 */ 2170 if (!uart_console(port)) 2171 uart_change_pm(state, UART_PM_STATE_OFF); 2172 } 2173 } 2174 2175 #ifdef CONFIG_CONSOLE_POLL 2176 2177 static int uart_poll_init(struct tty_driver *driver, int line, char *options) 2178 { 2179 struct uart_driver *drv = driver->driver_state; 2180 struct uart_state *state = drv->state + line; 2181 struct uart_port *port; 2182 int baud = 9600; 2183 int bits = 8; 2184 int parity = 'n'; 2185 int flow = 'n'; 2186 int ret; 2187 2188 if (!state || !state->uart_port) 2189 return -1; 2190 2191 port = state->uart_port; 2192 if (!(port->ops->poll_get_char && port->ops->poll_put_char)) 2193 return -1; 2194 2195 if (port->ops->poll_init) { 2196 struct tty_port *tport = &state->port; 2197 2198 ret = 0; 2199 mutex_lock(&tport->mutex); 2200 /* 2201 * We don't set ASYNCB_INITIALIZED as we only initialized the 2202 * hw, e.g. state->xmit is still uninitialized. 2203 */ 2204 if (!test_bit(ASYNCB_INITIALIZED, &tport->flags)) 2205 ret = port->ops->poll_init(port); 2206 mutex_unlock(&tport->mutex); 2207 if (ret) 2208 return ret; 2209 } 2210 2211 if (options) { 2212 uart_parse_options(options, &baud, &parity, &bits, &flow); 2213 return uart_set_options(port, NULL, baud, parity, bits, flow); 2214 } 2215 2216 return 0; 2217 } 2218 2219 static int uart_poll_get_char(struct tty_driver *driver, int line) 2220 { 2221 struct uart_driver *drv = driver->driver_state; 2222 struct uart_state *state = drv->state + line; 2223 struct uart_port *port; 2224 2225 if (!state || !state->uart_port) 2226 return -1; 2227 2228 port = state->uart_port; 2229 return port->ops->poll_get_char(port); 2230 } 2231 2232 static void uart_poll_put_char(struct tty_driver *driver, int line, char ch) 2233 { 2234 struct uart_driver *drv = driver->driver_state; 2235 struct uart_state *state = drv->state + line; 2236 struct uart_port *port; 2237 2238 if (!state || !state->uart_port) 2239 return; 2240 2241 port = state->uart_port; 2242 port->ops->poll_put_char(port, ch); 2243 } 2244 #endif 2245 2246 static const struct tty_operations uart_ops = { 2247 .open = uart_open, 2248 .close = uart_close, 2249 .write = uart_write, 2250 .put_char = uart_put_char, 2251 .flush_chars = uart_flush_chars, 2252 .write_room = uart_write_room, 2253 .chars_in_buffer= uart_chars_in_buffer, 2254 .flush_buffer = uart_flush_buffer, 2255 .ioctl = uart_ioctl, 2256 .throttle = uart_throttle, 2257 .unthrottle = uart_unthrottle, 2258 .send_xchar = uart_send_xchar, 2259 .set_termios = uart_set_termios, 2260 .set_ldisc = uart_set_ldisc, 2261 .stop = uart_stop, 2262 .start = uart_start, 2263 .hangup = uart_hangup, 2264 .break_ctl = uart_break_ctl, 2265 .wait_until_sent= uart_wait_until_sent, 2266 #ifdef CONFIG_PROC_FS 2267 .proc_fops = &uart_proc_fops, 2268 #endif 2269 .tiocmget = uart_tiocmget, 2270 .tiocmset = uart_tiocmset, 2271 .get_icount = uart_get_icount, 2272 #ifdef CONFIG_CONSOLE_POLL 2273 .poll_init = uart_poll_init, 2274 .poll_get_char = uart_poll_get_char, 2275 .poll_put_char = uart_poll_put_char, 2276 #endif 2277 }; 2278 2279 static const struct tty_port_operations uart_port_ops = { 2280 .activate = uart_port_activate, 2281 .shutdown = uart_port_shutdown, 2282 .carrier_raised = uart_carrier_raised, 2283 .dtr_rts = uart_dtr_rts, 2284 }; 2285 2286 /** 2287 * uart_register_driver - register a driver with the uart core layer 2288 * @drv: low level driver structure 2289 * 2290 * Register a uart driver with the core driver. We in turn register 2291 * with the tty layer, and initialise the core driver per-port state. 2292 * 2293 * We have a proc file in /proc/tty/driver which is named after the 2294 * normal driver. 2295 * 2296 * drv->port should be NULL, and the per-port structures should be 2297 * registered using uart_add_one_port after this call has succeeded. 2298 */ 2299 int uart_register_driver(struct uart_driver *drv) 2300 { 2301 struct tty_driver *normal; 2302 int i, retval; 2303 2304 BUG_ON(drv->state); 2305 2306 /* 2307 * Maybe we should be using a slab cache for this, especially if 2308 * we have a large number of ports to handle. 2309 */ 2310 drv->state = kzalloc(sizeof(struct uart_state) * drv->nr, GFP_KERNEL); 2311 if (!drv->state) 2312 goto out; 2313 2314 normal = alloc_tty_driver(drv->nr); 2315 if (!normal) 2316 goto out_kfree; 2317 2318 drv->tty_driver = normal; 2319 2320 normal->driver_name = drv->driver_name; 2321 normal->name = drv->dev_name; 2322 normal->major = drv->major; 2323 normal->minor_start = drv->minor; 2324 normal->type = TTY_DRIVER_TYPE_SERIAL; 2325 normal->subtype = SERIAL_TYPE_NORMAL; 2326 normal->init_termios = tty_std_termios; 2327 normal->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; 2328 normal->init_termios.c_ispeed = normal->init_termios.c_ospeed = 9600; 2329 normal->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; 2330 normal->driver_state = drv; 2331 tty_set_operations(normal, &uart_ops); 2332 2333 /* 2334 * Initialise the UART state(s). 2335 */ 2336 for (i = 0; i < drv->nr; i++) { 2337 struct uart_state *state = drv->state + i; 2338 struct tty_port *port = &state->port; 2339 2340 tty_port_init(port); 2341 port->ops = &uart_port_ops; 2342 port->close_delay = HZ / 2; /* .5 seconds */ 2343 port->closing_wait = 30 * HZ;/* 30 seconds */ 2344 } 2345 2346 retval = tty_register_driver(normal); 2347 if (retval >= 0) 2348 return retval; 2349 2350 for (i = 0; i < drv->nr; i++) 2351 tty_port_destroy(&drv->state[i].port); 2352 put_tty_driver(normal); 2353 out_kfree: 2354 kfree(drv->state); 2355 out: 2356 return -ENOMEM; 2357 } 2358 2359 /** 2360 * uart_unregister_driver - remove a driver from the uart core layer 2361 * @drv: low level driver structure 2362 * 2363 * Remove all references to a driver from the core driver. The low 2364 * level driver must have removed all its ports via the 2365 * uart_remove_one_port() if it registered them with uart_add_one_port(). 2366 * (ie, drv->port == NULL) 2367 */ 2368 void uart_unregister_driver(struct uart_driver *drv) 2369 { 2370 struct tty_driver *p = drv->tty_driver; 2371 unsigned int i; 2372 2373 tty_unregister_driver(p); 2374 put_tty_driver(p); 2375 for (i = 0; i < drv->nr; i++) 2376 tty_port_destroy(&drv->state[i].port); 2377 kfree(drv->state); 2378 drv->state = NULL; 2379 drv->tty_driver = NULL; 2380 } 2381 2382 struct tty_driver *uart_console_device(struct console *co, int *index) 2383 { 2384 struct uart_driver *p = co->data; 2385 *index = co->index; 2386 return p->tty_driver; 2387 } 2388 2389 static ssize_t uart_get_attr_uartclk(struct device *dev, 2390 struct device_attribute *attr, char *buf) 2391 { 2392 struct serial_struct tmp; 2393 struct tty_port *port = dev_get_drvdata(dev); 2394 2395 uart_get_info(port, &tmp); 2396 return snprintf(buf, PAGE_SIZE, "%d\n", tmp.baud_base * 16); 2397 } 2398 2399 static ssize_t uart_get_attr_type(struct device *dev, 2400 struct device_attribute *attr, char *buf) 2401 { 2402 struct serial_struct tmp; 2403 struct tty_port *port = dev_get_drvdata(dev); 2404 2405 uart_get_info(port, &tmp); 2406 return snprintf(buf, PAGE_SIZE, "%d\n", tmp.type); 2407 } 2408 static ssize_t uart_get_attr_line(struct device *dev, 2409 struct device_attribute *attr, char *buf) 2410 { 2411 struct serial_struct tmp; 2412 struct tty_port *port = dev_get_drvdata(dev); 2413 2414 uart_get_info(port, &tmp); 2415 return snprintf(buf, PAGE_SIZE, "%d\n", tmp.line); 2416 } 2417 2418 static ssize_t uart_get_attr_port(struct device *dev, 2419 struct device_attribute *attr, char *buf) 2420 { 2421 struct serial_struct tmp; 2422 struct tty_port *port = dev_get_drvdata(dev); 2423 unsigned long ioaddr; 2424 2425 uart_get_info(port, &tmp); 2426 ioaddr = tmp.port; 2427 if (HIGH_BITS_OFFSET) 2428 ioaddr |= (unsigned long)tmp.port_high << HIGH_BITS_OFFSET; 2429 return snprintf(buf, PAGE_SIZE, "0x%lX\n", ioaddr); 2430 } 2431 2432 static ssize_t uart_get_attr_irq(struct device *dev, 2433 struct device_attribute *attr, char *buf) 2434 { 2435 struct serial_struct tmp; 2436 struct tty_port *port = dev_get_drvdata(dev); 2437 2438 uart_get_info(port, &tmp); 2439 return snprintf(buf, PAGE_SIZE, "%d\n", tmp.irq); 2440 } 2441 2442 static ssize_t uart_get_attr_flags(struct device *dev, 2443 struct device_attribute *attr, char *buf) 2444 { 2445 struct serial_struct tmp; 2446 struct tty_port *port = dev_get_drvdata(dev); 2447 2448 uart_get_info(port, &tmp); 2449 return snprintf(buf, PAGE_SIZE, "0x%X\n", tmp.flags); 2450 } 2451 2452 static ssize_t uart_get_attr_xmit_fifo_size(struct device *dev, 2453 struct device_attribute *attr, char *buf) 2454 { 2455 struct serial_struct tmp; 2456 struct tty_port *port = dev_get_drvdata(dev); 2457 2458 uart_get_info(port, &tmp); 2459 return snprintf(buf, PAGE_SIZE, "%d\n", tmp.xmit_fifo_size); 2460 } 2461 2462 2463 static ssize_t uart_get_attr_close_delay(struct device *dev, 2464 struct device_attribute *attr, char *buf) 2465 { 2466 struct serial_struct tmp; 2467 struct tty_port *port = dev_get_drvdata(dev); 2468 2469 uart_get_info(port, &tmp); 2470 return snprintf(buf, PAGE_SIZE, "%d\n", tmp.close_delay); 2471 } 2472 2473 2474 static ssize_t uart_get_attr_closing_wait(struct device *dev, 2475 struct device_attribute *attr, char *buf) 2476 { 2477 struct serial_struct tmp; 2478 struct tty_port *port = dev_get_drvdata(dev); 2479 2480 uart_get_info(port, &tmp); 2481 return snprintf(buf, PAGE_SIZE, "%d\n", tmp.closing_wait); 2482 } 2483 2484 static ssize_t uart_get_attr_custom_divisor(struct device *dev, 2485 struct device_attribute *attr, char *buf) 2486 { 2487 struct serial_struct tmp; 2488 struct tty_port *port = dev_get_drvdata(dev); 2489 2490 uart_get_info(port, &tmp); 2491 return snprintf(buf, PAGE_SIZE, "%d\n", tmp.custom_divisor); 2492 } 2493 2494 static ssize_t uart_get_attr_io_type(struct device *dev, 2495 struct device_attribute *attr, char *buf) 2496 { 2497 struct serial_struct tmp; 2498 struct tty_port *port = dev_get_drvdata(dev); 2499 2500 uart_get_info(port, &tmp); 2501 return snprintf(buf, PAGE_SIZE, "%d\n", tmp.io_type); 2502 } 2503 2504 static ssize_t uart_get_attr_iomem_base(struct device *dev, 2505 struct device_attribute *attr, char *buf) 2506 { 2507 struct serial_struct tmp; 2508 struct tty_port *port = dev_get_drvdata(dev); 2509 2510 uart_get_info(port, &tmp); 2511 return snprintf(buf, PAGE_SIZE, "0x%lX\n", (unsigned long)tmp.iomem_base); 2512 } 2513 2514 static ssize_t uart_get_attr_iomem_reg_shift(struct device *dev, 2515 struct device_attribute *attr, char *buf) 2516 { 2517 struct serial_struct tmp; 2518 struct tty_port *port = dev_get_drvdata(dev); 2519 2520 uart_get_info(port, &tmp); 2521 return snprintf(buf, PAGE_SIZE, "%d\n", tmp.iomem_reg_shift); 2522 } 2523 2524 static DEVICE_ATTR(type, S_IRUSR | S_IRGRP, uart_get_attr_type, NULL); 2525 static DEVICE_ATTR(line, S_IRUSR | S_IRGRP, uart_get_attr_line, NULL); 2526 static DEVICE_ATTR(port, S_IRUSR | S_IRGRP, uart_get_attr_port, NULL); 2527 static DEVICE_ATTR(irq, S_IRUSR | S_IRGRP, uart_get_attr_irq, NULL); 2528 static DEVICE_ATTR(flags, S_IRUSR | S_IRGRP, uart_get_attr_flags, NULL); 2529 static DEVICE_ATTR(xmit_fifo_size, S_IRUSR | S_IRGRP, uart_get_attr_xmit_fifo_size, NULL); 2530 static DEVICE_ATTR(uartclk, S_IRUSR | S_IRGRP, uart_get_attr_uartclk, NULL); 2531 static DEVICE_ATTR(close_delay, S_IRUSR | S_IRGRP, uart_get_attr_close_delay, NULL); 2532 static DEVICE_ATTR(closing_wait, S_IRUSR | S_IRGRP, uart_get_attr_closing_wait, NULL); 2533 static DEVICE_ATTR(custom_divisor, S_IRUSR | S_IRGRP, uart_get_attr_custom_divisor, NULL); 2534 static DEVICE_ATTR(io_type, S_IRUSR | S_IRGRP, uart_get_attr_io_type, NULL); 2535 static DEVICE_ATTR(iomem_base, S_IRUSR | S_IRGRP, uart_get_attr_iomem_base, NULL); 2536 static DEVICE_ATTR(iomem_reg_shift, S_IRUSR | S_IRGRP, uart_get_attr_iomem_reg_shift, NULL); 2537 2538 static struct attribute *tty_dev_attrs[] = { 2539 &dev_attr_type.attr, 2540 &dev_attr_line.attr, 2541 &dev_attr_port.attr, 2542 &dev_attr_irq.attr, 2543 &dev_attr_flags.attr, 2544 &dev_attr_xmit_fifo_size.attr, 2545 &dev_attr_uartclk.attr, 2546 &dev_attr_close_delay.attr, 2547 &dev_attr_closing_wait.attr, 2548 &dev_attr_custom_divisor.attr, 2549 &dev_attr_io_type.attr, 2550 &dev_attr_iomem_base.attr, 2551 &dev_attr_iomem_reg_shift.attr, 2552 NULL, 2553 }; 2554 2555 static const struct attribute_group tty_dev_attr_group = { 2556 .attrs = tty_dev_attrs, 2557 }; 2558 2559 static const struct attribute_group *tty_dev_attr_groups[] = { 2560 &tty_dev_attr_group, 2561 NULL 2562 }; 2563 2564 2565 /** 2566 * uart_add_one_port - attach a driver-defined port structure 2567 * @drv: pointer to the uart low level driver structure for this port 2568 * @uport: uart port structure to use for this port. 2569 * 2570 * This allows the driver to register its own uart_port structure 2571 * with the core driver. The main purpose is to allow the low 2572 * level uart drivers to expand uart_port, rather than having yet 2573 * more levels of structures. 2574 */ 2575 int uart_add_one_port(struct uart_driver *drv, struct uart_port *uport) 2576 { 2577 struct uart_state *state; 2578 struct tty_port *port; 2579 int ret = 0; 2580 struct device *tty_dev; 2581 2582 BUG_ON(in_interrupt()); 2583 2584 if (uport->line >= drv->nr) 2585 return -EINVAL; 2586 2587 state = drv->state + uport->line; 2588 port = &state->port; 2589 2590 mutex_lock(&port_mutex); 2591 mutex_lock(&port->mutex); 2592 if (state->uart_port) { 2593 ret = -EINVAL; 2594 goto out; 2595 } 2596 2597 state->uart_port = uport; 2598 state->pm_state = UART_PM_STATE_UNDEFINED; 2599 2600 uport->cons = drv->cons; 2601 uport->state = state; 2602 2603 /* 2604 * If this port is a console, then the spinlock is already 2605 * initialised. 2606 */ 2607 if (!(uart_console(uport) && (uport->cons->flags & CON_ENABLED))) { 2608 spin_lock_init(&uport->lock); 2609 lockdep_set_class(&uport->lock, &port_lock_key); 2610 } 2611 2612 uart_configure_port(drv, state, uport); 2613 2614 /* 2615 * Register the port whether it's detected or not. This allows 2616 * setserial to be used to alter this port's parameters. 2617 */ 2618 tty_dev = tty_port_register_device_attr(port, drv->tty_driver, 2619 uport->line, uport->dev, port, tty_dev_attr_groups); 2620 if (likely(!IS_ERR(tty_dev))) { 2621 device_set_wakeup_capable(tty_dev, 1); 2622 } else { 2623 printk(KERN_ERR "Cannot register tty device on line %d\n", 2624 uport->line); 2625 } 2626 2627 /* 2628 * Ensure UPF_DEAD is not set. 2629 */ 2630 uport->flags &= ~UPF_DEAD; 2631 2632 out: 2633 mutex_unlock(&port->mutex); 2634 mutex_unlock(&port_mutex); 2635 2636 return ret; 2637 } 2638 2639 /** 2640 * uart_remove_one_port - detach a driver defined port structure 2641 * @drv: pointer to the uart low level driver structure for this port 2642 * @uport: uart port structure for this port 2643 * 2644 * This unhooks (and hangs up) the specified port structure from the 2645 * core driver. No further calls will be made to the low-level code 2646 * for this port. 2647 */ 2648 int uart_remove_one_port(struct uart_driver *drv, struct uart_port *uport) 2649 { 2650 struct uart_state *state = drv->state + uport->line; 2651 struct tty_port *port = &state->port; 2652 struct tty_struct *tty; 2653 int ret = 0; 2654 2655 BUG_ON(in_interrupt()); 2656 2657 if (state->uart_port != uport) 2658 printk(KERN_ALERT "Removing wrong port: %p != %p\n", 2659 state->uart_port, uport); 2660 2661 mutex_lock(&port_mutex); 2662 2663 /* 2664 * Mark the port "dead" - this prevents any opens from 2665 * succeeding while we shut down the port. 2666 */ 2667 mutex_lock(&port->mutex); 2668 if (!state->uart_port) { 2669 mutex_unlock(&port->mutex); 2670 ret = -EINVAL; 2671 goto out; 2672 } 2673 uport->flags |= UPF_DEAD; 2674 mutex_unlock(&port->mutex); 2675 2676 /* 2677 * Remove the devices from the tty layer 2678 */ 2679 tty_unregister_device(drv->tty_driver, uport->line); 2680 2681 tty = tty_port_tty_get(port); 2682 if (tty) { 2683 tty_vhangup(port->tty); 2684 tty_kref_put(tty); 2685 } 2686 2687 /* 2688 * If the port is used as a console, unregister it 2689 */ 2690 if (uart_console(uport)) 2691 unregister_console(uport->cons); 2692 2693 /* 2694 * Free the port IO and memory resources, if any. 2695 */ 2696 if (uport->type != PORT_UNKNOWN) 2697 uport->ops->release_port(uport); 2698 2699 /* 2700 * Indicate that there isn't a port here anymore. 2701 */ 2702 uport->type = PORT_UNKNOWN; 2703 2704 state->uart_port = NULL; 2705 out: 2706 mutex_unlock(&port_mutex); 2707 2708 return ret; 2709 } 2710 2711 /* 2712 * Are the two ports equivalent? 2713 */ 2714 int uart_match_port(struct uart_port *port1, struct uart_port *port2) 2715 { 2716 if (port1->iotype != port2->iotype) 2717 return 0; 2718 2719 switch (port1->iotype) { 2720 case UPIO_PORT: 2721 return (port1->iobase == port2->iobase); 2722 case UPIO_HUB6: 2723 return (port1->iobase == port2->iobase) && 2724 (port1->hub6 == port2->hub6); 2725 case UPIO_MEM: 2726 case UPIO_MEM32: 2727 case UPIO_AU: 2728 case UPIO_TSI: 2729 return (port1->mapbase == port2->mapbase); 2730 } 2731 return 0; 2732 } 2733 EXPORT_SYMBOL(uart_match_port); 2734 2735 /** 2736 * uart_handle_dcd_change - handle a change of carrier detect state 2737 * @uport: uart_port structure for the open port 2738 * @status: new carrier detect status, nonzero if active 2739 */ 2740 void uart_handle_dcd_change(struct uart_port *uport, unsigned int status) 2741 { 2742 struct tty_port *port = &uport->state->port; 2743 struct tty_struct *tty = port->tty; 2744 struct tty_ldisc *ld = tty ? tty_ldisc_ref(tty) : NULL; 2745 2746 if (ld) { 2747 if (ld->ops->dcd_change) 2748 ld->ops->dcd_change(tty, status); 2749 tty_ldisc_deref(ld); 2750 } 2751 2752 uport->icount.dcd++; 2753 2754 if (port->flags & ASYNC_CHECK_CD) { 2755 if (status) 2756 wake_up_interruptible(&port->open_wait); 2757 else if (tty) 2758 tty_hangup(tty); 2759 } 2760 } 2761 EXPORT_SYMBOL_GPL(uart_handle_dcd_change); 2762 2763 /** 2764 * uart_handle_cts_change - handle a change of clear-to-send state 2765 * @uport: uart_port structure for the open port 2766 * @status: new clear to send status, nonzero if active 2767 */ 2768 void uart_handle_cts_change(struct uart_port *uport, unsigned int status) 2769 { 2770 struct tty_port *port = &uport->state->port; 2771 struct tty_struct *tty = port->tty; 2772 2773 uport->icount.cts++; 2774 2775 if (tty_port_cts_enabled(port)) { 2776 if (tty->hw_stopped) { 2777 if (status) { 2778 tty->hw_stopped = 0; 2779 uport->ops->start_tx(uport); 2780 uart_write_wakeup(uport); 2781 } 2782 } else { 2783 if (!status) { 2784 tty->hw_stopped = 1; 2785 uport->ops->stop_tx(uport); 2786 } 2787 } 2788 } 2789 } 2790 EXPORT_SYMBOL_GPL(uart_handle_cts_change); 2791 2792 /** 2793 * uart_insert_char - push a char to the uart layer 2794 * 2795 * User is responsible to call tty_flip_buffer_push when they are done with 2796 * insertion. 2797 * 2798 * @port: corresponding port 2799 * @status: state of the serial port RX buffer (LSR for 8250) 2800 * @overrun: mask of overrun bits in @status 2801 * @ch: character to push 2802 * @flag: flag for the character (see TTY_NORMAL and friends) 2803 */ 2804 void uart_insert_char(struct uart_port *port, unsigned int status, 2805 unsigned int overrun, unsigned int ch, unsigned int flag) 2806 { 2807 struct tty_port *tport = &port->state->port; 2808 2809 if ((status & port->ignore_status_mask & ~overrun) == 0) 2810 if (tty_insert_flip_char(tport, ch, flag) == 0) 2811 ++port->icount.buf_overrun; 2812 2813 /* 2814 * Overrun is special. Since it's reported immediately, 2815 * it doesn't affect the current character. 2816 */ 2817 if (status & ~port->ignore_status_mask & overrun) 2818 if (tty_insert_flip_char(tport, 0, TTY_OVERRUN) == 0) 2819 ++port->icount.buf_overrun; 2820 } 2821 EXPORT_SYMBOL_GPL(uart_insert_char); 2822 2823 EXPORT_SYMBOL(uart_write_wakeup); 2824 EXPORT_SYMBOL(uart_register_driver); 2825 EXPORT_SYMBOL(uart_unregister_driver); 2826 EXPORT_SYMBOL(uart_suspend_port); 2827 EXPORT_SYMBOL(uart_resume_port); 2828 EXPORT_SYMBOL(uart_add_one_port); 2829 EXPORT_SYMBOL(uart_remove_one_port); 2830 2831 MODULE_DESCRIPTION("Serial driver core"); 2832 MODULE_LICENSE("GPL"); 2833