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

Commit 35f95fd7 authored by Jiri Slaby's avatar Jiri Slaby Committed by Greg Kroah-Hartman
Browse files

TTY: usb/u_serial, use tty from tty_port

parent 266e37ef
Loading
Loading
Loading
Loading
+9 −10
Original line number Original line Diff line number Diff line
@@ -98,7 +98,6 @@ struct gs_port {
	spinlock_t		port_lock;	/* guard port_* access */
	spinlock_t		port_lock;	/* guard port_* access */


	struct gserial		*port_usb;
	struct gserial		*port_usb;
	struct tty_struct	*port_tty;


	bool			openclose;	/* open/close in progress */
	bool			openclose;	/* open/close in progress */
	u8			port_num;
	u8			port_num;
@@ -412,8 +411,8 @@ __acquires(&port->port_lock)
			break;
			break;
	}
	}


	if (do_tty_wake && port->port_tty)
	if (do_tty_wake && port->port.tty)
		tty_wakeup(port->port_tty);
		tty_wakeup(port->port.tty);
	return status;
	return status;
}
}


@@ -435,7 +434,7 @@ __acquires(&port->port_lock)
		struct tty_struct	*tty;
		struct tty_struct	*tty;


		/* no more rx if closed */
		/* no more rx if closed */
		tty = port->port_tty;
		tty = port->port.tty;
		if (!tty)
		if (!tty)
			break;
			break;


@@ -488,7 +487,7 @@ static void gs_rx_push(unsigned long _port)


	/* hand any queued data to the tty */
	/* hand any queued data to the tty */
	spin_lock_irq(&port->port_lock);
	spin_lock_irq(&port->port_lock);
	tty = port->port_tty;
	tty = port->port.tty;
	while (!list_empty(queue)) {
	while (!list_empty(queue)) {
		struct usb_request	*req;
		struct usb_request	*req;


@@ -699,7 +698,7 @@ static int gs_start_io(struct gs_port *port)


	/* unblock any pending writes into our circular buffer */
	/* unblock any pending writes into our circular buffer */
	if (started) {
	if (started) {
		tty_wakeup(port->port_tty);
		tty_wakeup(port->port.tty);
	} else {
	} else {
		gs_free_requests(ep, head, &port->read_allocated);
		gs_free_requests(ep, head, &port->read_allocated);
		gs_free_requests(port->port_usb->in, &port->write_pool,
		gs_free_requests(port->port_usb->in, &port->write_pool,
@@ -793,7 +792,7 @@ static int gs_open(struct tty_struct *tty, struct file *file)
	/* REVISIT maybe wait for "carrier detect" */
	/* REVISIT maybe wait for "carrier detect" */


	tty->driver_data = port;
	tty->driver_data = port;
	port->port_tty = tty;
	port->port.tty = tty;


	port->port.count = 1;
	port->port.count = 1;
	port->openclose = false;
	port->openclose = false;
@@ -879,7 +878,7 @@ static void gs_close(struct tty_struct *tty, struct file *file)
		gs_buf_clear(&port->port_write_buf);
		gs_buf_clear(&port->port_write_buf);


	tty->driver_data = NULL;
	tty->driver_data = NULL;
	port->port_tty = NULL;
	port->port.tty = NULL;


	port->openclose = false;
	port->openclose = false;


@@ -1318,8 +1317,8 @@ void gserial_disconnect(struct gserial *gser)
	gser->ioport = NULL;
	gser->ioport = NULL;
	if (port->port.count > 0 || port->openclose) {
	if (port->port.count > 0 || port->openclose) {
		wake_up_interruptible(&port->drain_wait);
		wake_up_interruptible(&port->drain_wait);
		if (port->port_tty)
		if (port->port.tty)
			tty_hangup(port->port_tty);
			tty_hangup(port->port.tty);
	}
	}
	spin_unlock_irqrestore(&port->port_lock, flags);
	spin_unlock_irqrestore(&port->port_lock, flags);