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)
(state->flags & ASYNC_FOURPORT) ? " FourPort" : "",
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);
tty_register_devfs(&callout_driver, 0,
tty_register_device(&callout_driver,
callout_driver.minor_start + state->line);
}
return 0;
......@@ -2772,9 +2772,9 @@ int register_serial(struct serial_struct *req)
state->iomem_base ? "iomem" : "port",
state->iomem_base ? (unsigned long)state->iomem_base :
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);
tty_register_devfs(&callout_driver, 0,
tty_register_device(&callout_driver,
callout_driver.minor_start + state->line);
return state->line + SERIAL_DEV_OFFSET;
}
......@@ -2801,9 +2801,9 @@ void unregister_serial(int line)
/* These will be hidden, because they are devices that will no longer
* 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);
tty_unregister_devfs(&callout_driver,
tty_unregister_device(&callout_driver,
callout_driver.minor_start + state->line);
restore_flags(flags);
}
......
......@@ -1425,9 +1425,9 @@ int __init dz_init(void)
printk("ttyS%02d at 0x%08x (irq = %d)\n", info->line,
info->port, SERIAL);
tty_register_devfs(&serial_driver, 0,
tty_register_device(&serial_driver,
serial_driver.minor_start + info->line);
tty_register_devfs(&callout_driver, 0,
tty_register_device(&callout_driver,
callout_driver.minor_start + info->line);
}
......
......@@ -279,7 +279,7 @@ int __init hvc_init(void)
for (i = 0; i < hvc_driver.num; i++) {
hvc_struct[i].lock = SPIN_LOCK_UNLOCKED;
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))
......
......@@ -899,11 +899,11 @@ ip2_loadmain(int *iop, int *irqp, unsigned char *firmware, int firmsize)
{
if ( pB->i2eChannelMap[box] & (1 << j) )
{
tty_register_devfs(&ip2_tty_driver,
0, j + ABS_BIGGEST_BOX *
tty_register_device(&ip2_tty_driver,
j + ABS_BIGGEST_BOX *
(box+i*ABS_MAX_BOXES));
tty_register_devfs(&ip2_callout_driver,
0, j + ABS_BIGGEST_BOX *
tty_register_device(&ip2_callout_driver,
j + ABS_BIGGEST_BOX *
(box+i*ABS_MAX_BOXES));
}
}
......
......@@ -48,10 +48,6 @@
#define IS_CONSOLE_DEV(dev) (kdev_val(dev) == __mkdev(TTY_MAJOR,0))
#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 */
#define WAKEUP_CHARS 256
......@@ -725,16 +721,18 @@ static void n_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp,
if (tty->real_raw) {
spin_lock_irqsave(&tty->read_lock, cpuflags);
i = MIN(count, MIN(N_TTY_BUF_SIZE - tty->read_cnt,
N_TTY_BUF_SIZE - tty->read_head));
i = min(N_TTY_BUF_SIZE - tty->read_cnt,
N_TTY_BUF_SIZE - tty->read_head);
i = min(count, i);
memcpy(tty->read_buf + tty->read_head, cp, i);
tty->read_head = (tty->read_head + i) & (N_TTY_BUF_SIZE-1);
tty->read_cnt += i;
cp += i;
count -= i;
i = MIN(count, MIN(N_TTY_BUF_SIZE - tty->read_cnt,
N_TTY_BUF_SIZE - tty->read_head));
i = min(N_TTY_BUF_SIZE - tty->read_cnt,
N_TTY_BUF_SIZE - tty->read_head);
i = min(count, i);
memcpy(tty->read_buf + tty->read_head, cp, i);
tty->read_head = (tty->read_head + i) & (N_TTY_BUF_SIZE-1);
tty->read_cnt += i;
......@@ -915,7 +913,8 @@ static inline int copy_from_read_buf(struct tty_struct *tty,
retval = 0;
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);
if (n) {
mb();
......
......@@ -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];
#endif
#define MIN(a,b) ((a) < (b) ? (a) : (b))
static void pty_close(struct tty_struct * tty, struct file * filp)
{
if (!tty)
......@@ -97,7 +95,7 @@ static void pty_close(struct tty_struct * tty, struct file * filp)
}
}
#endif
tty_unregister_devfs (&tty->link->driver, minor(tty->device));
tty_unregister_device (&tty->link->driver, minor(tty->device));
tty_vhangup(tty->link);
}
}
......@@ -156,7 +154,7 @@ static int pty_write(struct tty_struct * tty, int from_user,
n = count;
if (!n) break;
n = MIN(n, PTY_BUF_SIZE);
n = min(n, PTY_BUF_SIZE);
n -= copy_from_user(temp_buffer, buf, n);
if (!n) {
if (!c)
......@@ -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)
{
int retval;
......
......@@ -90,6 +90,7 @@
#include <linux/init.h>
#include <linux/module.h>
#include <linux/smp_lock.h>
#include <linux/device.h>
#include <asm/uaccess.h>
#include <asm/system.h>
......@@ -158,13 +159,6 @@ extern void tx3912_console_init(void);
extern void tx3912_rs_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)
{
struct tty_struct *tty;
......@@ -713,7 +707,7 @@ static inline ssize_t do_tty_write(
unlock_kernel();
} else {
for (;;) {
unsigned long size = MAX(PAGE_SIZE*2,16384);
unsigned long size = max((unsigned long)PAGE_SIZE*2, 16384UL);
if (size > count)
size = count;
lock_kernel();
......@@ -1351,7 +1345,7 @@ static int tty_open(struct inode * inode, struct file * filp)
set_bit(TTY_PTY_LOCK, &tty->flags); /* LOCK THE SLAVE */
minor -= driver->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);
noctty = 1;
goto init_dev_done;
......@@ -2038,9 +2032,6 @@ void tty_default_put_char(struct tty_struct *tty, unsigned char ch)
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)
{
#ifdef CONFIG_DEVFS_FS
......@@ -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);
}
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.
......@@ -2104,7 +2108,7 @@ int tty_register_driver(struct tty_driver *driver)
if ( !(driver->flags & TTY_DRIVER_NO_DEVFS) ) {
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);
return error;
......@@ -2159,7 +2163,7 @@ int tty_unregister_driver(struct tty_driver *driver)
driver->termios_locked[i] = NULL;
kfree(tp);
}
tty_unregister_devfs(driver, driver->minor_start + i);
tty_unregister_device(driver, driver->minor_start + i);
}
proc_tty_unregister_driver(driver);
return 0;
......@@ -2261,12 +2265,19 @@ static struct tty_driver dev_console_driver;
extern int vty_init(void);
#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
* on memory allocations, interrupts etc..
*/
void __init tty_init(void)
{
devclass_register(&tty_devclass);
/*
* dev_tty_driver and dev_console_driver are actually magic
* devices which get redirected at open time. Nevertheless,
......
......@@ -2646,7 +2646,7 @@ static void __init con_init_devfs (void)
int 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);
}
......
......@@ -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
* 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) {
unsigned long flags;
......@@ -2153,7 +2153,7 @@ __uart_unregister_port(struct uart_driver *drv, struct uart_state *state)
/*
* 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.
......
......@@ -1971,9 +1971,9 @@ int __init zs_init(void)
printk("ttyS%02d at 0x%08x (irq = %d)", info->line,
info->port, info->irq);
printk(" is a Z85C30 SCC\n");
tty_register_devfs(&serial_driver, 0,
tty_register_device(&serial_driver,
serial_driver.minor_start + info->line);
tty_register_devfs(&callout_driver, 0,
tty_register_device(&callout_driver,
callout_driver.minor_start + info->line);
}
......
......@@ -1201,7 +1201,7 @@ static int usb_bluetooth_probe (struct usb_interface *intf,
bluetooth, endpoint->bInterval);
/* 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);
bluetooth_table[minor] = bluetooth;
......@@ -1267,7 +1267,7 @@ static void usb_bluetooth_disconnect(struct usb_interface *intf)
if (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) {
if (bluetooth->write_urb_pool[i]) {
......
......@@ -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->readurb);
} else {
tty_unregister_devfs(&acm_tty_driver, acm->minor);
tty_unregister_device(&acm_tty_driver, acm->minor);
acm_table[acm->minor] = NULL;
usb_free_urb(acm->ctrlurb);
usb_free_urb(acm->readurb);
......@@ -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 + 1, acm);
tty_register_devfs(&acm_tty_driver, 0, minor);
tty_register_device(&acm_tty_driver, minor);
acm_table[minor] = acm;
usb_set_intfdata (intf, acm);
......@@ -681,7 +681,7 @@ static void acm_disconnect(struct usb_interface *intf)
usb_driver_release_interface(&acm_driver, acm->iface + 1);
if (!acm->used) {
tty_unregister_devfs(&acm_tty_driver, acm->minor);
tty_unregister_device(&acm_tty_driver, acm->minor);
acm_table[acm->minor] = NULL;
usb_free_urb(acm->ctrlurb);
usb_free_urb(acm->readurb);
......
......@@ -78,7 +78,7 @@ static int usb_serial_device_probe (struct device *dev)
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",
driver->name, minor, minor);
......@@ -110,7 +110,7 @@ static int usb_serial_device_remove (struct device *dev)
}
exit:
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",
driver->name, minor);
......@@ -128,6 +128,7 @@ int usb_serial_bus_register(struct usb_serial_device_type *device)
device->driver.bus = &usb_serial_bus_type;
device->driver.probe = usb_serial_device_probe;
device->driver.remove = usb_serial_device_remove;
device->driver.devclass = &tty_devclass;
retval = driver_register(&device->driver);
......
......@@ -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_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,
unsigned minor);
extern void tty_unregister_devfs (struct tty_driver *driver, unsigned minor);
extern void tty_register_device(struct tty_driver *driver, unsigned minor);
extern void tty_unregister_device(struct tty_driver *driver, unsigned minor);
extern int tty_read_raw_data(struct tty_struct *tty, unsigned char *bufp,
int buflen);
extern void tty_write_message(struct tty_struct *tty, char *msg);
......
......@@ -227,4 +227,6 @@ extern struct list_head tty_drivers;
#define SERIAL_TYPE_NORMAL 1
#define SERIAL_TYPE_CALLOUT 2
extern struct device_class tty_devclass;
#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