From 424a4b595e35df700314ca528ea91483edef9636 Mon Sep 17 00:00:00 2001 From: Johan Hovold Date: Tue, 8 Nov 2016 13:31:19 +0100 Subject: staging: greybus: use get_icount tty operation Use the tty get_icount operation instead of implementing TIOCGICOUNT directly. Signed-off-by: Johan Hovold Reviewed-by: Viresh Kumar Signed-off-by: Greg Kroah-Hartman --- drivers/staging/greybus/uart.c | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) (limited to 'drivers/staging/greybus/uart.c') diff --git a/drivers/staging/greybus/uart.c b/drivers/staging/greybus/uart.c index 35755f70d5a2..6d39f4a04754 100644 --- a/drivers/staging/greybus/uart.c +++ b/drivers/staging/greybus/uart.c @@ -708,25 +708,20 @@ static int wait_serial_change(struct gb_tty *gb_tty, unsigned long arg) return retval; } -static int get_serial_usage(struct gb_tty *gb_tty, - struct serial_icounter_struct __user *count) +static int gb_tty_get_icount(struct tty_struct *tty, + struct serial_icounter_struct *icount) { - struct serial_icounter_struct icount; - int retval = 0; - - memset(&icount, 0, sizeof(icount)); - icount.dsr = gb_tty->iocount.dsr; - icount.rng = gb_tty->iocount.rng; - icount.dcd = gb_tty->iocount.dcd; - icount.frame = gb_tty->iocount.frame; - icount.overrun = gb_tty->iocount.overrun; - icount.parity = gb_tty->iocount.parity; - icount.brk = gb_tty->iocount.brk; + struct gb_tty *gb_tty = tty->driver_data; - if (copy_to_user(count, &icount, sizeof(icount)) > 0) - retval = -EFAULT; + icount->dsr = gb_tty->iocount.dsr; + icount->rng = gb_tty->iocount.rng; + icount->dcd = gb_tty->iocount.dcd; + icount->frame = gb_tty->iocount.frame; + icount->overrun = gb_tty->iocount.overrun; + icount->parity = gb_tty->iocount.parity; + icount->brk = gb_tty->iocount.brk; - return retval; + return 0; } static int gb_tty_ioctl(struct tty_struct *tty, unsigned int cmd, @@ -743,9 +738,6 @@ static int gb_tty_ioctl(struct tty_struct *tty, unsigned int cmd, (struct serial_struct __user *)arg); case TIOCMIWAIT: return wait_serial_change(gb_tty, arg); - case TIOCGICOUNT: - return get_serial_usage(gb_tty, - (struct serial_icounter_struct __user *)arg); } return -ENOIOCTLCMD; @@ -827,6 +819,7 @@ static const struct tty_operations gb_ops = { .set_termios = gb_tty_set_termios, .tiocmget = gb_tty_tiocmget, .tiocmset = gb_tty_tiocmset, + .get_icount = gb_tty_get_icount, }; static const struct tty_port_operations gb_port_ops = { -- cgit v1.2.3