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

Commit 734cc178 authored by Jiri Slaby's avatar Jiri Slaby Committed by Greg Kroah-Hartman
Browse files

TTY: use tty_port_register_device



Currently we have no way to assign tty->port while performing tty
installation. There are two ways to provide the link tty_struct =>
tty_port. Either by calling tty_port_install from tty->ops->install or
tty_port_register_device called instead of tty_register_device when
the device is being set up after connected.

In this patch we modify most of the drivers to do the latter. When the
drivers use tty_register_device and we have tty_port already, we
switch to tty_port_register_device. So we have the tty_struct =>
tty_port link for free for those.

Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
Acked-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 7e73eca6
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -409,7 +409,8 @@ int setup_one_line(struct line *lines, int n, char *init,
		line->valid = 1;
		line->valid = 1;
		err = parse_chan_pair(new, line, n, opts, error_out);
		err = parse_chan_pair(new, line, n, opts, error_out);
		if (!err) {
		if (!err) {
			struct device *d = tty_register_device(driver, n, NULL);
			struct device *d = tty_port_register_device(&line->port,
					driver, n, NULL);
			if (IS_ERR(d)) {
			if (IS_ERR(d)) {
				*error_out = "Failed to register device";
				*error_out = "Failed to register device";
				err = PTR_ERR(d);
				err = PTR_ERR(d);
+2 −1
Original line number Original line Diff line number Diff line
@@ -234,7 +234,8 @@ static struct capiminor *capiminor_alloc(struct capi20_appl *ap, u32 ncci)


	mp->minor = minor;
	mp->minor = minor;


	dev = tty_register_device(capinc_tty_driver, minor, NULL);
	dev = tty_port_register_device(&mp->port, capinc_tty_driver, minor,
			NULL);
	if (IS_ERR(dev))
	if (IS_ERR(dev))
		goto err_out2;
		goto err_out2;


+2 −1
Original line number Original line Diff line number Diff line
@@ -524,7 +524,8 @@ void gigaset_if_init(struct cardstate *cs)
	tasklet_init(&cs->if_wake_tasklet, if_wake, (unsigned long) cs);
	tasklet_init(&cs->if_wake_tasklet, if_wake, (unsigned long) cs);


	mutex_lock(&cs->mutex);
	mutex_lock(&cs->mutex);
	cs->tty_dev = tty_register_device(drv->tty, cs->minor_index, NULL);
	cs->tty_dev = tty_port_register_device(&cs->port, drv->tty,
			cs->minor_index, NULL);


	if (!IS_ERR(cs->tty_dev))
	if (!IS_ERR(cs->tty_dev))
		dev_set_drvdata(cs->tty_dev, cs);
		dev_set_drvdata(cs->tty_dev, cs);
+2 −2
Original line number Original line Diff line number Diff line
@@ -1132,8 +1132,8 @@ static int sdio_uart_probe(struct sdio_func *func,
		kfree(port);
		kfree(port);
	} else {
	} else {
		struct device *dev;
		struct device *dev;
		dev = tty_register_device(sdio_uart_tty_driver,
		dev = tty_port_register_device(&port->port,
						port->index, &func->dev);
				sdio_uart_tty_driver, port->index, &func->dev);
		if (IS_ERR(dev)) {
		if (IS_ERR(dev)) {
			sdio_uart_port_remove(port);
			sdio_uart_port_remove(port);
			ret = PTR_ERR(dev);
			ret = PTR_ERR(dev);
+4 −3
Original line number Original line Diff line number Diff line
@@ -2287,9 +2287,11 @@ static int hso_serial_common_create(struct hso_serial *serial, int num_urbs,
	if (minor < 0)
	if (minor < 0)
		goto exit;
		goto exit;


	tty_port_init(&serial->port);

	/* register our minor number */
	/* register our minor number */
	serial->parent->dev = tty_register_device(tty_drv, minor,
	serial->parent->dev = tty_port_register_device(&serial->port, tty_drv,
					&serial->parent->interface->dev);
			minor, &serial->parent->interface->dev);
	dev = serial->parent->dev;
	dev = serial->parent->dev;
	dev_set_drvdata(dev, serial->parent);
	dev_set_drvdata(dev, serial->parent);
	i = device_create_file(dev, &dev_attr_hsotype);
	i = device_create_file(dev, &dev_attr_hsotype);
@@ -2298,7 +2300,6 @@ static int hso_serial_common_create(struct hso_serial *serial, int num_urbs,
	serial->minor = minor;
	serial->minor = minor;
	serial->magic = HSO_SERIAL_MAGIC;
	serial->magic = HSO_SERIAL_MAGIC;
	spin_lock_init(&serial->serial_lock);
	spin_lock_init(&serial->serial_lock);
	tty_port_init(&serial->port);
	serial->num_rx_urbs = num_urbs;
	serial->num_rx_urbs = num_urbs;


	/* RX, allocate urb and initialize */
	/* RX, allocate urb and initialize */
Loading