Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

TTY: use tty_port_link_device

So now for those drivers that can use neither tty_port_install nor
tty_port_register_driver but still have tty_port available before
tty_register_driver we use newly added tty_port_link_device.

The rest of the drivers that still do not provide tty_struct <->
tty_port link will have to be converted to implement
tty->ops->install.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Acked-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Jiri Slaby and committed by
Greg Kroah-Hartman
b19e2ca7 2cb4ca02

+30 -13
+1
arch/alpha/kernel/srmcons.c
··· 223 223 driver->subtype = SYSTEM_TYPE_SYSCONS; 224 224 driver->init_termios = tty_std_termios; 225 225 tty_set_operations(driver, &srmcons_ops); 226 + tty_port_link_device(&srmcons_singleton.port, driver, 0); 226 227 err = tty_register_driver(driver); 227 228 if (err) { 228 229 put_tty_driver(driver);
+1
arch/ia64/hp/sim/simserial.c
··· 545 545 /* the port is imaginary */ 546 546 printk(KERN_INFO "ttyS0 at 0x03f8 (irq = %d) is a 16550\n", state->irq); 547 547 548 + tty_port_link_device(&state->port, hp_simserial_driver, 0); 548 549 retval = tty_register_driver(hp_simserial_driver); 549 550 if (retval) { 550 551 printk(KERN_ERR "Couldn't register simserial driver\n");
+1
arch/parisc/kernel/pdc_cons.c
··· 202 202 pdc_console_tty_driver->flags = TTY_DRIVER_REAL_RAW | 203 203 TTY_DRIVER_RESET_TERMIOS; 204 204 tty_set_operations(pdc_console_tty_driver, &pdc_console_tty_ops); 205 + tty_port_link_device(&tty_port, pdc_console_tty_driver, 0); 205 206 206 207 err = tty_register_driver(pdc_console_tty_driver); 207 208 if (err) {
+1
arch/xtensa/platforms/iss/console.c
··· 223 223 serial_driver->flags = TTY_DRIVER_REAL_RAW; 224 224 225 225 tty_set_operations(serial_driver, &serial_ops); 226 + tty_port_link_device(&serial_port, serial_driver, 0); 226 227 227 228 if (tty_register_driver(serial_driver)) 228 229 panic("Couldn't register serial driver\n");
+1
drivers/char/ttyprintk.c
··· 198 198 ttyprintk_driver->init_termios = tty_std_termios; 199 199 ttyprintk_driver->init_termios.c_oflag = OPOST | OCRNL | ONOCR | ONLRET; 200 200 tty_set_operations(ttyprintk_driver, &ttyprintk_ops); 201 + tty_port_link_device(&tpk_port.port, ttyprintk_driver, 0); 201 202 202 203 ret = tty_register_driver(ttyprintk_driver); 203 204 if (ret < 0) {
+1
drivers/s390/char/sclp_tty.c
··· 567 567 driver->init_termios.c_lflag = ISIG | ECHO; 568 568 driver->flags = TTY_DRIVER_REAL_RAW; 569 569 tty_set_operations(driver, &sclp_ops); 570 + tty_port_link_device(&sclp_port, driver, 0); 570 571 rc = tty_register_driver(driver); 571 572 if (rc) { 572 573 put_tty_driver(driver);
+1
drivers/s390/char/sclp_vt220.c
··· 691 691 driver->init_termios = tty_std_termios; 692 692 driver->flags = TTY_DRIVER_REAL_RAW; 693 693 tty_set_operations(driver, &sclp_vt220_ops); 694 + tty_port_link_device(&sclp_vt220_port, driver, 0); 694 695 695 696 rc = tty_register_driver(driver); 696 697 if (rc)
+5 -4
drivers/tty/amiserial.c
··· 1710 1710 serial_driver->flags = TTY_DRIVER_REAL_RAW; 1711 1711 tty_set_operations(serial_driver, &serial_ops); 1712 1712 1713 - error = tty_register_driver(serial_driver); 1714 - if (error) 1715 - goto fail_put_tty_driver; 1716 - 1717 1713 state = rs_table; 1718 1714 state->port = (int)&custom.serdatr; /* Just to give it a value */ 1719 1715 state->custom_divisor = 0; ··· 1720 1724 state->icount.overrun = state->icount.brk = 0; 1721 1725 tty_port_init(&state->tport); 1722 1726 state->tport.ops = &amiga_port_ops; 1727 + tty_port_link_device(&state->tport, serial_driver, 0); 1728 + 1729 + error = tty_register_driver(serial_driver); 1730 + if (error) 1731 + goto fail_put_tty_driver; 1723 1732 1724 1733 printk(KERN_INFO "ttyS0 is the amiga builtin serial port\n"); 1725 1734
+1
drivers/tty/bfin_jtag_comm.c
··· 263 263 bfin_jc_driver->subtype = SERIAL_TYPE_NORMAL; 264 264 bfin_jc_driver->init_termios = tty_std_termios; 265 265 tty_set_operations(bfin_jc_driver, &bfin_jc_ops); 266 + tty_port_link_device(&port, bfin_jc_driver, 0); 266 267 267 268 ret = tty_register_driver(bfin_jc_driver); 268 269 if (ret)
+2
drivers/tty/hvc/hvsi.c
··· 1080 1080 struct hvsi_struct *hp = &hvsi_ports[i]; 1081 1081 int ret = 1; 1082 1082 1083 + tty_port_link_device(&hp->port, hvsi_driver, i); 1084 + 1083 1085 ret = request_irq(hp->virq, hvsi_interrupt, 0, "hvsi", hp); 1084 1086 if (ret) 1085 1087 printk(KERN_ERR "HVSI: couldn't reserve irq 0x%x (error %i)\n",
+9 -6
drivers/tty/serial/68328serial.c
··· 1189 1189 serial_driver->flags = TTY_DRIVER_REAL_RAW; 1190 1190 tty_set_operations(serial_driver, &rs_ops); 1191 1191 1192 - if (tty_register_driver(serial_driver)) { 1193 - put_tty_driver(serial_driver); 1194 - printk(KERN_ERR "Couldn't register serial driver\n"); 1195 - return -ENOMEM; 1196 - } 1197 - 1198 1192 local_irq_save(flags); 1199 1193 1200 1194 for(i=0;i<NR_PORTS;i++) { ··· 1218 1224 0, 1219 1225 "M68328_UART", info)) 1220 1226 panic("Unable to attach 68328 serial interrupt\n"); 1227 + 1228 + tty_port_link_device(&info->tport, serial_driver, i); 1221 1229 } 1222 1230 local_irq_restore(flags); 1231 + 1232 + if (tty_register_driver(serial_driver)) { 1233 + put_tty_driver(serial_driver); 1234 + printk(KERN_ERR "Couldn't register serial driver\n"); 1235 + return -ENOMEM; 1236 + } 1237 + 1223 1238 return 0; 1224 1239 } 1225 1240
+6 -3
drivers/tty/serial/crisv10.c
··· 4447 4447 4448 4448 tty_set_operations(driver, &rs_ops); 4449 4449 serial_driver = driver; 4450 - if (tty_register_driver(driver)) 4451 - panic("Couldn't register serial driver\n"); 4452 - /* do some initializing for the separate ports */ 4453 4450 4451 + /* do some initializing for the separate ports */ 4454 4452 for (i = 0, info = rs_table; i < NR_PORTS; i++,info++) { 4455 4453 if (info->enabled) { 4456 4454 if (cris_request_io_interface(info->io_if, ··· 4500 4502 printk(KERN_INFO "%s%d at %p is a builtin UART with DMA\n", 4501 4503 serial_driver->name, info->line, info->ioport); 4502 4504 } 4505 + tty_port_link_device(&info->port, driver, i); 4503 4506 } 4507 + 4508 + if (tty_register_driver(driver)) 4509 + panic("Couldn't register serial driver\n"); 4510 + 4504 4511 #ifdef CONFIG_ETRAX_FAST_TIMER 4505 4512 #ifdef CONFIG_ETRAX_SERIAL_FAST_TIMER 4506 4513 memset(fast_timers, 0, sizeof(fast_timers));