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

Commit e0f8d323 authored by Samuel Iglesias Gonsalvez's avatar Samuel Iglesias Gonsalvez Committed by Greg Kroah-Hartman
Browse files

ipack/devices/ipoctal: added shutdown callback



Added shutdown callback to disable RX and TX when there is no other client
accesing the device.

Signed-off-by: default avatarSamuel Iglesias Gonsalvez <siglesias@igalia.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b0d17fbd
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -625,6 +625,22 @@ static void ipoctal_hangup(struct tty_struct *tty)
	wake_up_interruptible(&channel->tty_port.open_wait);
}

static void ipoctal_shutdown(struct tty_struct *tty)
{
	struct ipoctal_channel *channel = tty->driver_data;

	if (channel == NULL)
		return;

	iowrite8(CR_DISABLE_RX | CR_DISABLE_TX, &channel->regs->w.cr);
	channel->rx_enable = 0;
	iowrite8(CR_CMD_RESET_RX, &channel->regs->w.cr);
	iowrite8(CR_CMD_RESET_TX, &channel->regs->w.cr);
	iowrite8(CR_CMD_RESET_ERR_STATUS, &channel->regs->w.cr);
	iowrite8(CR_CMD_RESET_MR, &channel->regs->w.cr);
	clear_bit(ASYNCB_INITIALIZED, &channel->tty_port.flags);
}

static const struct tty_operations ipoctal_fops = {
	.ioctl =		NULL,
	.open =			ipoctal_open,
@@ -635,6 +651,7 @@ static const struct tty_operations ipoctal_fops = {
	.chars_in_buffer =	ipoctal_chars_in_buffer,
	.get_icount =		ipoctal_get_icount,
	.hangup =		ipoctal_hangup,
	.shutdown =		ipoctal_shutdown,
};

static int ipoctal_probe(struct ipack_device *dev)