Commit b8d399ae authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Merge kroah.com:/home/linux/linux/BK/bleeding-2.5

into kroah.com:/home/linux/linux/BK/tty-2.5
parents bec7aa00 a3a2b130
...@@ -2682,9 +2682,9 @@ static int __init rs_init(void) ...@@ -2682,9 +2682,9 @@ static int __init rs_init(void)
(state->flags & ASYNC_FOURPORT) ? " FourPort" : "", (state->flags & ASYNC_FOURPORT) ? " FourPort" : "",
state->port, state->irq, state->port, state->irq,
uart_config[state->type].name); uart_config[state->type].name);
tty_register_devfs(&serial_driver, 0, tty_register_device(&serial_driver,
serial_driver.minor_start + state->line); serial_driver.minor_start + state->line);
tty_register_devfs(&callout_driver, 0, tty_register_device(&callout_driver,
callout_driver.minor_start + state->line); callout_driver.minor_start + state->line);
} }
return 0; return 0;
...@@ -2772,9 +2772,9 @@ int register_serial(struct serial_struct *req) ...@@ -2772,9 +2772,9 @@ int register_serial(struct serial_struct *req)
state->iomem_base ? "iomem" : "port", state->iomem_base ? "iomem" : "port",
state->iomem_base ? (unsigned long)state->iomem_base : state->iomem_base ? (unsigned long)state->iomem_base :
state->port, state->irq, uart_config[state->type].name); state->port, state->irq, uart_config[state->type].name);
tty_register_devfs(&serial_driver, 0, tty_register_device(&serial_driver,
serial_driver.minor_start + state->line); serial_driver.minor_start + state->line);
tty_register_devfs(&callout_driver, 0, tty_register_device(&callout_driver,
callout_driver.minor_start + state->line); callout_driver.minor_start + state->line);
return state->line + SERIAL_DEV_OFFSET; return state->line + SERIAL_DEV_OFFSET;
} }
...@@ -2801,9 +2801,9 @@ void unregister_serial(int line) ...@@ -2801,9 +2801,9 @@ void unregister_serial(int line)
/* These will be hidden, because they are devices that will no longer /* These will be hidden, because they are devices that will no longer
* be available to the system. (ie, PCMCIA modems, once ejected) * be available to the system. (ie, PCMCIA modems, once ejected)
*/ */
tty_unregister_devfs(&serial_driver, tty_unregister_device(&serial_driver,
serial_driver.minor_start + state->line); serial_driver.minor_start + state->line);
tty_unregister_devfs(&callout_driver, tty_unregister_device(&callout_driver,
callout_driver.minor_start + state->line); callout_driver.minor_start + state->line);
restore_flags(flags); restore_flags(flags);
} }
......
...@@ -1425,9 +1425,9 @@ int __init dz_init(void) ...@@ -1425,9 +1425,9 @@ int __init dz_init(void)
printk("ttyS%02d at 0x%08x (irq = %d)\n", info->line, printk("ttyS%02d at 0x%08x (irq = %d)\n", info->line,
info->port, SERIAL); info->port, SERIAL);
tty_register_devfs(&serial_driver, 0, tty_register_device(&serial_driver,
serial_driver.minor_start + info->line); serial_driver.minor_start + info->line);
tty_register_devfs(&callout_driver, 0, tty_register_device(&callout_driver,
callout_driver.minor_start + info->line); callout_driver.minor_start + info->line);
} }
......
...@@ -279,7 +279,7 @@ int __init hvc_init(void) ...@@ -279,7 +279,7 @@ int __init hvc_init(void)
for (i = 0; i < hvc_driver.num; i++) { for (i = 0; i < hvc_driver.num; i++) {
hvc_struct[i].lock = SPIN_LOCK_UNLOCKED; hvc_struct[i].lock = SPIN_LOCK_UNLOCKED;
hvc_struct[i].index = i; hvc_struct[i].index = i;
tty_register_devfs(&hvc_driver, 0, hvc_driver.minor_start + i); tty_register_device(&hvc_driver, hvc_driver.minor_start + i);
} }
if (tty_register_driver(&hvc_driver)) if (tty_register_driver(&hvc_driver))
......
...@@ -899,11 +899,11 @@ ip2_loadmain(int *iop, int *irqp, unsigned char *firmware, int firmsize) ...@@ -899,11 +899,11 @@ ip2_loadmain(int *iop, int *irqp, unsigned char *firmware, int firmsize)
{ {
if ( pB->i2eChannelMap[box] & (1 << j) ) if ( pB->i2eChannelMap[box] & (1 << j) )
{ {
tty_register_devfs(&ip2_tty_driver, tty_register_device(&ip2_tty_driver,
0, j + ABS_BIGGEST_BOX * j + ABS_BIGGEST_BOX *
(box+i*ABS_MAX_BOXES)); (box+i*ABS_MAX_BOXES));
tty_register_devfs(&ip2_callout_driver, tty_register_device(&ip2_callout_driver,
0, j + ABS_BIGGEST_BOX * j + ABS_BIGGEST_BOX *
(box+i*ABS_MAX_BOXES)); (box+i*ABS_MAX_BOXES));
} }
} }
......
...@@ -48,10 +48,6 @@ ...@@ -48,10 +48,6 @@
#define IS_CONSOLE_DEV(dev) (kdev_val(dev) == __mkdev(TTY_MAJOR,0)) #define IS_CONSOLE_DEV(dev) (kdev_val(dev) == __mkdev(TTY_MAJOR,0))
#define IS_SYSCONS_DEV(dev) (kdev_val(dev) == __mkdev(TTYAUX_MAJOR,1)) #define IS_SYSCONS_DEV(dev) (kdev_val(dev) == __mkdev(TTYAUX_MAJOR,1))
#ifndef MIN
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif
/* number of characters left in xmit buffer before select has we have room */ /* number of characters left in xmit buffer before select has we have room */
#define WAKEUP_CHARS 256 #define WAKEUP_CHARS 256
...@@ -725,16 +721,18 @@ static void n_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp, ...@@ -725,16 +721,18 @@ static void n_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp,
if (tty->real_raw) { if (tty->real_raw) {
spin_lock_irqsave(&tty->read_lock, cpuflags); spin_lock_irqsave(&tty->read_lock, cpuflags);
i = MIN(count, MIN(N_TTY_BUF_SIZE - tty->read_cnt, i = min(N_TTY_BUF_SIZE - tty->read_cnt,
N_TTY_BUF_SIZE - tty->read_head)); N_TTY_BUF_SIZE - tty->read_head);
i = min(count, i);
memcpy(tty->read_buf + tty->read_head, cp, i); memcpy(tty->read_buf + tty->read_head, cp, i);
tty->read_head = (tty->read_head + i) & (N_TTY_BUF_SIZE-1); tty->read_head = (tty->read_head + i) & (N_TTY_BUF_SIZE-1);
tty->read_cnt += i; tty->read_cnt += i;
cp += i; cp += i;
count -= i; count -= i;
i = MIN(count, MIN(N_TTY_BUF_SIZE - tty->read_cnt, i = min(N_TTY_BUF_SIZE - tty->read_cnt,
N_TTY_BUF_SIZE - tty->read_head)); N_TTY_BUF_SIZE - tty->read_head);
i = min(count, i);
memcpy(tty->read_buf + tty->read_head, cp, i); memcpy(tty->read_buf + tty->read_head, cp, i);
tty->read_head = (tty->read_head + i) & (N_TTY_BUF_SIZE-1); tty->read_head = (tty->read_head + i) & (N_TTY_BUF_SIZE-1);
tty->read_cnt += i; tty->read_cnt += i;
...@@ -915,7 +913,8 @@ static inline int copy_from_read_buf(struct tty_struct *tty, ...@@ -915,7 +913,8 @@ static inline int copy_from_read_buf(struct tty_struct *tty,
retval = 0; retval = 0;
spin_lock_irqsave(&tty->read_lock, flags); spin_lock_irqsave(&tty->read_lock, flags);
n = MIN(*nr, MIN(tty->read_cnt, N_TTY_BUF_SIZE - tty->read_tail)); n = min(tty->read_cnt, N_TTY_BUF_SIZE - tty->read_tail);
n = min((ssize_t)*nr, n);
spin_unlock_irqrestore(&tty->read_lock, flags); spin_unlock_irqrestore(&tty->read_lock, flags);
if (n) { if (n) {
mb(); mb();
......
...@@ -64,8 +64,6 @@ static struct termios *pts_termios_locked[UNIX98_NR_MAJORS][NR_PTYS]; ...@@ -64,8 +64,6 @@ static struct termios *pts_termios_locked[UNIX98_NR_MAJORS][NR_PTYS];
static struct pty_struct ptm_state[UNIX98_NR_MAJORS][NR_PTYS]; static struct pty_struct ptm_state[UNIX98_NR_MAJORS][NR_PTYS];
#endif #endif
#define MIN(a,b) ((a) < (b) ? (a) : (b))
static void pty_close(struct tty_struct * tty, struct file * filp) static void pty_close(struct tty_struct * tty, struct file * filp)
{ {
if (!tty) if (!tty)
...@@ -97,7 +95,7 @@ static void pty_close(struct tty_struct * tty, struct file * filp) ...@@ -97,7 +95,7 @@ static void pty_close(struct tty_struct * tty, struct file * filp)
} }
} }
#endif #endif
tty_unregister_devfs (&tty->link->driver, minor(tty->device)); tty_unregister_device (&tty->link->driver, minor(tty->device));
tty_vhangup(tty->link); tty_vhangup(tty->link);
} }
} }
...@@ -156,7 +154,7 @@ static int pty_write(struct tty_struct * tty, int from_user, ...@@ -156,7 +154,7 @@ static int pty_write(struct tty_struct * tty, int from_user,
n = count; n = count;
if (!n) break; if (!n) break;
n = MIN(n, PTY_BUF_SIZE); n = min(n, PTY_BUF_SIZE);
n -= copy_from_user(temp_buffer, buf, n); n -= copy_from_user(temp_buffer, buf, n);
if (!n) { if (!n) {
if (!c) if (!c)
...@@ -307,6 +305,7 @@ static void pty_flush_buffer(struct tty_struct *tty) ...@@ -307,6 +305,7 @@ static void pty_flush_buffer(struct tty_struct *tty)
} }
} }
extern void tty_register_devfs (struct tty_driver *driver, unsigned int flags, unsigned minor);
static int pty_open(struct tty_struct *tty, struct file * filp) static int pty_open(struct tty_struct *tty, struct file * filp)
{ {
int retval; int retval;
......
...@@ -90,6 +90,7 @@ ...@@ -90,6 +90,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/smp_lock.h> #include <linux/smp_lock.h>
#include <linux/device.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/system.h> #include <asm/system.h>
...@@ -158,13 +159,6 @@ extern void tx3912_console_init(void); ...@@ -158,13 +159,6 @@ extern void tx3912_console_init(void);
extern void tx3912_rs_init(void); extern void tx3912_rs_init(void);
extern void hvc_console_init(void); extern void hvc_console_init(void);
#ifndef MIN
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif
#ifndef MAX
#define MAX(a,b) ((a) < (b) ? (b) : (a))
#endif
static struct tty_struct *alloc_tty_struct(void) static struct tty_struct *alloc_tty_struct(void)
{ {
struct tty_struct *tty; struct tty_struct *tty;
...@@ -713,7 +707,7 @@ static inline ssize_t do_tty_write( ...@@ -713,7 +707,7 @@ static inline ssize_t do_tty_write(
unlock_kernel(); unlock_kernel();
} else { } else {
for (;;) { for (;;) {
unsigned long size = MAX(PAGE_SIZE*2,16384); unsigned long size = max((unsigned long)PAGE_SIZE*2, 16384UL);
if (size > count) if (size > count)
size = count; size = count;
lock_kernel(); lock_kernel();
...@@ -1351,7 +1345,7 @@ static int tty_open(struct inode * inode, struct file * filp) ...@@ -1351,7 +1345,7 @@ static int tty_open(struct inode * inode, struct file * filp)
set_bit(TTY_PTY_LOCK, &tty->flags); /* LOCK THE SLAVE */ set_bit(TTY_PTY_LOCK, &tty->flags); /* LOCK THE SLAVE */
minor -= driver->minor_start; minor -= driver->minor_start;
devpts_pty_new(driver->other->name_base + minor, MKDEV(driver->other->major, minor + driver->other->minor_start)); devpts_pty_new(driver->other->name_base + minor, MKDEV(driver->other->major, minor + driver->other->minor_start));
tty_register_devfs(&pts_driver[major], DEVFS_FL_DEFAULT, tty_register_device(&pts_driver[major],
pts_driver[major].minor_start + minor); pts_driver[major].minor_start + minor);
noctty = 1; noctty = 1;
goto init_dev_done; goto init_dev_done;
...@@ -2038,9 +2032,6 @@ void tty_default_put_char(struct tty_struct *tty, unsigned char ch) ...@@ -2038,9 +2032,6 @@ void tty_default_put_char(struct tty_struct *tty, unsigned char ch)
tty->driver.write(tty, 0, &ch, 1); tty->driver.write(tty, 0, &ch, 1);
} }
/*
* Register a tty device described by <driver>, with minor number <minor>.
*/
void tty_register_devfs (struct tty_driver *driver, unsigned int flags, unsigned minor) void tty_register_devfs (struct tty_driver *driver, unsigned int flags, unsigned minor)
{ {
#ifdef CONFIG_DEVFS_FS #ifdef CONFIG_DEVFS_FS
...@@ -2077,8 +2068,21 @@ void tty_unregister_devfs (struct tty_driver *driver, unsigned minor) ...@@ -2077,8 +2068,21 @@ void tty_unregister_devfs (struct tty_driver *driver, unsigned minor)
devfs_remove(driver->name, minor-driver->minor_start+driver->name_base); devfs_remove(driver->name, minor-driver->minor_start+driver->name_base);
} }
EXPORT_SYMBOL(tty_register_devfs); /*
EXPORT_SYMBOL(tty_unregister_devfs); * Register a tty device described by <driver>, with minor number <minor>.
*/
void tty_register_device (struct tty_driver *driver, unsigned minor)
{
tty_register_devfs(driver, 0, minor);
}
void tty_unregister_device (struct tty_driver *driver, unsigned minor)
{
tty_unregister_devfs(driver, minor);
}
EXPORT_SYMBOL(tty_register_device);
EXPORT_SYMBOL(tty_unregister_device);
/* /*
* Called by a tty driver to register itself. * Called by a tty driver to register itself.
...@@ -2104,7 +2108,7 @@ int tty_register_driver(struct tty_driver *driver) ...@@ -2104,7 +2108,7 @@ int tty_register_driver(struct tty_driver *driver)
if ( !(driver->flags & TTY_DRIVER_NO_DEVFS) ) { if ( !(driver->flags & TTY_DRIVER_NO_DEVFS) ) {
for(i = 0; i < driver->num; i++) for(i = 0; i < driver->num; i++)
tty_register_devfs(driver, 0, driver->minor_start + i); tty_register_device(driver, driver->minor_start + i);
} }
proc_tty_register_driver(driver); proc_tty_register_driver(driver);
return error; return error;
...@@ -2159,7 +2163,7 @@ int tty_unregister_driver(struct tty_driver *driver) ...@@ -2159,7 +2163,7 @@ int tty_unregister_driver(struct tty_driver *driver)
driver->termios_locked[i] = NULL; driver->termios_locked[i] = NULL;
kfree(tp); kfree(tp);
} }
tty_unregister_devfs(driver, driver->minor_start + i); tty_unregister_device(driver, driver->minor_start + i);
} }
proc_tty_unregister_driver(driver); proc_tty_unregister_driver(driver);
return 0; return 0;
...@@ -2261,12 +2265,19 @@ static struct tty_driver dev_console_driver; ...@@ -2261,12 +2265,19 @@ static struct tty_driver dev_console_driver;
extern int vty_init(void); extern int vty_init(void);
#endif #endif
struct device_class tty_devclass = {
.name = "tty",
};
EXPORT_SYMBOL(tty_devclass);
/* /*
* Ok, now we can initialize the rest of the tty devices and can count * Ok, now we can initialize the rest of the tty devices and can count
* on memory allocations, interrupts etc.. * on memory allocations, interrupts etc..
*/ */
void __init tty_init(void) void __init tty_init(void)
{ {
devclass_register(&tty_devclass);
/* /*
* dev_tty_driver and dev_console_driver are actually magic * dev_tty_driver and dev_console_driver are actually magic
* devices which get redirected at open time. Nevertheless, * devices which get redirected at open time. Nevertheless,
......
...@@ -2646,7 +2646,7 @@ static void __init con_init_devfs (void) ...@@ -2646,7 +2646,7 @@ static void __init con_init_devfs (void)
int i; int i;
for (i = 0; i < console_driver.num; i++) for (i = 0; i < console_driver.num; i++)
tty_register_devfs (&console_driver, DEVFS_FL_DEFAULT, tty_register_device (&console_driver,
console_driver.minor_start + i); console_driver.minor_start + i);
} }
......
...@@ -2096,7 +2096,7 @@ __uart_register_port(struct uart_driver *drv, struct uart_state *state, ...@@ -2096,7 +2096,7 @@ __uart_register_port(struct uart_driver *drv, struct uart_state *state,
* Register the port whether it's detected or not. This allows * Register the port whether it's detected or not. This allows
* setserial to be used to alter this ports parameters. * setserial to be used to alter this ports parameters.
*/ */
tty_register_devfs(drv->tty_driver, 0, drv->minor + port->line); tty_register_device(drv->tty_driver, drv->minor + port->line);
if (port->type != PORT_UNKNOWN) { if (port->type != PORT_UNKNOWN) {
unsigned long flags; unsigned long flags;
...@@ -2153,7 +2153,7 @@ __uart_unregister_port(struct uart_driver *drv, struct uart_state *state) ...@@ -2153,7 +2153,7 @@ __uart_unregister_port(struct uart_driver *drv, struct uart_state *state)
/* /*
* Remove the devices from devfs * Remove the devices from devfs
*/ */
tty_unregister_devfs(drv->tty_driver, drv->minor + port->line); tty_unregister_device(drv->tty_driver, drv->minor + port->line);
/* /*
* Free the port IO and memory resources, if any. * Free the port IO and memory resources, if any.
......
...@@ -1971,9 +1971,9 @@ int __init zs_init(void) ...@@ -1971,9 +1971,9 @@ int __init zs_init(void)
printk("ttyS%02d at 0x%08x (irq = %d)", info->line, printk("ttyS%02d at 0x%08x (irq = %d)", info->line,
info->port, info->irq); info->port, info->irq);
printk(" is a Z85C30 SCC\n"); printk(" is a Z85C30 SCC\n");
tty_register_devfs(&serial_driver, 0, tty_register_device(&serial_driver,
serial_driver.minor_start + info->line); serial_driver.minor_start + info->line);
tty_register_devfs(&callout_driver, 0, tty_register_device(&callout_driver,
callout_driver.minor_start + info->line); callout_driver.minor_start + info->line);
} }
......
...@@ -1201,7 +1201,7 @@ static int usb_bluetooth_probe (struct usb_interface *intf, ...@@ -1201,7 +1201,7 @@ static int usb_bluetooth_probe (struct usb_interface *intf,
bluetooth, endpoint->bInterval); bluetooth, endpoint->bInterval);
/* initialize the devfs nodes for this device and let the user know what bluetooths we are bound to */ /* initialize the devfs nodes for this device and let the user know what bluetooths we are bound to */
tty_register_devfs (&bluetooth_tty_driver, 0, minor); tty_register_device (&bluetooth_tty_driver, minor);
info("Bluetooth converter now attached to ttyUB%d (or usb/ttub/%d for devfs)", minor, minor); info("Bluetooth converter now attached to ttyUB%d (or usb/ttub/%d for devfs)", minor, minor);
bluetooth_table[minor] = bluetooth; bluetooth_table[minor] = bluetooth;
...@@ -1267,7 +1267,7 @@ static void usb_bluetooth_disconnect(struct usb_interface *intf) ...@@ -1267,7 +1267,7 @@ static void usb_bluetooth_disconnect(struct usb_interface *intf)
if (bluetooth->interrupt_in_buffer) if (bluetooth->interrupt_in_buffer)
kfree (bluetooth->interrupt_in_buffer); kfree (bluetooth->interrupt_in_buffer);
tty_unregister_devfs (&bluetooth_tty_driver, bluetooth->minor); tty_unregister_device (&bluetooth_tty_driver, bluetooth->minor);
for (i = 0; i < NUM_BULK_URBS; ++i) { for (i = 0; i < NUM_BULK_URBS; ++i) {
if (bluetooth->write_urb_pool[i]) { if (bluetooth->write_urb_pool[i]) {
......
...@@ -361,7 +361,7 @@ static void acm_tty_close(struct tty_struct *tty, struct file *filp) ...@@ -361,7 +361,7 @@ static void acm_tty_close(struct tty_struct *tty, struct file *filp)
usb_unlink_urb(acm->writeurb); usb_unlink_urb(acm->writeurb);
usb_unlink_urb(acm->readurb); usb_unlink_urb(acm->readurb);
} else { } else {
tty_unregister_devfs(&acm_tty_driver, acm->minor); tty_unregister_device(&acm_tty_driver, acm->minor);
acm_table[acm->minor] = NULL; acm_table[acm->minor] = NULL;
usb_free_urb(acm->ctrlurb); usb_free_urb(acm->ctrlurb);
usb_free_urb(acm->readurb); usb_free_urb(acm->readurb);
...@@ -649,7 +649,7 @@ static int acm_probe (struct usb_interface *intf, ...@@ -649,7 +649,7 @@ static int acm_probe (struct usb_interface *intf,
usb_driver_claim_interface(&acm_driver, acm->iface + 0, acm); usb_driver_claim_interface(&acm_driver, acm->iface + 0, acm);
usb_driver_claim_interface(&acm_driver, acm->iface + 1, acm); usb_driver_claim_interface(&acm_driver, acm->iface + 1, acm);
tty_register_devfs(&acm_tty_driver, 0, minor); tty_register_device(&acm_tty_driver, minor);
acm_table[minor] = acm; acm_table[minor] = acm;
usb_set_intfdata (intf, acm); usb_set_intfdata (intf, acm);
...@@ -681,7 +681,7 @@ static void acm_disconnect(struct usb_interface *intf) ...@@ -681,7 +681,7 @@ static void acm_disconnect(struct usb_interface *intf)
usb_driver_release_interface(&acm_driver, acm->iface + 1); usb_driver_release_interface(&acm_driver, acm->iface + 1);
if (!acm->used) { if (!acm->used) {
tty_unregister_devfs(&acm_tty_driver, acm->minor); tty_unregister_device(&acm_tty_driver, acm->minor);
acm_table[acm->minor] = NULL; acm_table[acm->minor] = NULL;
usb_free_urb(acm->ctrlurb); usb_free_urb(acm->ctrlurb);
usb_free_urb(acm->readurb); usb_free_urb(acm->readurb);
......
...@@ -78,7 +78,7 @@ static int usb_serial_device_probe (struct device *dev) ...@@ -78,7 +78,7 @@ static int usb_serial_device_probe (struct device *dev)
minor = port->number; minor = port->number;
tty_register_devfs (&usb_serial_tty_driver, 0, minor); tty_register_device (&usb_serial_tty_driver, minor);
dev_info(*dev, "%s converter now attached to ttyUSB%d (or usb/tts/%d for devfs)\n", dev_info(*dev, "%s converter now attached to ttyUSB%d (or usb/tts/%d for devfs)\n",
driver->name, minor, minor); driver->name, minor, minor);
...@@ -110,7 +110,7 @@ static int usb_serial_device_remove (struct device *dev) ...@@ -110,7 +110,7 @@ static int usb_serial_device_remove (struct device *dev)
} }
exit: exit:
minor = port->number; minor = port->number;
tty_unregister_devfs (&usb_serial_tty_driver, minor); tty_unregister_device (&usb_serial_tty_driver, minor);
dev_info(*dev, "%s converter now disconnected from ttyUSB%d\n", dev_info(*dev, "%s converter now disconnected from ttyUSB%d\n",
driver->name, minor); driver->name, minor);
...@@ -128,6 +128,7 @@ int usb_serial_bus_register(struct usb_serial_device_type *device) ...@@ -128,6 +128,7 @@ int usb_serial_bus_register(struct usb_serial_device_type *device)
device->driver.bus = &usb_serial_bus_type; device->driver.bus = &usb_serial_bus_type;
device->driver.probe = usb_serial_device_probe; device->driver.probe = usb_serial_device_probe;
device->driver.remove = usb_serial_device_remove; device->driver.remove = usb_serial_device_remove;
device->driver.devclass = &tty_devclass;
retval = driver_register(&device->driver); retval = driver_register(&device->driver);
......
...@@ -379,9 +379,8 @@ extern void start_tty(struct tty_struct * tty); ...@@ -379,9 +379,8 @@ extern void start_tty(struct tty_struct * tty);
extern int tty_register_ldisc(int disc, struct tty_ldisc *new_ldisc); extern int tty_register_ldisc(int disc, struct tty_ldisc *new_ldisc);
extern int tty_register_driver(struct tty_driver *driver); extern int tty_register_driver(struct tty_driver *driver);
extern int tty_unregister_driver(struct tty_driver *driver); extern int tty_unregister_driver(struct tty_driver *driver);
extern void tty_register_devfs (struct tty_driver *driver, unsigned int flags, extern void tty_register_device(struct tty_driver *driver, unsigned minor);
unsigned minor); extern void tty_unregister_device(struct tty_driver *driver, unsigned minor);
extern void tty_unregister_devfs (struct tty_driver *driver, unsigned minor);
extern int tty_read_raw_data(struct tty_struct *tty, unsigned char *bufp, extern int tty_read_raw_data(struct tty_struct *tty, unsigned char *bufp,
int buflen); int buflen);
extern void tty_write_message(struct tty_struct *tty, char *msg); extern void tty_write_message(struct tty_struct *tty, char *msg);
......
...@@ -227,4 +227,6 @@ extern struct list_head tty_drivers; ...@@ -227,4 +227,6 @@ extern struct list_head tty_drivers;
#define SERIAL_TYPE_NORMAL 1 #define SERIAL_TYPE_NORMAL 1
#define SERIAL_TYPE_CALLOUT 2 #define SERIAL_TYPE_CALLOUT 2
extern struct device_class tty_devclass;
#endif /* #ifdef _LINUX_TTY_DRIVER_H */ #endif /* #ifdef _LINUX_TTY_DRIVER_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment