diff options
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/Config.in | 36 | ||||
-rw-r--r-- | drivers/char/Makefile | 4 | ||||
-rw-r--r-- | drivers/char/console.c | 24 | ||||
-rw-r--r-- | drivers/char/istallion.c | 1 | ||||
-rw-r--r-- | drivers/char/mem.c | 3 | ||||
-rw-r--r-- | drivers/char/n_tty.c | 2 | ||||
-rw-r--r-- | drivers/char/pcxx.c | 4 | ||||
-rw-r--r-- | drivers/char/radio-cadet.c | 1 | ||||
-rw-r--r-- | drivers/char/serial.c | 7 | ||||
-rw-r--r-- | drivers/char/stallion.c | 1 | ||||
-rw-r--r-- | drivers/char/tty_io.c | 18 | ||||
-rw-r--r-- | drivers/char/vt.c | 7 |
12 files changed, 55 insertions, 53 deletions
diff --git a/drivers/char/Config.in b/drivers/char/Config.in index 3000b6a73..979f18ae0 100644 --- a/drivers/char/Config.in +++ b/drivers/char/Config.in @@ -10,15 +10,15 @@ if [ "$CONFIG_VT" = "y" ]; then fi tristate 'Standard/generic (dumb) serial support' CONFIG_SERIAL if [ "$CONFIG_SERIAL" = "y" ]; then - bool ' Support for console on serial port' CONFIG_SERIAL_CONSOLE + bool ' Support for console on serial port' CONFIG_SERIAL_CONSOLE fi bool 'Extended dumb serial driver options' CONFIG_SERIAL_EXTENDED if [ "$CONFIG_SERIAL_EXTENDED" = "y" ]; then - bool ' Support more than 4 serial ports' CONFIG_SERIAL_MANY_PORTS - bool ' Support for sharing serial interrupts' CONFIG_SERIAL_SHARE_IRQ - bool ' Autodetect IRQ on standard ports (unsafe)' CONFIG_SERIAL_DETECT_IRQ - bool ' Support special multiport boards' CONFIG_SERIAL_MULTIPORT - bool ' Support the Bell Technologies HUB6 card' CONFIG_HUB6 + bool ' Support more than 4 serial ports' CONFIG_SERIAL_MANY_PORTS + bool ' Support for sharing serial interrupts' CONFIG_SERIAL_SHARE_IRQ + bool ' Autodetect IRQ on standard ports (unsafe)' CONFIG_SERIAL_DETECT_IRQ + bool ' Support special multiport boards' CONFIG_SERIAL_MULTIPORT + bool ' Support the Bell Technologies HUB6 card' CONFIG_HUB6 fi bool 'Non-standard serial port support' CONFIG_SERIAL_NONSTANDARD if [ "$CONFIG_SERIAL_NONSTANDARD" = "y" ]; then @@ -86,31 +86,31 @@ tristate 'QIC-02 tape support' CONFIG_QIC02_TAPE if [ "$CONFIG_QIC02_TAPE" != "n" ]; then bool 'Do you want runtime configuration for QIC-02' CONFIG_QIC02_DYNCONF if [ "$CONFIG_QIC02_DYNCONF" != "y" ]; then - comment ' Edit configuration parameters in ./include/linux/tpqic02.h!' + comment ' Edit configuration parameters in ./include/linux/tpqic02.h!' else - comment ' Setting runtime QIC-02 configuration is done with qic02conf' - comment ' from the tpqic02-support package. It is available at' - comment ' metalab.unc.edu or ftp://titus.cfw.com/pub/Linux/util/' + comment ' Setting runtime QIC-02 configuration is done with qic02conf' + comment ' from the tpqic02-support package. It is available at' + comment ' metalab.unc.edu or ftp://titus.cfw.com/pub/Linux/util/' fi dep_tristate 'Zoran ZR36057/36060 support' CONFIG_VIDEO_ZORAN $CONFIG_VIDEO_DEV - dep_tristate ' Include support for Iomega Buz' CONFIG_VIDEO_BUZ $CONFIG_VIDEO_ZORAN + dep_tristate ' Include support for Iomega Buz' CONFIG_VIDEO_BUZ $CONFIG_VIDEO_ZORAN fi bool 'Watchdog Timer Support' CONFIG_WATCHDOG if [ "$CONFIG_WATCHDOG" != "n" ]; then mainmenu_option next_comment comment 'Watchdog Cards' - bool ' Disable watchdog shutdown on close' CONFIG_WATCHDOG_NOWAYOUT - tristate ' WDT Watchdog timer' CONFIG_WDT + bool ' Disable watchdog shutdown on close' CONFIG_WATCHDOG_NOWAYOUT + tristate ' WDT Watchdog timer' CONFIG_WDT if [ "$CONFIG_WDT" != "n" ]; then - bool ' WDT501 features' CONFIG_WDT_501 + bool ' WDT501 features' CONFIG_WDT_501 if [ "$CONFIG_WDT_501" = "y" ]; then - bool ' Fan Tachometer' CONFIG_WDT_501_FAN + bool ' Fan Tachometer' CONFIG_WDT_501_FAN fi fi - tristate ' Software Watchdog' CONFIG_SOFT_WATCHDOG - tristate ' Berkshire Products PC Watchdog' CONFIG_PCWATCHDOG - tristate ' Acquire SBC Watchdog Timer' CONFIG_ACQUIRE_WDT + tristate ' Software Watchdog' CONFIG_SOFT_WATCHDOG + tristate ' Berkshire Products PC Watchdog' CONFIG_PCWATCHDOG + tristate ' Acquire SBC Watchdog Timer' CONFIG_ACQUIRE_WDT endmenu fi diff --git a/drivers/char/Makefile b/drivers/char/Makefile index b9d58b64c..490ad02e3 100644 --- a/drivers/char/Makefile +++ b/drivers/char/Makefile @@ -133,7 +133,7 @@ else endif ifeq ($(CONFIG_COMPUTONE),y) -L_OBJS += ip2.o ip2main.o +O_OBJS += ip2.o ip2main.o else ifeq ($(CONFIG_COMPUTONE),m) M_OBJS += ip2.o ip2main.o @@ -181,7 +181,7 @@ else endif ifeq ($(CONFIG_SX),y) -L_OBJS += sx.o generic_serial.o +O_OBJS += sx.o generic_serial.o else ifeq ($(CONFIG_SX),m) M_OBJS += sx.o diff --git a/drivers/char/console.c b/drivers/char/console.c index f452237ab..49512fe42 100644 --- a/drivers/char/console.c +++ b/drivers/char/console.c @@ -94,6 +94,7 @@ #ifdef CONFIG_APM #include <linux/apm_bios.h> #endif +#include <linux/bootmem.h> #include <asm/io.h> #include <asm/system.h> @@ -2286,7 +2287,7 @@ static void vc_init(unsigned int currcons, unsigned int rows, unsigned int cols, struct tty_driver console_driver; static int console_refcount; -unsigned long __init con_init(unsigned long kmem_start) +void __init con_init(void) { const char *display_desc = NULL; unsigned int currcons = 0; @@ -2295,7 +2296,7 @@ unsigned long __init con_init(unsigned long kmem_start) display_desc = conswitchp->con_startup(); if (!display_desc) { fg_console = 0; - return kmem_start; + return; } memset(&console_driver, 0, sizeof(struct tty_driver)); @@ -2336,19 +2337,18 @@ unsigned long __init con_init(unsigned long kmem_start) timer_active |= 1<<BLANK_TIMER; } - /* Unfortunately, kmalloc is not running yet */ - /* Due to kmalloc roundup allocating statically is more efficient - - so provide MIN_NR_CONSOLES for people with very little memory */ + /* + * kmalloc is not running yet - we use the bootmem allocator. + */ for (currcons = 0; currcons < MIN_NR_CONSOLES; currcons++) { int j, k ; - vc_cons[currcons].d = (struct vc_data *) kmem_start; - kmem_start += sizeof(struct vc_data); - vt_cons[currcons] = (struct vt_struct *) kmem_start; - kmem_start += sizeof(struct vt_struct); + vc_cons[currcons].d = (struct vc_data *) + alloc_bootmem(sizeof(struct vc_data)); + vt_cons[currcons] = (struct vt_struct *) + alloc_bootmem(sizeof(struct vt_struct)); visual_init(currcons, 1); - screenbuf = (unsigned short *) kmem_start; - kmem_start += screenbuf_size; + screenbuf = (unsigned short *) alloc_bootmem(screenbuf_size); kmalloced = 0; vc_init(currcons, video_num_lines, video_num_columns, currcons || !sw->con_save_screen); @@ -2376,8 +2376,6 @@ unsigned long __init con_init(unsigned long kmem_start) #endif init_bh(CONSOLE_BH, console_bh); - - return kmem_start; } #ifndef VT_SINGLE_DRIVER diff --git a/drivers/char/istallion.c b/drivers/char/istallion.c index 5176f28f4..57f3d7199 100644 --- a/drivers/char/istallion.c +++ b/drivers/char/istallion.c @@ -34,6 +34,7 @@ #include <linux/serial.h> #include <linux/cdk.h> #include <linux/comstats.h> +#include <linux/version.h> #include <linux/istallion.h> #include <linux/ioport.h> #include <linux/delay.h> diff --git a/drivers/char/mem.c b/drivers/char/mem.c index 9be0a51f5..a334205cb 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c @@ -158,6 +158,9 @@ static inline unsigned long pgprot_noncached(unsigned long prot) prot = (prot & _CACHEMASK040) | _PAGE_NOCACHE_S; #elif defined(__mips__) prot = (prot & ~_CACHE_MASK) | _CACHE_UNCACHED; +#elif defined(__arm__) && defined(CONFIG_CPU_32) + /* Turn off caching for all I/O areas */ + prot &= ~(L_PTE_CACHEABLE | L_PTE_BUFFERABLE); #endif return prot; diff --git a/drivers/char/n_tty.c b/drivers/char/n_tty.c index 9027aa67e..0da69c55c 100644 --- a/drivers/char/n_tty.c +++ b/drivers/char/n_tty.c @@ -811,7 +811,7 @@ static int n_tty_open(struct tty_struct *tty) if (!tty->read_buf) { tty->read_buf = (unsigned char *) - get_free_page(in_interrupt() ? GFP_ATOMIC : GFP_KERNEL); + get_zeroed_page(in_interrupt() ? GFP_ATOMIC : GFP_KERNEL); if (!tty->read_buf) return -ENOMEM; } diff --git a/drivers/char/pcxx.c b/drivers/char/pcxx.c index 36db3299d..75f27e830 100644 --- a/drivers/char/pcxx.c +++ b/drivers/char/pcxx.c @@ -1589,8 +1589,8 @@ load_fep: ch->blocked_open = 0; ch->callout_termios = pcxe_callout.init_termios; ch->normal_termios = pcxe_driver.init_termios; - init_waitqueue_head(ch->open_wait); - init_waitqueue_head(ch->close_wait); + init_waitqueue_head(&ch->open_wait); + init_waitqueue_head(&ch->close_wait); ch->asyncflags = 0; } diff --git a/drivers/char/radio-cadet.c b/drivers/char/radio-cadet.c index 239a611b2..98b66f0c2 100644 --- a/drivers/char/radio-cadet.c +++ b/drivers/char/radio-cadet.c @@ -39,6 +39,7 @@ struct timer_list tunertimer,rdstimer,readtimer; static __u8 rdsin=0,rdsout=0,rdsstat=0; static unsigned char rdsbuf[RDS_BUFFER]; static int cadet_lock=0; +static int cadet_probe(void); /* * Signal Strength Threshold Values diff --git a/drivers/char/serial.c b/drivers/char/serial.c index b4bb6865f..38bbf438b 100644 --- a/drivers/char/serial.c +++ b/drivers/char/serial.c @@ -1173,7 +1173,7 @@ static int startup(struct async_struct * info) unsigned short ICP; #endif - page = get_free_page(GFP_KERNEL); + page = get_zeroed_page(GFP_KERNEL); if (!page) return -ENOMEM; @@ -3020,7 +3020,7 @@ static int rs_open(struct tty_struct *tty, struct file * filp) #endif if (!tmp_buf) { - page = get_free_page(GFP_KERNEL); + page = get_zeroed_page(GFP_KERNEL); if (!page) { return -ENOMEM; } @@ -4443,10 +4443,9 @@ static struct console sercons = { /* * Register console. */ -long __init serial_console_init(long kmem_start, long kmem_end) +void __init serial_console_init(void) { register_console(&sercons); - return kmem_start; } #endif diff --git a/drivers/char/stallion.c b/drivers/char/stallion.c index b25be2cd0..aac42d44b 100644 --- a/drivers/char/stallion.c +++ b/drivers/char/stallion.c @@ -28,6 +28,7 @@ #include <linux/config.h> #include <linux/module.h> +#include <linux/version.h> /* for linux/stallion.h */ #include <linux/malloc.h> #include <linux/interrupt.h> #include <linux/tty_flip.h> diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index 17711734f..f78171281 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c @@ -129,7 +129,7 @@ static int tty_fasync(int fd, struct file * filp, int on); extern int sx_init (void); #endif #ifdef CONFIG_8xx -extern long console_8xx_init(long, long); +extern console_8xx_init(void); extern int rs_8xx_init(void); #endif /* CONFIG_8xx */ @@ -798,7 +798,7 @@ static int init_dev(kdev_t device, struct tty_struct **ret_tty) tp = o_tp = NULL; ltp = o_ltp = NULL; - tty = (struct tty_struct*) get_free_page(GFP_KERNEL); + tty = (struct tty_struct*) get_zeroed_page(GFP_KERNEL); if(!tty) goto fail_no_mem; initialize_tty_struct(tty); @@ -824,7 +824,7 @@ static int init_dev(kdev_t device, struct tty_struct **ret_tty) } if (driver->type == TTY_DRIVER_TYPE_PTY) { - o_tty = (struct tty_struct *) get_free_page(GFP_KERNEL); + o_tty = (struct tty_struct *) get_zeroed_page(GFP_KERNEL); if (!o_tty) goto free_mem_out; initialize_tty_struct(o_tty); @@ -2062,7 +2062,7 @@ int tty_unregister_driver(struct tty_driver *driver) * Just do some early initializations, and do the complex setup * later. */ -long __init console_init(long kmem_start, long kmem_end) +void __init console_init(void) { /* Setup the default TTY line discipline. */ memset(ldiscs, 0, sizeof(ldiscs)); @@ -2085,16 +2085,15 @@ long __init console_init(long kmem_start, long kmem_end) * inform about problems etc.. */ #ifdef CONFIG_VT - kmem_start = con_init(kmem_start); + con_init(); #endif #ifdef CONFIG_SERIAL_CONSOLE #ifdef CONFIG_8xx - kmem_start = console_8xx_init(kmem_start, kmem_end); + console_8xx_init(); #else - kmem_start = serial_console_init(kmem_start, kmem_end); + serial_console_init(); #endif /* CONFIG_8xx */ #endif - return kmem_start; } static struct tty_driver dev_tty_driver, dev_syscons_driver; @@ -2109,7 +2108,7 @@ static struct tty_driver dev_console_driver; * Ok, now we can initialize the rest of the tty devices and can count * on memory allocations, interrupts etc.. */ -int __init tty_init(void) +void __init tty_init(void) { if (sizeof(struct tty_struct) > PAGE_SIZE) panic("size of tty structure > PAGE_SIZE!"); @@ -2220,5 +2219,4 @@ int __init tty_init(void) #ifdef CONFIG_VT vcs_init(); #endif - return 0; } diff --git a/drivers/char/vt.c b/drivers/char/vt.c index 020120d4d..3de97ce21 100644 --- a/drivers/char/vt.c +++ b/drivers/char/vt.c @@ -61,7 +61,7 @@ struct vt_struct *vt_cons[MAX_NR_CONSOLES]; */ unsigned char keyboard_type = KB_101; -#if !defined(__alpha__) && !defined(__mips__) +#if !defined(__alpha__) && !defined(__mips__) && !defined(__arm__) asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int on); #endif @@ -89,7 +89,8 @@ unsigned int video_scan_lines; */ #if defined(__i386__) || defined(__alpha__) || defined(__powerpc__) \ - || (defined(__mips__) && !defined(CONFIG_SGI_IP22)) + || (defined(__mips__) && !defined(CONFIG_SGI_IP22)) \ + || (defined(__arm__) && defined(CONFIG_HOST_FOOTBRIDGE)) static void kd_nosound(unsigned long ignored) @@ -470,7 +471,7 @@ int vt_ioctl(struct tty_struct *tty, struct file * file, ucval = keyboard_type; goto setchar; -#if !defined(__alpha__) && !defined(__mips__) +#if !defined(__alpha__) && !defined(__mips__) && !defined(__arm__) /* * These cannot be implemented on any machine that implements * ioperm() in user level (such as Alpha PCs). |