Commit 424a4b59 authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

staging: greybus: use get_icount tty operation



Use the tty get_icount operation instead of implementing TIOCGICOUNT
directly.

Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
Reviewed-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 4807f2c0
Loading
Loading
Loading
Loading
+12 −19
Original line number Diff line number Diff line
@@ -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 = {