From 36dcfabab77696a964349b6a0c33112df85ecbe7 Mon Sep 17 00:00:00 2001 From: Russell King Date: Mon, 11 Mar 2002 16:12:22 +0000 Subject: [PATCH] Update Acorn serial drivers. --- drivers/acorn/char/serial-atomwide.c | 3 - drivers/acorn/char/serial-card.c | 130 +++++++++++++-------------- drivers/acorn/char/serial-dualsp.c | 3 - 3 files changed, 60 insertions(+), 76 deletions(-) diff --git a/drivers/acorn/char/serial-atomwide.c b/drivers/acorn/char/serial-atomwide.c index cb040f462c2d..8f55b80c31de 100644 --- a/drivers/acorn/char/serial-atomwide.c +++ b/drivers/acorn/char/serial-atomwide.c @@ -20,7 +20,4 @@ #define MY_PORT_ADDRESS(port,cardaddr) \ ((cardaddr) + 0x200 - (port) * 0x100) -#define INIT serial_card_atomwide_init -#define EXIT serial_card_atomwide_exit - #include "serial-card.c" diff --git a/drivers/acorn/char/serial-card.c b/drivers/acorn/char/serial-card.c index bca694db4593..3e5c30c316a2 100644 --- a/drivers/acorn/char/serial-card.c +++ b/drivers/acorn/char/serial-card.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -38,95 +39,84 @@ #define NUM_SERIALS MY_NUMPORTS * MAX_ECARDS #endif -#ifdef MODULE -static int __serial_ports[NUM_SERIALS]; -static int __serial_pcount; -static int __serial_addr[NUM_SERIALS]; +static int serial_ports[NUM_SERIALS]; +static int serial_pcount; +static int serial_addr[NUM_SERIALS]; static struct expansion_card *expcard[MAX_ECARDS]; -#define ADD_ECARD(ec,card) expcard[(card)] = (ec) -#define ADD_PORT(port,addr) \ - do { \ - __serial_ports[__serial_pcount] = (port); \ - __serial_addr[__serial_pcount] = (addr); \ - __serial_pcount += 1; \ - } while (0) -#else -#define ADD_ECARD(ec,card) -#define ADD_PORT(port,addr) -#endif static const card_ids serial_cids[] = { MY_CARD_LIST, { 0xffff, 0xffff } }; static inline int serial_register_onedev (unsigned long port, int irq) { - struct serial_struct req; + struct serial_struct req; - memset(&req, 0, sizeof(req)); - req.baud_base = MY_BAUD_BASE; - req.irq = irq; - req.port = port; - req.flags = 0; + memset(&req, 0, sizeof(req)); + req.baud_base = MY_BAUD_BASE; + req.irq = irq; + req.port = port; + req.flags = 0; - return register_serial(&req); + return register_serial(&req); } -static int __init INIT (void) +static int __init serial_card_init(void) { - int card = 0; - - ecard_startfind (); - - do { - struct expansion_card *ec; - unsigned long cardaddr; - int port; - - ec = ecard_find (0, serial_cids); - if (!ec) - break; - - cardaddr = MY_BASE_ADDRESS(ec); - - for (port = 0; port < MY_NUMPORTS; port ++) { - unsigned long address; - int line; - - address = MY_PORT_ADDRESS(port, cardaddr); - - line = serial_register_onedev (address, ec->irq); - if (line < 0) - break; - ADD_PORT(line, address); - } - - if (port) { - ecard_claim (ec); - ADD_ECARD(ec, card); - } else - break; - } while (++card < MAX_ECARDS); - return card ? 0 : -ENODEV; + int card = 0; + + ecard_startfind (); + + do { + struct expansion_card *ec; + unsigned long cardaddr; + int port; + + ec = ecard_find (0, serial_cids); + if (!ec) + break; + + cardaddr = MY_BASE_ADDRESS(ec); + + for (port = 0; port < MY_NUMPORTS; port ++) { + unsigned long address; + int line; + + address = MY_PORT_ADDRESS(port, cardaddr); + + line = serial_register_onedev (address, ec->irq); + if (line < 0) + break; + serial_ports[serial_pcount] = line; + serial_addr[serial_pcount] = address; + serial_pcount += 1; + } + + if (port) { + ecard_claim (ec); + expcard[card] = ec; + } else + break; + } while (++card < MAX_ECARDS); + return card ? 0 : -ENODEV; } -static void __exit EXIT (void) +static void __exit serial_card_exit(void) { -#ifdef MODULE - int i; + int i; - for (i = 0; i < __serial_pcount; i++) { - unregister_serial(__serial_ports[i]); - release_region(__serial_addr[i], 8); - } + for (i = 0; i < serial_pcount; i++) { + unregister_serial(serial_ports[i]); + release_region(serial_addr[i], 8); + } - for (i = 0; i < MAX_ECARDS; i++) - if (expcard[i]) - ecard_release (expcard[i]); -#endif + for (i = 0; i < MAX_ECARDS; i++) + if (expcard[i]) + ecard_release (expcard[i]); } EXPORT_NO_SYMBOLS; +MODULE_AUTHOR("Russell King"); MODULE_LICENSE("GPL"); -module_init(INIT); -module_exit(EXIT); +module_init(serial_card_init); +module_exit(serial_card_exit); diff --git a/drivers/acorn/char/serial-dualsp.c b/drivers/acorn/char/serial-dualsp.c index 722c27736f1f..dcd26c1f8d29 100644 --- a/drivers/acorn/char/serial-dualsp.c +++ b/drivers/acorn/char/serial-dualsp.c @@ -18,7 +18,4 @@ #define MY_PORT_ADDRESS(port,cardaddress) \ ((cardaddress) + (port) * 8) -#define INIT serial_card_dualsp_init -#define EXIT serial_card_dualsp_exit - #include "serial-card.c" -- 2.39.5