summaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/greybus/uart.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/staging/greybus/uart.c b/drivers/staging/greybus/uart.c
index 4cad629e3cb2..c47667d0bec5 100644
--- a/drivers/staging/greybus/uart.c
+++ b/drivers/staging/greybus/uart.c
@@ -522,6 +522,7 @@ static const struct tty_operations gb_ops = {
.tiocmset = gb_tty_tiocmset,
};
+static struct tty_port_operations null_ops = { };
static int gb_tty_init(void);
static void gb_tty_exit(void);
@@ -545,6 +546,7 @@ static int gb_uart_connection_init(struct gb_connection *connection)
gb_tty = kzalloc(sizeof(*gb_tty), GFP_KERNEL);
if (!gb_tty)
return -ENOMEM;
+
gb_tty->connection = connection;
connection->private = gb_tty;
@@ -571,6 +573,9 @@ static int gb_uart_connection_init(struct gb_connection *connection)
init_waitqueue_head(&gb_tty->wioctl);
mutex_init(&gb_tty->mutex);
+ tty_port_init(&gb_tty->port);
+ gb_tty->port.ops = &null_ops;
+
send_control(gb_tty, gb_tty->ctrlout);
/* initialize the uart to be 9600n81 */
@@ -589,6 +594,7 @@ static int gb_uart_connection_init(struct gb_connection *connection)
return 0;
error:
+ tty_port_destroy(&gb_tty->port);
release_minor(gb_tty);
error_version:
connection->private = NULL;
@@ -623,7 +629,7 @@ static void gb_uart_connection_exit(struct gb_connection *connection)
/* FIXME - free transmit / receive buffers */
tty_port_put(&gb_tty->port);
-
+ tty_port_destroy(&gb_tty->port);
kfree(gb_tty);
/* If last device is gone, tear down the tty structures */