diff options
Diffstat (limited to 'drivers/acorn/char/serial-card.c')
-rw-r--r-- | drivers/acorn/char/serial-card.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/drivers/acorn/char/serial-card.c b/drivers/acorn/char/serial-card.c index a1ea1c61f..d9d73fa9e 100644 --- a/drivers/acorn/char/serial-card.c +++ b/drivers/acorn/char/serial-card.c @@ -1,7 +1,7 @@ /* * linux/arch/arm/drivers/char/serial-card.c * - * Copyright (c) 1996 Russell King. + * Copyright (c) 1996-1999 Russell King. * * A generic handler of serial expansion cards that use 16550s or * the like. @@ -22,9 +22,13 @@ * 22-04-1998 RMK Removed old register_pre_init_serial */ #include <linux/module.h> +#include <linux/types.h> #include <linux/serial.h> #include <linux/errno.h> +#include <linux/init.h> + #include <asm/ecard.h> +#include <asm/string.h> #ifndef NUM_SERIALS #define NUM_SERIALS MY_NUMPORTS * MAX_ECARDS @@ -42,8 +46,6 @@ static struct expansion_card *expcard[MAX_ECARDS]; __serial_addr[__serial_pcount] = (addr); \ __serial_pcount += 1; \ } while (0) -#undef MY_INIT -#define MY_INIT init_module #else #define ADD_ECARD(ec,card) #define ADD_PORT(port,addr) @@ -55,6 +57,7 @@ static inline int serial_register_onedev (unsigned long port, int irq) { struct serial_struct req; + memset(&req, 0, sizeof(req)); req.baud_base = MY_BAUD_BASE; req.irq = irq; req.port = port; @@ -63,7 +66,7 @@ static inline int serial_register_onedev (unsigned long port, int irq) return register_serial(&req); } -int MY_INIT (void) +static int __init INIT (void) { int card = 0; @@ -101,9 +104,9 @@ int MY_INIT (void) return card ? 0 : -ENODEV; } -#ifdef MODULE -void cleanup_module (void) +static void __exit EXIT (void) { +#ifdef MODULE int i; for (i = 0; i < __serial_pcount; i++) { @@ -114,5 +117,10 @@ void cleanup_module (void) for (i = 0; i < MAX_ECARDS; i++) if (expcard[i]) ecard_release (expcard[i]); -} #endif +} + +EXPORT_NO_SYMBOLS; + +module_init(INIT); +module_exit(EXIT); |