| .. | .. |
|---|
| 331 | 331 | return usb_serial_generic_open(tty, port); |
|---|
| 332 | 332 | } |
|---|
| 333 | 333 | |
|---|
| 334 | | -static int get_serial_info(struct usb_serial_port *port, |
|---|
| 335 | | - struct serial_struct __user *retinfo) |
|---|
| 336 | | -{ |
|---|
| 337 | | - struct serial_struct tmp; |
|---|
| 338 | | - |
|---|
| 339 | | - memset(&tmp, 0, sizeof(tmp)); |
|---|
| 340 | | - tmp.line = port->minor; |
|---|
| 341 | | - tmp.port = 0; |
|---|
| 342 | | - tmp.irq = 0; |
|---|
| 343 | | - tmp.xmit_fifo_size = port->bulk_out_size; |
|---|
| 344 | | - tmp.baud_base = 9600; |
|---|
| 345 | | - tmp.close_delay = 5*HZ; |
|---|
| 346 | | - tmp.closing_wait = 30*HZ; |
|---|
| 347 | | - |
|---|
| 348 | | - if (copy_to_user(retinfo, &tmp, sizeof(*retinfo))) |
|---|
| 349 | | - return -EFAULT; |
|---|
| 350 | | - return 0; |
|---|
| 351 | | -} |
|---|
| 352 | | - |
|---|
| 353 | | -static int ssu100_ioctl(struct tty_struct *tty, |
|---|
| 354 | | - unsigned int cmd, unsigned long arg) |
|---|
| 334 | +static int get_serial_info(struct tty_struct *tty, |
|---|
| 335 | + struct serial_struct *ss) |
|---|
| 355 | 336 | { |
|---|
| 356 | 337 | struct usb_serial_port *port = tty->driver_data; |
|---|
| 357 | 338 | |
|---|
| 358 | | - switch (cmd) { |
|---|
| 359 | | - case TIOCGSERIAL: |
|---|
| 360 | | - return get_serial_info(port, |
|---|
| 361 | | - (struct serial_struct __user *) arg); |
|---|
| 362 | | - default: |
|---|
| 363 | | - break; |
|---|
| 364 | | - } |
|---|
| 365 | | - |
|---|
| 366 | | - return -ENOIOCTLCMD; |
|---|
| 339 | + ss->line = port->minor; |
|---|
| 340 | + ss->port = 0; |
|---|
| 341 | + ss->irq = 0; |
|---|
| 342 | + ss->xmit_fifo_size = port->bulk_out_size; |
|---|
| 343 | + ss->baud_base = 9600; |
|---|
| 344 | + ss->close_delay = 5*HZ; |
|---|
| 345 | + ss->closing_wait = 30*HZ; |
|---|
| 346 | + return 0; |
|---|
| 367 | 347 | } |
|---|
| 368 | 348 | |
|---|
| 369 | 349 | static int ssu100_attach(struct usb_serial *serial) |
|---|
| .. | .. |
|---|
| 515 | 495 | static void ssu100_process_read_urb(struct urb *urb) |
|---|
| 516 | 496 | { |
|---|
| 517 | 497 | struct usb_serial_port *port = urb->context; |
|---|
| 518 | | - char *packet = (char *)urb->transfer_buffer; |
|---|
| 498 | + char *packet = urb->transfer_buffer; |
|---|
| 519 | 499 | char flag = TTY_NORMAL; |
|---|
| 520 | 500 | u32 len = urb->actual_length; |
|---|
| 521 | 501 | int i; |
|---|
| .. | .. |
|---|
| 537 | 517 | if (!len) |
|---|
| 538 | 518 | return; /* status only */ |
|---|
| 539 | 519 | |
|---|
| 540 | | - if (port->port.console && port->sysrq) { |
|---|
| 520 | + if (port->sysrq) { |
|---|
| 541 | 521 | for (i = 0; i < len; i++, ch++) { |
|---|
| 542 | 522 | if (!usb_serial_handle_sysrq_char(port, *ch)) |
|---|
| 543 | 523 | tty_insert_flip_char(&port->port, *ch, flag); |
|---|
| 544 | 524 | } |
|---|
| 545 | | - } else |
|---|
| 525 | + } else { |
|---|
| 546 | 526 | tty_insert_flip_string_fixed_flag(&port->port, ch, flag, len); |
|---|
| 527 | + } |
|---|
| 547 | 528 | |
|---|
| 548 | 529 | tty_flip_buffer_push(&port->port); |
|---|
| 549 | 530 | } |
|---|
| .. | .. |
|---|
| 566 | 547 | .tiocmset = ssu100_tiocmset, |
|---|
| 567 | 548 | .tiocmiwait = usb_serial_generic_tiocmiwait, |
|---|
| 568 | 549 | .get_icount = usb_serial_generic_get_icount, |
|---|
| 569 | | - .ioctl = ssu100_ioctl, |
|---|
| 550 | + .get_serial = get_serial_info, |
|---|
| 570 | 551 | .set_termios = ssu100_set_termios, |
|---|
| 571 | 552 | }; |
|---|
| 572 | 553 | |
|---|