diff options
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/Kconfig | 4 | ||||
-rw-r--r-- | drivers/char/drm/drmP.h | 1 | ||||
-rw-r--r-- | drivers/char/generic_serial.c | 1 | ||||
-rw-r--r-- | drivers/char/hw_random/core.c | 14 | ||||
-rw-r--r-- | drivers/char/keyboard.c | 3 | ||||
-rw-r--r-- | drivers/char/misc.c | 13 | ||||
-rw-r--r-- | drivers/char/rio/rioboot.c | 1 | ||||
-rw-r--r-- | drivers/char/rio/riocmd.c | 1 | ||||
-rw-r--r-- | drivers/char/rio/rioctrl.c | 1 | ||||
-rw-r--r-- | drivers/char/rio/rioinit.c | 1 | ||||
-rw-r--r-- | drivers/char/rio/riointr.c | 1 | ||||
-rw-r--r-- | drivers/char/rio/rioparam.c | 1 | ||||
-rw-r--r-- | drivers/char/rio/rioroute.c | 1 | ||||
-rw-r--r-- | drivers/char/rio/riotable.c | 1 | ||||
-rw-r--r-- | drivers/char/rio/riotty.c | 1 | ||||
-rw-r--r-- | drivers/char/snsc.h | 2 | ||||
-rw-r--r-- | drivers/char/tty_io.c | 47 |
17 files changed, 65 insertions, 29 deletions
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig index 47c6be84fc8..a87b89db08e 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig @@ -706,7 +706,7 @@ config NVRAM config RTC tristate "Enhanced Real Time Clock Support" - depends on !PPC && !PARISC && !IA64 && !M68K && !SPARC && !FRV && !ARM && !SUPERH && !S390 + depends on !PPC && !PARISC && !IA64 && !M68K && !SPARC && !FRV && !ARM && !SUPERH && !S390 && !AVR32 ---help--- If you say Y here and create a character special file /dev/rtc with major number 10 and minor number 135 using mknod ("man mknod"), you @@ -776,7 +776,7 @@ config SGI_IP27_RTC config GEN_RTC tristate "Generic /dev/rtc emulation" - depends on RTC!=y && !IA64 && !ARM && !M32R && !MIPS && !SPARC && !FRV && !S390 && !SUPERH + depends on RTC!=y && !IA64 && !ARM && !M32R && !MIPS && !SPARC && !FRV && !S390 && !SUPERH && !AVR32 ---help--- If you say Y here and create a character special file /dev/rtc with major number 10 and minor number 135 using mknod ("man mknod"), you diff --git a/drivers/char/drm/drmP.h b/drivers/char/drm/drmP.h index 8ea9dd1717a..6540948d517 100644 --- a/drivers/char/drm/drmP.h +++ b/drivers/char/drm/drmP.h @@ -640,7 +640,6 @@ struct drm_head { struct drm_device *dev; struct proc_dir_entry *dev_root; /**< proc directory entry */ dev_t device; /**< Device number for mknod */ - struct class_device *dev_class; }; /** diff --git a/drivers/char/generic_serial.c b/drivers/char/generic_serial.c index 8facf3e25c4..7ed7da1d99c 100644 --- a/drivers/char/generic_serial.c +++ b/drivers/char/generic_serial.c @@ -28,7 +28,6 @@ #include <linux/interrupt.h> #include <linux/tty_flip.h> #include <linux/delay.h> -#include <asm/semaphore.h> #include <asm/uaccess.h> #define DEBUG diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c index 84cdf902573..662d60e44e9 100644 --- a/drivers/char/hw_random/core.c +++ b/drivers/char/hw_random/core.c @@ -116,6 +116,10 @@ static ssize_t rng_dev_read(struct file *filp, char __user *buf, err = -EAGAIN; if (!bytes_read && (filp->f_flags & O_NONBLOCK)) goto out; + if (bytes_read < 0) { + err = bytes_read; + goto out; + } err = -EFAULT; while (bytes_read && size) { @@ -234,11 +238,11 @@ static DEVICE_ATTR(rng_available, S_IRUGO, NULL); -static void unregister_miscdev(bool suspended) +static void unregister_miscdev(void) { device_remove_file(rng_miscdev.this_device, &dev_attr_rng_available); device_remove_file(rng_miscdev.this_device, &dev_attr_rng_current); - __misc_deregister(&rng_miscdev, suspended); + misc_deregister(&rng_miscdev); } static int register_miscdev(void) @@ -313,7 +317,7 @@ out: } EXPORT_SYMBOL_GPL(hwrng_register); -void __hwrng_unregister(struct hwrng *rng, bool suspended) +void hwrng_unregister(struct hwrng *rng) { int err; @@ -332,11 +336,11 @@ void __hwrng_unregister(struct hwrng *rng, bool suspended) } } if (list_empty(&rng_list)) - unregister_miscdev(suspended); + unregister_miscdev(); mutex_unlock(&rng_mutex); } -EXPORT_SYMBOL_GPL(__hwrng_unregister); +EXPORT_SYMBOL_GPL(hwrng_unregister); MODULE_DESCRIPTION("H/W Random Number Generator (RNG) driver"); diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c index 4dbd3425e92..9769bf8279a 100644 --- a/drivers/char/keyboard.c +++ b/drivers/char/keyboard.c @@ -1033,7 +1033,8 @@ DECLARE_TASKLET_DISABLED(keyboard_tasklet, kbd_bh, 0); #if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(CONFIG_ALPHA) ||\ defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_SPARC) ||\ defined(CONFIG_PARISC) || defined(CONFIG_SUPERH) ||\ - (defined(CONFIG_ARM) && defined(CONFIG_KEYBOARD_ATKBD) && !defined(CONFIG_ARCH_RPC)) + (defined(CONFIG_ARM) && defined(CONFIG_KEYBOARD_ATKBD) && !defined(CONFIG_ARCH_RPC)) ||\ + defined(CONFIG_AVR32) #define HW_RAW(dev) (test_bit(EV_MSC, dev->evbit) && test_bit(MSC_RAW, dev->mscbit) &&\ ((dev)->id.bustype == BUS_I8042) && ((dev)->id.vendor == 0x0001) && ((dev)->id.product == 0x0001)) diff --git a/drivers/char/misc.c b/drivers/char/misc.c index a39101feb2e..4d058dadbfc 100644 --- a/drivers/char/misc.c +++ b/drivers/char/misc.c @@ -232,9 +232,8 @@ int misc_register(struct miscdevice * misc) } /** - * __misc_deregister - unregister a miscellaneous device + * misc_deregister - unregister a miscellaneous device * @misc: device to unregister - * @suspended: to be set if the function is used during suspend/resume * * Unregister a miscellaneous device that was previously * successfully registered with misc_register(). Success @@ -242,7 +241,7 @@ int misc_register(struct miscdevice * misc) * indicates an error. */ -int __misc_deregister(struct miscdevice *misc, bool suspended) +int misc_deregister(struct miscdevice *misc) { int i = misc->minor; @@ -251,11 +250,7 @@ int __misc_deregister(struct miscdevice *misc, bool suspended) mutex_lock(&misc_mtx); list_del(&misc->list); - if (suspended) - destroy_suspended_device(misc_class, - MKDEV(MISC_MAJOR, misc->minor)); - else - device_destroy(misc_class, MKDEV(MISC_MAJOR, misc->minor)); + device_destroy(misc_class, MKDEV(MISC_MAJOR, misc->minor)); if (i < DYNAMIC_MINORS && i>0) { misc_minors[i>>3] &= ~(1 << (misc->minor & 7)); } @@ -264,7 +259,7 @@ int __misc_deregister(struct miscdevice *misc, bool suspended) } EXPORT_SYMBOL(misc_register); -EXPORT_SYMBOL(__misc_deregister); +EXPORT_SYMBOL(misc_deregister); static int __init misc_init(void) { diff --git a/drivers/char/rio/rioboot.c b/drivers/char/rio/rioboot.c index eca2b95343e..d956dd31600 100644 --- a/drivers/char/rio/rioboot.c +++ b/drivers/char/rio/rioboot.c @@ -35,7 +35,6 @@ #include <linux/termios.h> #include <linux/serial.h> #include <linux/vmalloc.h> -#include <asm/semaphore.h> #include <linux/generic_serial.h> #include <linux/errno.h> #include <linux/interrupt.h> diff --git a/drivers/char/rio/riocmd.c b/drivers/char/rio/riocmd.c index 7321d002c34..bf36959fc12 100644 --- a/drivers/char/rio/riocmd.c +++ b/drivers/char/rio/riocmd.c @@ -41,7 +41,6 @@ static char *_riocmd_c_sccs_ = "@(#)riocmd.c 1.2"; #include <asm/io.h> #include <asm/system.h> #include <asm/string.h> -#include <asm/semaphore.h> #include <asm/uaccess.h> #include <linux/termios.h> diff --git a/drivers/char/rio/rioctrl.c b/drivers/char/rio/rioctrl.c index 7ce77619707..d8eb2bcbe01 100644 --- a/drivers/char/rio/rioctrl.c +++ b/drivers/char/rio/rioctrl.c @@ -40,7 +40,6 @@ static char *_rioctrl_c_sccs_ = "@(#)rioctrl.c 1.3"; #include <asm/io.h> #include <asm/system.h> #include <asm/string.h> -#include <asm/semaphore.h> #include <asm/uaccess.h> #include <linux/termios.h> diff --git a/drivers/char/rio/rioinit.c b/drivers/char/rio/rioinit.c index 0794844369d..add1718295e 100644 --- a/drivers/char/rio/rioinit.c +++ b/drivers/char/rio/rioinit.c @@ -40,7 +40,6 @@ static char *_rioinit_c_sccs_ = "@(#)rioinit.c 1.3"; #include <asm/io.h> #include <asm/system.h> #include <asm/string.h> -#include <asm/semaphore.h> #include <asm/uaccess.h> #include <linux/termios.h> diff --git a/drivers/char/rio/riointr.c b/drivers/char/rio/riointr.c index ebc76342712..4734e26e1cc 100644 --- a/drivers/char/rio/riointr.c +++ b/drivers/char/rio/riointr.c @@ -42,7 +42,6 @@ static char *_riointr_c_sccs_ = "@(#)riointr.c 1.2"; #include <asm/io.h> #include <asm/system.h> #include <asm/string.h> -#include <asm/semaphore.h> #include <asm/uaccess.h> #include <linux/termios.h> diff --git a/drivers/char/rio/rioparam.c b/drivers/char/rio/rioparam.c index bb498d24adc..da276ed57b3 100644 --- a/drivers/char/rio/rioparam.c +++ b/drivers/char/rio/rioparam.c @@ -41,7 +41,6 @@ static char *_rioparam_c_sccs_ = "@(#)rioparam.c 1.3"; #include <asm/io.h> #include <asm/system.h> #include <asm/string.h> -#include <asm/semaphore.h> #include <asm/uaccess.h> #include <linux/termios.h> diff --git a/drivers/char/rio/rioroute.c b/drivers/char/rio/rioroute.c index a99f3d9d7d6..85091ff74d9 100644 --- a/drivers/char/rio/rioroute.c +++ b/drivers/char/rio/rioroute.c @@ -39,7 +39,6 @@ static char *_rioroute_c_sccs_ = "@(#)rioroute.c 1.3"; #include <asm/io.h> #include <asm/system.h> #include <asm/string.h> -#include <asm/semaphore.h> #include <asm/uaccess.h> #include <linux/termios.h> diff --git a/drivers/char/rio/riotable.c b/drivers/char/rio/riotable.c index 9b52892a501..2b24488e95f 100644 --- a/drivers/char/rio/riotable.c +++ b/drivers/char/rio/riotable.c @@ -42,7 +42,6 @@ static char *_riotable_c_sccs_ = "@(#)riotable.c 1.2"; #include <asm/io.h> #include <asm/system.h> #include <asm/string.h> -#include <asm/semaphore.h> #include <asm/uaccess.h> #include <linux/termios.h> diff --git a/drivers/char/rio/riotty.c b/drivers/char/rio/riotty.c index cfa54361473..1cb8580a161 100644 --- a/drivers/char/rio/riotty.c +++ b/drivers/char/rio/riotty.c @@ -44,7 +44,6 @@ static char *_riotty_c_sccs_ = "@(#)riotty.c 1.3"; #include <asm/io.h> #include <asm/system.h> #include <asm/string.h> -#include <asm/semaphore.h> #include <asm/uaccess.h> #include <linux/termios.h> diff --git a/drivers/char/snsc.h b/drivers/char/snsc.h index 8a98169b60c..4be62eda9fb 100644 --- a/drivers/char/snsc.h +++ b/drivers/char/snsc.h @@ -22,8 +22,8 @@ #include <linux/kobject.h> #include <linux/fs.h> #include <linux/cdev.h> +#include <linux/semaphore.h> #include <asm/sn/types.h> -#include <asm/semaphore.h> #define CHUNKSIZE 127 diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index 613ec816ce6..4d3c7018f0c 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c @@ -1155,6 +1155,48 @@ static struct tty_driver *get_tty_driver(dev_t device, int *index) return NULL; } +#ifdef CONFIG_CONSOLE_POLL + +/** + * tty_find_polling_driver - find device of a polled tty + * @name: name string to match + * @line: pointer to resulting tty line nr + * + * This routine returns a tty driver structure, given a name + * and the condition that the tty driver is capable of polled + * operation. + */ +struct tty_driver *tty_find_polling_driver(char *name, int *line) +{ + struct tty_driver *p, *res = NULL; + int tty_line = 0; + char *str; + + mutex_lock(&tty_mutex); + /* Search through the tty devices to look for a match */ + list_for_each_entry(p, &tty_drivers, tty_drivers) { + str = name + strlen(p->name); + tty_line = simple_strtoul(str, &str, 10); + if (*str == ',') + str++; + if (*str == '\0') + str = 0; + + if (tty_line >= 0 && tty_line <= p->num && p->poll_init && + !p->poll_init(p, tty_line, str)) { + + res = p; + *line = tty_line; + break; + } + } + mutex_unlock(&tty_mutex); + + return res; +} +EXPORT_SYMBOL_GPL(tty_find_polling_driver); +#endif + /** * tty_check_change - check for POSIX terminal changes * @tty: tty to check @@ -3850,6 +3892,11 @@ void tty_set_operations(struct tty_driver *driver, driver->write_proc = op->write_proc; driver->tiocmget = op->tiocmget; driver->tiocmset = op->tiocmset; +#ifdef CONFIG_CONSOLE_POLL + driver->poll_init = op->poll_init; + driver->poll_get_char = op->poll_get_char; + driver->poll_put_char = op->poll_put_char; +#endif } |