Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 04ec1c8c authored by Al Viro's avatar Al Viro
Browse files

dgnc: TIOCM... won't reach ->ioctl()



bury the dead code (and ->tiocmget()/->tiocmset() are there, so I really
wonder why have they kept the stuff that became unreachable with the
introduction of those...)

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent e67504c5
Loading
Loading
Loading
Loading
+0 −114
Original line number Diff line number Diff line
@@ -60,10 +60,6 @@ static void dgnc_tty_unthrottle(struct tty_struct *tty);
static void dgnc_tty_flush_chars(struct tty_struct *tty);
static void dgnc_tty_flush_buffer(struct tty_struct *tty);
static void dgnc_tty_hangup(struct tty_struct *tty);
static int dgnc_set_modem_info(struct channel_t *ch, unsigned int command,
			       unsigned int __user *value);
static int dgnc_get_modem_info(struct channel_t *ch,
			       unsigned int __user *value);
static int dgnc_tty_tiocmget(struct tty_struct *tty);
static int dgnc_tty_tiocmset(struct tty_struct *tty, unsigned int set,
			     unsigned int clear);
@@ -1701,106 +1697,6 @@ static void dgnc_tty_send_xchar(struct tty_struct *tty, char c)
	spin_unlock_irqrestore(&ch->ch_lock, flags);
}

/* Return modem signals to ld. */
static inline int dgnc_get_mstat(struct channel_t *ch)
{
	unsigned char mstat;
	unsigned long flags;
	int rc;

	if (!ch)
		return -ENXIO;

	spin_lock_irqsave(&ch->ch_lock, flags);

	mstat = ch->ch_mostat | ch->ch_mistat;

	spin_unlock_irqrestore(&ch->ch_lock, flags);

	rc = 0;

	if (mstat & UART_MCR_DTR)
		rc |= TIOCM_DTR;
	if (mstat & UART_MCR_RTS)
		rc |= TIOCM_RTS;
	if (mstat & UART_MSR_CTS)
		rc |= TIOCM_CTS;
	if (mstat & UART_MSR_DSR)
		rc |= TIOCM_DSR;
	if (mstat & UART_MSR_RI)
		rc |= TIOCM_RI;
	if (mstat & UART_MSR_DCD)
		rc |= TIOCM_CD;

	return rc;
}

/* Return modem signals to ld. */
static int dgnc_get_modem_info(struct channel_t *ch,
			       unsigned int  __user *value)
{
	return put_user(dgnc_get_mstat(ch), value);
}

/* Set modem signals, called by ld. */
static int dgnc_set_modem_info(struct channel_t *ch,
			       unsigned int command,
			       unsigned int __user *value)
{
	int rc;
	unsigned int arg = 0;
	unsigned long flags;

	rc = get_user(arg, value);
	if (rc)
		return rc;

	switch (command) {
	case TIOCMBIS:
		if (arg & TIOCM_RTS)
			ch->ch_mostat |= UART_MCR_RTS;

		if (arg & TIOCM_DTR)
			ch->ch_mostat |= UART_MCR_DTR;

		break;

	case TIOCMBIC:
		if (arg & TIOCM_RTS)
			ch->ch_mostat &= ~(UART_MCR_RTS);

		if (arg & TIOCM_DTR)
			ch->ch_mostat &= ~(UART_MCR_DTR);

		break;

	case TIOCMSET:

		if (arg & TIOCM_RTS)
			ch->ch_mostat |= UART_MCR_RTS;
		else
			ch->ch_mostat &= ~(UART_MCR_RTS);

		if (arg & TIOCM_DTR)
			ch->ch_mostat |= UART_MCR_DTR;
		else
			ch->ch_mostat &= ~(UART_MCR_DTR);

		break;

	default:
		return -EINVAL;
	}

	spin_lock_irqsave(&ch->ch_lock, flags);

	ch->ch_bd->bd_ops->assert_modem_signals(ch);

	spin_unlock_irqrestore(&ch->ch_lock, flags);

	return 0;
}

/* Ioctl to get the information for ditty. */
static int dgnc_tty_digigeta(struct tty_struct *tty,
			     struct digi_t __user *retinfo)
@@ -2282,16 +2178,6 @@ static int dgnc_tty_ioctl(struct tty_struct *tty, unsigned int cmd,

		return 0;

	case TIOCMGET:
		spin_unlock_irqrestore(&ch->ch_lock, flags);
		return dgnc_get_modem_info(ch, uarg);

	case TIOCMBIS:
	case TIOCMBIC:
	case TIOCMSET:
		spin_unlock_irqrestore(&ch->ch_lock, flags);
		return dgnc_set_modem_info(ch, cmd, uarg);

		/* Here are any additional ioctl's that we want to implement */

	case TCFLSH: