.. | .. |
---|
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 | |
---|