Skip to content

Commit

Permalink
ipack/devices/ipoctal: added shutdown callback
Browse files Browse the repository at this point in the history
Added shutdown callback to disable RX and TX when there is no other client
accesing the device.

Signed-off-by: Samuel Iglesias Gonsalvez <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
samuelig authored and gregkh committed Jan 16, 2013
1 parent b0d17fb commit e0f8d32
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions drivers/ipack/devices/ipoctal.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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)
Expand Down

0 comments on commit e0f8d32

Please sign in to comment.