summaryrefslogtreecommitdiffstats
path: root/drivers/char
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/Config.in36
-rw-r--r--drivers/char/Makefile4
-rw-r--r--drivers/char/console.c24
-rw-r--r--drivers/char/istallion.c1
-rw-r--r--drivers/char/mem.c3
-rw-r--r--drivers/char/n_tty.c2
-rw-r--r--drivers/char/pcxx.c4
-rw-r--r--drivers/char/radio-cadet.c1
-rw-r--r--drivers/char/serial.c7
-rw-r--r--drivers/char/stallion.c1
-rw-r--r--drivers/char/tty_io.c18
-rw-r--r--drivers/char/vt.c7
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).