summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Fulghum <paulkf@microgate.com>2003-05-29 21:56:54 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2003-05-29 21:56:54 -0700
commitf62b69ad6a0844979f8cdab3e090c07fc06c2dcd (patch)
treee0359c65e4d436102da8108dc3828e17260a5c3a
parent5c88d5d3a7ba73e8d9ae1eb6e7dc87fe678cdf2a (diff)
[PATCH] tty_register_driver
This patch reinstates the ability of tty devices to use dynamically allocated major numbers yet specify the minor numbers statically. The synclink drivers do this.
-rw-r--r--drivers/char/tty_io.c2
-rw-r--r--fs/char_dev.c4
-rw-r--r--include/linux/fs.h2
3 files changed, 4 insertions, 4 deletions
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index c95ecbc8bd7e..5b1cbccd11f2 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -2241,7 +2241,7 @@ int tty_register_driver(struct tty_driver *driver)
return 0;
if (!driver->major) {
- error = alloc_chrdev_region(&dev, driver->num,
+ error = alloc_chrdev_region(&dev, driver->minor_start, driver->num,
(char*)driver->name);
if (!error) {
driver->major = MAJOR(dev);
diff --git a/fs/char_dev.c b/fs/char_dev.c
index a2881c94276e..394008aeccde 100644
--- a/fs/char_dev.c
+++ b/fs/char_dev.c
@@ -179,10 +179,10 @@ fail:
return PTR_ERR(cd);
}
-int alloc_chrdev_region(dev_t *dev, unsigned count, char *name)
+int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, char *name)
{
struct char_device_struct *cd;
- cd = __register_chrdev_region(0, 0, count, name);
+ cd = __register_chrdev_region(0, baseminor, count, name);
if (IS_ERR(cd))
return PTR_ERR(cd);
*dev = MKDEV(cd->major, cd->baseminor);
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 78b45c4afd9c..9ae05e3ff093 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1059,7 +1059,7 @@ extern void bd_release(struct block_device *);
extern void blk_run_queues(void);
/* fs/char_dev.c */
-extern int alloc_chrdev_region(dev_t *, unsigned, char *);
+extern int alloc_chrdev_region(dev_t *, unsigned, unsigned, char *);
extern int register_chrdev_region(dev_t, unsigned, char *);
extern int register_chrdev(unsigned int, const char *,
struct file_operations *);