From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sat, 16 Apr 2005 15:20:36 -0700 Subject: Linux-2.6.12-rc2 Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip! --- drivers/isdn/pcbit/module.c | 130 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 drivers/isdn/pcbit/module.c (limited to 'drivers/isdn/pcbit/module.c') diff --git a/drivers/isdn/pcbit/module.c b/drivers/isdn/pcbit/module.c new file mode 100644 index 0000000..282073a --- /dev/null +++ b/drivers/isdn/pcbit/module.c @@ -0,0 +1,130 @@ +/* + * PCBIT-D module support + * + * Copyright (C) 1996 Universidade de Lisboa + * + * Written by Pedro Roque Marques (roque@di.fc.ul.pt) + * + * This software may be used and distributed according to the terms of + * the GNU General Public License, incorporated herein by reference. + */ + +#include +#include +#include +#include +#include +#include + +#include +#include "pcbit.h" + +MODULE_DESCRIPTION("ISDN4Linux: Driver for PCBIT-T card"); +MODULE_AUTHOR("Pedro Roque Marques"); +MODULE_LICENSE("GPL"); + +static int mem[MAX_PCBIT_CARDS]; +static int irq[MAX_PCBIT_CARDS]; + +module_param_array(mem, int, NULL, 0); +module_param_array(irq, int, NULL, 0); + +static int num_boards; +struct pcbit_dev * dev_pcbit[MAX_PCBIT_CARDS]; + +extern void pcbit_terminate(int board); +extern int pcbit_init_dev(int board, int mem_base, int irq); + +static int __init pcbit_init(void) +{ + int board; + + num_boards = 0; + + printk(KERN_NOTICE + "PCBIT-D device driver v 0.5-fjpc0 19991204 - " + "Copyright (C) 1996 Universidade de Lisboa\n"); + + if (mem[0] || irq[0]) + { + for (board=0; board < MAX_PCBIT_CARDS && mem[board] && irq[board]; board++) + { + if (!mem[board]) + mem[board] = 0xD0000; + if (!irq[board]) + irq[board] = 5; + + if (pcbit_init_dev(board, mem[board], irq[board]) == 0) + num_boards++; + + else + { + printk(KERN_WARNING + "pcbit_init failed for dev %d", + board + 1); + return -EIO; + } + } + } + + /* Hardcoded default settings detection */ + + if (!num_boards) + { + printk(KERN_INFO + "Trying to detect board using default settings\n"); + if (pcbit_init_dev(0, 0xD0000, 5) == 0) + num_boards++; + else + return -EIO; + } + return 0; +} + +static void __exit pcbit_exit(void) +{ +#ifdef MODULE + int board; + + for (board = 0; board < num_boards; board++) + pcbit_terminate(board); + printk(KERN_NOTICE + "PCBIT-D module unloaded\n"); +#endif +} + +#ifndef MODULE +#define MAX_PARA (MAX_PCBIT_CARDS * 2) +static int __init pcbit_setup(char *line) +{ + int i, j, argc; + char *str; + int ints[MAX_PARA+1]; + + str = get_options(line, MAX_PARA, ints); + argc = ints[0]; + i = 0; + j = 1; + + while (argc && (i